ユーザーとロールの設定
users.xml
設定ファイルの users
セクションにはユーザー設定が含まれています。
ClickHouse はユーザー管理のための SQL駆動型ワークフロー もサポートしています。使用をお勧めします。
users
セクションの構造:
user_name/password
パスワードはプレーンテキストまたはSHA256(16進数形式)で指定できます。
-
プレーンテキストでパスワードを指定するには(推奨されません)、
password
要素において指定します。例:
<password>qwerty</password>
。パスワードは空白でもかまいません。
-
SHA256ハッシュを使用してパスワードを指定するには、
password_sha256_hex
要素において指定します。例:
<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>
。シェルからパスワードを生成する方法の例:
PASSWORD=PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
結果の最初の行がパスワードで、2行目が対応するSHA256ハッシュです。
-
MySQLクライアントとの互換性のために、パスワードを二重SHA1ハッシュで指定することもできます。それは
password_double_sha1_hex
要素に指定します。例:
<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>
。シェルからパスワードを生成する方法の例:
PASSWORD=PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
結果の最初の行がパスワードで、2行目が対応する二重SHA1ハッシュです。
username/ssh-key
この設定はSSHキーでの認証を可能にします。
ssh-keygen
によって生成されたSSHキーが次のようであるとします:
ssh_key
要素は次のようであることが期待されます:
他のサポートされているアルゴリズムの場合、ssh-ed25519
を ssh-rsa
または ecdsa-sha2-nistp256
に置き換えてください。
access_management
この設定は、ユーザーに対してSQL駆動型の アクセス制御およびアカウント管理 を使用するかどうかを有効または無効にします。
可能な値:
- 0 — 無効。
- 1 — 有効。
デフォルト値: 0。
grants
この設定は、選択されたユーザーにさまざまな権利を付与することを可能にします。
リストの各要素は、指定されたグランティーなしの GRANT
クエリである必要があります。
例:
この設定は、dictionaries
、access_management
、named_collection_control
、show_named_collections_secrets
、および allow_databases
設定と同時に指定することはできません。
user_name/networks
ユーザーがClickHouseサーバーに接続できるネットワークのリスト。
リストの各要素は次のいずれかの形式を持つことができます:
-
<ip>
— IPアドレスまたはネットマスク。例:
213.180.204.3
、10.0.0.1/8
、10.0.0.1/255.255.255.0
、2a02:6b8::3
、2a02:6b8::3/64
、2a02:6b8::3/ffff:ffff:ffff:ffff::
。 -
<host>
— ホスト名。例:
example01.host.ru
。アクセスを確認するためにDNSクエリが実行され、返されたすべてのIPアドレスがピアアドレスと比較されます。
-
<host_regexp>
— ホスト名用の正規表現。例:
^example\d\d-\d\d-\d\.host\.ru$
。アクセスを確認するためには、ピアアドレスに対して DNS PTR クエリ が実行され、その後指定された正規表現が適用されます。次に、PTRクエリの結果に対して別のDNSクエリが実行され、受信したすべてのアドレスがピアアドレスと比較されます。正規表現の末尾に $ が来ることを強く推奨します。
DNSリクエストのすべての結果は、サーバーが再起動するまでキャッシュされます。
例
任意のネットワークからのユーザーへのアクセスを開放するには、次のように指定します:
ファイアウォールが正しく構成されていない限り、またはサーバーがインターネットに直接接続されていない限り、任意のネットワークからのアクセスを開放するのは安全でありません。
ローカルホストからのみアクセスを開放するには、次のように指定します:
user_name/profile
ユーザーに設定プロファイルを割り当てることができます。設定プロファイルは users.xml
ファイルの別のセクションに設定されています。詳細については、設定プロファイルを参照してください。
user_name/quota
クォータは、特定の期間にわたるリソース使用率を追跡または制限できるようにします。クォータは users.xml
設定ファイルの quotas
セクションで設定されます。
ユーザーに対してクォータセットを割り当てることができます。クォータ設定の詳細な説明については、クォータを参照してください。
user_name/databases
このセクションでは、現在のユーザーが行う SELECT
クエリに対してClickHouseが返す行を制限し、基本的な行レベルのセキュリティを実装できます。
例
以下の設定により、ユーザー user1
は SELECT
クエリの結果として table1
の行を id
フィールドの値が 1000 の場合のみ見ることができます。
filter
は UInt8 型の値を返す任意の式であり、大抵は比較演算子と論理演算子を含みます。フィルターの結果が 0 となる database_name.table1
の行は、このユーザーには返されません。フィルタリングは PREWHERE
操作と互換性がなく、WHERE→PREWHERE
最適化を無効にします。
ロール
user.xml
設定ファイルの roles
セクションを使用して、任意のプリセットのロールを作成できます。
roles
セクションの構造:
これらのロールは users
セクションからユーザーに付与することもできます: