ON CLUSTER 句を使用すると、クラスター内にユーザーを作成できます。詳細は Distributed DDL を参照してください。
識別
IDENTIFIED WITH no_passwordIDENTIFIED WITH plaintext_password BY 'qwerty'IDENTIFIED WITH sha256_password BY 'qwerty'orIDENTIFIED BY 'password'IDENTIFIED WITH sha256_hash BY 'hash'orIDENTIFIED WITH sha256_hash BY 'hash' SALT 'salt'IDENTIFIED WITH double_sha1_password BY 'qwerty'IDENTIFIED WITH double_sha1_hash BY 'hash'IDENTIFIED WITH bcrypt_password BY 'qwerty'IDENTIFIED WITH bcrypt_hash BY 'hash'IDENTIFIED WITH ldap SERVER 'server_name'IDENTIFIED WITH kerberosorIDENTIFIED WITH kerberos REALM 'realm'IDENTIFIED WITH ssl_certificate CN 'mysite.com:user'IDENTIFIED WITH ssh_key BY KEY 'public_key' TYPE 'ssh-rsa', KEY 'another_public_key' TYPE 'ssh-ed25519'IDENTIFIED WITH http SERVER 'http_server'orIDENTIFIED WITH http SERVER 'http_server' SCHEME 'basic'IDENTIFIED BY 'qwerty'
ClickHouse Cloud では、デフォルトで、パスワードは以下の複雑性要件を満たす必要があります。
- 12文字以上であること
- 数字を1文字以上含むこと
- 大文字を1文字以上含むこと
- 小文字を1文字以上含むこと
- 特殊文字を1文字以上含むこと
例
-
次のユーザー名は
name1で、パスワードは不要です。これは当然ながら、ほとんどセキュリティになりません。 -
平文パスワードを指定するには、次のようにします。
-
最も一般的なのは、SHA-256 でハッシュ化されたパスワードを使用する方法です。
IDENTIFIED WITH sha256_passwordを指定すると、ClickHouse がパスワードをハッシュ化します。例:これでname3ユーザーはmy_passwordでログインできますが、パスワードは上記のハッシュ値として保存されます。次の SQL ファイルが/var/lib/clickhouse/accessに作成され、サーバーの起動時に実行されます。
-
double_sha1_passwordは通常は不要ですが、それを必要とするクライアント (MySQL インターフェイス など) を扱う場合に便利です。ClickHouse は次のクエリを生成して実行します。 -
bcrypt_passwordは、パスワード保存において最も安全なオプションです。bcrypt アルゴリズムを使用しており、パスワードハッシュが漏えいした場合でも、総当たり攻撃に強いという特長があります。この方式では、パスワードの長さは 72 文字までに制限されます。 ハッシュの計算とパスワード検証に必要な計算量と時間を定義する bcrypt の work factor パラメーターは、サーバー設定で変更できます。work factor は 4 から 31 の範囲でなければならず、デフォルト値は 12 です。
-
パスワードの種類は省略することもできます。
この場合、ClickHouse はサーバー設定で指定されたデフォルトのパスワード種類を使用します。使用できるパスワード種類は次のとおりです:
plaintext_password,sha256_password,double_sha1_password. -
複数の認証方式を指定できます。
- 古いバージョンの ClickHouse では、複数の認証方式の構文がサポートされていない場合があります。したがって、ClickHouse serverにそのようなユーザーが存在する状態で、これを未対応のバージョンにダウングレードすると、そのようなユーザーは使用できなくなり、一部のユーザー関連の操作も正常に機能しなくなります。問題なくダウングレードするには、事前にすべてのユーザーが単一の認証方式のみを持つように設定しておく必要があります。あるいは、適切な手順を踏まずにサーバーをダウングレードしてしまった場合は、問題のあるユーザーを削除する必要があります。
- セキュリティ上の理由から、
no_passwordは他の認証方式と共存できません。したがって、no_passwordを指定できるのは、それがクエリ内で唯一の認証方式である場合に限られます。
ユーザーホスト
HOST クエリセクションで次の方法により指定できます。
HOST IP 'ip_address_or_subnetwork'— ユーザーは、指定した IP アドレスまたは サブネットワーク からのみ ClickHouse server に接続できます。例:HOST IP '192.168.0.0/16'、HOST IP '2001:DB8::/32'。本番環境で使用する場合は、hostやhost_regexpを使用すると余分な遅延が発生する可能性があるため、HOST IP要素 (IP アドレスとそのマスク) のみを指定してください。HOST ANY— ユーザーは任意の場所から接続できます。これはデフォルトのオプションです。HOST LOCAL— ユーザーはローカルからのみ接続できます。HOST NAME 'fqdn'— ユーザーホストは FQDN として指定できます。たとえば、HOST NAME 'mysite.com'です。HOST REGEXP 'regexp'— ユーザーホストを指定する際に、pcre 正規表現を使用できます。たとえば、HOST REGEXP '.*\.mysite\.com'です。HOST LIKE 'template'— LIKE 演算子を使用してユーザーホストを絞り込めます。たとえば、HOST LIKE '%'はHOST ANYと同等で、HOST LIKE '%.mysite.com'はmysite.comドメイン内のすべてのホストを絞り込みます。
@ 構文を続けて使用する方法があります。例:
CREATE USER mira@'127.0.0.1'—HOST IP構文と同等です。CREATE USER mira@'localhost'—HOST LOCAL構文と同等です。CREATE USER mira@'192.168.%.%'—HOST LIKE構文と同等です。
VALID UNTIL 句
YYYY-MM-DD [hh:mm:ss] [timezone] フォーマットを使用することを推奨します。ここで [timezone] は、+09:00 のような数値オフセット、または UTC、GMT、Z、MSK、MSD のいずれかである必要があります。Asia/Tokyo のような名前付き IANA タイムゾーンは認識されません (以下の注を参照) 。デフォルトでは、このパラメータは 'infinity' です。
VALID UNTIL 句は、クエリ内で認証方式がまったく指定されていない場合を除き、認証方式と一緒にのみ指定できます。この場合、VALID UNTIL 句は既存のすべての認証方式に適用されます。
例:
CREATE USER name1 VALID UNTIL '2025-01-01'CREATE USER name1 VALID UNTIL '2025-01-01 12:00:00 UTC'CREATE USER name1 VALID UNTIL '2025-01-01 12:00:00 +09:00'CREATE USER name1 VALID UNTIL 'infinity'CREATE USER name1 IDENTIFIED WITH plaintext_password BY 'no_expiration', bcrypt_password BY 'expiration_set' VALID UNTIL '2025-01-01'
datetime 文字列は
parseDateTimeBestEffort によって解析されます。この関数が認識するタイムゾーントークンは UTC、GMT、Z、MSK、MSD と、+09:00 や -05:00 のような数値オフセットのみです。Asia/Tokyo や Europe/London のような名前付き IANA タイムゾーンはサポートされません。また、固定オフセットは、夏時間を採用している地域では IANA ゾーンと等価ではないため、エンコードする対象の日付に対する正しいオフセットを自分で計算する必要があります。GRANTEES 句
GRANTEES 句のオプションは次のとおりです。
user— このユーザーが権限を付与できるユーザーを指定します。role— このユーザーが権限を付与できるロールを指定します。ANY— このユーザーは誰にでも権限を付与できます。デフォルト設定です。NONE— このユーザーは誰にも権限を付与できません。
EXCEPT 式を使用すると、任意のユーザーまたはロールを除外できます。たとえば、CREATE USER user1 GRANTEES ANY EXCEPT user2 と指定します。これは、user1 が GRANT OPTION 付きでいくつかの権限を付与されている場合、それらの権限を user2 を除く誰にでも付与できることを意味します。
例
qwerty を設定したユーザーアカウント mira を作成します:
mira は、ClickHouse server が稼働しているホスト上でクライアントアプリを起動する必要があります。
ユーザーアカウント john を作成し、ロールを割り当てます:
john を作成し、ロールを割り当て、その一部をデフォルトロールにします。
john を作成し、jack アカウントのユーザーに自身の権限を付与できるようにします:
john のユーザーアカウントを作成するには、クエリパラメータを使用します: