このページは ClickHouse Cloud には適用されません。ここで説明している機能は ClickHouse Cloud サービスではご利用いただけません。
詳しくは、ClickHouse の Cloud Compatibility ガイドを参照してください。
users.xmlまたはローカルのアクセス制御パスで定義された既存ユーザーに対して、LDAPを外部認証機構として使用する。- LDAPを外部ユーザーディレクトリとして使用し、ローカルで定義されていないユーザーでも、LDAPサーバー上に存在すれば認証を許可する。
LDAP サーバーの定義
config.xml に ldap_servers セクションを追加する必要があります。
例
ldap_servers セクション内では、一意の名前を使って複数の LDAP サーバーを定義できます。
パラメータ
user_dn_detection のサブパラメータ
バインド済みユーザーの実際のユーザー DN を検出するための LDAP 検索パラメータのセクションです。これは主に、サーバーが Active Directory の場合に、後続のロールマッピングで使用する検索フィルタのために使われます。結果として得られたユーザー DN は、使用が許可されている箇所で {user_dn} 部分文字列を置き換える際に使用されます。デフォルトではユーザー DN はバインド DN と同じ値に設定されますが、検索が実行されると、実際に検出されたユーザー DN の値に更新されます。
LDAP 外部認証
users.xml またはローカルアクセス制御パスで定義されたユーザー) のパスワードを検証する手段として使用できます。これを行うには、ユーザー定義で password や同様のセクションの代わりに、あらかじめ定義した LDAP サーバー名を指定します。
ログインが試行されるたびに、ClickHouse は、指定された資格情報を使用して、LDAP サーバーの定義の bind_dn パラメーターで定義された DN への「bind」を試みます。成功した場合、そのユーザーは認証されたものと見なされます。これは一般に「simple bind」方式と呼ばれます。
例
my_user は my_ldap_server を参照しています。この LDAP サーバーは、前述のとおりメインの config.xml ファイルで設定しておく必要があります。
SQL による Access Control and Account Management が有効な場合、LDAP サーバーで認証されるユーザーは、CREATE USER ステートメントを使用して作成することもできます。
Query
LDAP 外部ユーザーディレクトリ
config.xml ファイルの users_directories セクション内の ldap セクションで、事前に定義した LDAP サーバー名 (LDAP サーバーの定義 を参照) を指定します。
ログインが試行されるたびに、ClickHouse はまずローカルでユーザー定義を探し、通常どおり認証を試みます。ユーザーが定義されていない場合、ClickHouse はその定義が外部 LDAP ディレクトリに存在するとみなし、指定された資格情報を使って LDAP サーバー上の指定された DN への “bind” を試みます。成功すると、そのユーザーは存在し、認証されたものと見なされます。ユーザーには、roles セクションで指定された一覧からロールが割り当てられます。さらに、role_mapping セクションも設定されている場合は、LDAP の “search” を実行し、その結果を変換してロール名として扱い、ユーザーに割り当てることもできます。これらはすべて、SQL ベースの Access Control and Account Management が有効になっており、ロールが CREATE ROLE ステートメントを使用して作成されていることを前提としています。
例
config.xml に記述します。
user_directories セクション内の ldap セクションで参照される my_ldap_server は、config.xml で設定された、事前に定義済みの LDAP サーバーである必要がある点に注意してください (LDAP サーバーの定義 を参照) 。
パラメーター
role_mapping サブパラメーター
LDAP 検索 のパラメーターとマッピングルールを含むセクションです。ユーザーが認証されると、LDAP にバインドされたまま、search_filter とログインしたユーザー名を使用して LDAP 検索 が実行されます。その検索で見つかった各エントリについて、指定された属性の値が抽出されます。指定されたプレフィックスを持つ各属性値では、そのプレフィックスが取り除かれ、残りの値が ClickHouse で定義されたローカルロール名になります。このロールは、事前に CREATE ROLE ステートメントで作成されている必要があります。同じ ldap セクション内に複数の role_mapping セクションを定義できます。これらはすべて適用されます。