LDAP グループを CelerData クラスターにマッピングする
このトピックでは、LDAP サービスのユーザーおよびグループメンバーシップ情報を CelerData クラスターにマッピングする方法について説明します。LDAP 情報へのアクセスを CelerData クラスターに許可することで、クラスターは LDAP 情報に基づいてユーザーと権限を自動的に管理できるようになり、CelerData クラスターでの LDAP による認証と認可の体験を大幅に簡素化するだけでなく、2 つのサービス間のユーザー情報の 一貫性 を大幅に向上させます。
注意
以下の操作を実行できるのは、SYSTEM レベルで SECURITY 権限を持つユーザーのみです。
概要
CelerData は新しい機能であるセキュリティ統合を提供し、ユーザーのログイン時にユーザーと権限の管理を自動化します。CelerData クラスター内でセキュリティ統合を作成することで、LDAP サービスへのアクセスを CelerData に許可できます。CelerData は作成したマッピングポリシーに従って LDAP サービスのグループメンバーシップ情報をキャッシュし、必要に応じてキャッシュを更新します。
ユーザーは、LDAP サービスがサポートする認証方法で CelerData クラスターにログインできます。ユーザーが CelerData クラスターにログインするたびに、クラスターは次のように動作します。
-
クラスターはまず、ユーザーが LDAP サービスに存在するかどうか、および認証が有効かどうかを確認します。
- ユーザーが存在し、認証が有効な場合、クラスターはユーザーがログインした LDAP ユーザー名でダミーユーザーアカウントを作成します。
- ユーザーが LDAP サービスに存在しないか、認証が無効な場合、クラスターはログイン失敗を返します。
-
次に、キャッシュされたグループメンバーシップ情報を照会して、ユーザーがどのグループに属しているかを確認します。
- ユーザーが特定のグループに属している場合、クラスターは対応する役割(特定の権限を持つ)をダミーユーザーアカウントに付与し、ログイン成功を返します。
- ユーザーがどのグループにも属していない場合、クラスターはログイン失敗を返します。
セキュリティ統合を作成する
LDAP サービスを CelerData クラスターにマッピングするには、セキュリティ統合を介してそれらの接続を構成する必要があります。
構文:
CREATE SECURITY INTEGRATION <security_integration_name>
PROPERTIES (
"type" = "ldap",
"ldap_server_host" = "",
"ldap_server_port" = "",
"ldap_bind_base_dn" = "",
"ldap_user_search_attr" = "",
"ldap_user_group_match_attr" = "",
"ldap_bind_root_dn" = "",
"ldap_bind_root_pwd" = "",
"ldap_cache_refresh_interval" = "",
"ldap_ssl_conn_allow_insecure" = "{true | false}",
"ldap_ssl_conn_trust_store_path" = "",
"ldap_ssl_conn_trust_store_pwd" = "",
"comment" = ""
)
パラメータ:
パラメータ | 必須 | 説明 |
---|---|---|
security_integration_name | はい | セキュリティ統合の名前。 注意 セキュリティ統合名はグローバルに一意です。このパラメータを native として指定することはできません。 |
type | はい | セキュリティ統合のタイプ。ldap として指定します。 |
ldap_server_host | いいえ | LDAP サービスの IP アドレス。デフォルト: 127.0.0.1 。 |
ldap_server_port | いいえ | LDAP サービスのポート。デフォルト: 389 。 |
ldap_bind_base_dn | はい | クラスターが検索する LDAP ユーザーの基本識別名 (DN)。 |
ldap_user_search_attr | はい | LDAP サービスにログインするために使用されるユーザーの属性。例: uid 。 |
ldap_user_group_match_attr | いいえ | ユーザーがグループのメンバーとして持つ属性がユーザーの DN と異なる場合、このパラメータを指定する必要があります。たとえば、ユーザーの DN が uid=bob,ou=people,o=celerdata,dc=com であるが、グループメンバーとしての属性が memberUid=bob,ou=people,o=celerdata,dc=com である場合、ldap_user_search_attr を uid として指定し、ldap_user_group_match_attr を memberUid として指定する必要があります。このパラメータが指定されていない場合、ldap_user_search_attr で指定した値が使用されます。また、正規表現を指定してグループ内のメンバーを一致させることもできます。正規表現は regex: で始める必要があります。たとえば、グ ループに CN=Poornima K Hebbar (phebbar),OU=User Policy 0,OU=All Users,DC=SEA,DC=CORP,DC=EXPECN,DC=com というメンバーがいる場合、このプロパティを regex:CN=.*\\(([^)]+)\\) として指定すると、メンバー phebbar に一致します。 |
ldap_group_member_attr | いいえ | グループメンバーを表す属性。属性を明示的に定義するか、正規表現を使用できます。デフォルト: member 。 |
ldap_bind_root_dn | はい | LDAP サービスの管理者 DN。 |
ldap_bind_root_pwd | はい | LDAP サービスの管理者パスワード。 |
ldap_cache_refresh_interval | いいえ | クラスターがキャッシュされた LDAP グループ情報を自動的に更新する間隔。単位: 秒。デフォルト: 900 。 |
ldap_ssl_conn_allow_insecure | いいえ | LDAP サーバーへの非 SSL 接続を使用するかどうか。デフォルト: true 。この値を false に設定すると、SSL 経由の LDAP が有効になります。LDAP SSL 接続を有効にする場合、SSL 証明書を各 FE ノードの Java TrustStore パスにアップロードする(推奨)か、プロパティ ldap_ssl_conn_trust_store_path と ldap_ssl_conn_trust_store_pwd を使用して証明書を保存するローカルパスを指定する必要があります。 |
ldap_ssl_conn_trust_store_path | いいえ | LDAP SSL 証明書を保存するローカルパス。SSL 証明書のアップロード手順については、Upload SSL certificate を参照してください。 |
ldap_ssl_conn_trust_store_pwd | いいえ | ローカルに保存されている LDAP SSL 証明書にアクセスす るために使用されるパスワード。 |
comment | いいえ | セキュリティ統合の説明。 |
注意
CelerData クラスターは、セキュリティ統合を作成する際に接続チェックを提供しません。
認証チェーンを構成する
セキュリティ統合が作成されると、新しい認証方法として CelerData クラスターに追加されます。セキュリティ統合を有効にするには、FE 動的構成項目 authentication_chain
を介して認証方法の順序を設定する必要があります。この場合、セキュリティ統合を優先認証方法として設定し、次に CelerData クラスターのネイティブ認証を設定する必要があります。
ADMIN SET FRONTEND CONFIG (
"authentication_chain" = "<security_integration_name>, native"
);
注意
authentication_chain
が指定されていない場合、ネイティブ認証のみが有効になります。authentication_chain
が設定されると、CelerData クラスターは最も優先される認証方法でユーザーログインを最初に検証します。優先認証方法でログインが失敗した場合、クラスターは指定された順序に従って次の認証方法を試みます。
authentication_chain
の値を次のステートメントを使用して確認できます。
ADMIN SHOW FRONTEND CONFIG LIKE 'authentication_chain';
マッピングポリシーを作成する
認証方法の順序が設定された後、次のステートメントを使用して LDAP グループを CelerData クラスター内の役割にマッピングするポリシーを作成する必要があります。CelerData クラスター内の 1 つの役割に複数の LDAP グループをマッピングできます。リスト内のグループ間の関係は |
です。
構文:
CREATE ROLE MAPPING <map_name>
PROPERTIES (
"integration_name"="",
"role"="",
"ldap_group_list"=""
)
パラメータ:
パラメータ | 必須 | 説明 |
---|---|---|
map_name | はい | マッピングポリシーの名前。 |
integration_name | はい | マッピングポリシーが有効なセキュリティ統合。 |
role | はい | LDAP グループがマッピングされる役割の名前。 |
ldap_group_list | はい | 役割がマッピングされる LDAP グループの DN リスト。例: "cn=group1,ou=groups,o=celerdata,dc=com;cn=group2,ou=groups,o=celerdata,dc=com" 。リスト内のグループ間の関係は | です。 |
注意
- マッピングポリシーが作成され、セキュリティ統合が有効になると、CelerData クラスターは
ldap_group_list
に指定されたグループのすべてのメンバーを取得してキャッシュします。マッピングポリシーが作成されているがセキュリティ統合が有効でない場合、情報はキャッシュされません。- デフォルトでは、CelerData クラスターは
member
、uniqueMember
、およびmemberUid
を使用してグループ内のメンバーを検索 します。- デフォルトでは、各グループは再帰的に展開されます。CelerData クラスターは
groupOfNames
、groupOfUniqueNames
、およびposixGroup
のobjectClass
を持つすべてのメンバーを展開し、対応する属性を持つメンバーを検索します。
キャッシュを更新する
マッピングポリシーが作成され、セキュリティ統合が有効になると、CelerData クラスターは対応するグループメンバーシップ情報を取得してキャッシュします。一般に、クラスターは次のメカニズムでキャッシュを更新します。
-
自動更新:
CelerData クラスターは、セキュリティ統合プロパティ
ldap_cache_refresh_interval
で指定された間隔でキャッシュを自動的に更新します。 -
トリガー更新:
ユーザーがログインする際に既存のキャッシュで対応するグループメンバーシップ情報を見つけられなかった場合、クラスターはキャッシュを更新して、更新されたキャッシュでユーザーを検索します。
-
手動更新:
必要に応じて手動で更新をトリガーできます。
REFRESH ALL ROLE MAPPINGS;
セキュリティ統合とマッピングポリシーを管理する
セキュリティ統合を管理する
既存のセキュリティ統合の構成を次のステートメントを使用して変更できます。
ALTER SECURITY INTEGRATION <security_integration_name> SET
PROPERTIES (
"key"="value"[, ...]
)
注意
セキュリティ統合の
type
を変更することはできません。
既存のセキュリティ統合を次のステートメントを使用して削除できます。
DROP SECURITY INTEGRATION <security_integration_name>
次のステートメントを使用して、CelerData クラスター内のすべてのセキュリティ統合を表示できます。
SHOW SECURITY INTEGRATIONS;
例:
SHOW SECURITY INTEGRATIONS;
+--------+--------+---------+
| Name | Type | Comment |
+--------+--------+---------+
| LDAP1 | LDAP | NULL |
+--------+--------+---------+
パラメータ | 説明 |
---|---|
Name | セキュリティ統合の名前。 |
Type | セキュリティ統合のタイプ。 |
Comment | セキュリティ統合の説明。セキュリティ統合に説明が指定されていない場合、NULL が返されます。 |
次のステートメントを使用して、セキュリティ統合の詳細を確認できます。
SHOW CREATE SECURITY INTEGRATION <integration_name>
例:
SHOW CREATE SECURITY INTEGRATION LDAP1;
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Security Integration | Create Security Integration |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| LDAP1 | CREATE SECURITY INTEGRATION LDAP1
PROPERTIES (
"type" = "ldap",
"ldap_server_host"="",
"ldap_server_port"="",
"ldap_bind_base_dn"="",
"ldap_user_search_attr"="",
"ldap_bind_root_dn"="",
"ldap_bind_root_pwd"="*****",
"ldap_cache_refresh_interval"="",
"comment"=""
)|
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
注意
ldap_bind_root_pwd
は、SHOW CREATE SECURITY INTEGRATION が実行されたときにマスクされます。
マッピングポリシーを管理する
既存のマッピングポリシーの構成を次のステートメントを使用して変更できます。
ALTER ROLE MAPPING <map_name>
PROPERTIES (
"key"="value"[, ...]
)
既存のマッピングポリシーを次のステートメントを使用して削除できます。
DROP ROLE MAPPING <map_name>
注意
既存のマッピングポリシーの
ldap_group_list
が変更された場合 、CelerData クラスターは自動的にキャッシュを更新します。マッピングポリシーが削除された場合、クラスターは対応するキャッシュを削除します。
次のステートメントを使用して、すべてのマッピングポリシーを表示できます。
SHOW ROLE MAPPINGS;
例:
SHOW ROLE MAPPINGS;
+------------------+-----------------+-----------+----------------------------------------+-------------------------+
| Name | IntegrationName | Role | LdapGroupList | LastRefreshCompleteTime |
+------------------+-----------------+-----------+----------------------------------------+-------------------------+
| LDAP1_readonly | ldap1 | readonly | "cn=user,ou=group,o=celerdata,dc=com" | 2023-03-08 10:00:00 |
+------------------+-----------------+-----------+----------------------------------------+-------------------------+
LastRefreshCompleteTime
は、最後のキャッシュ更新が完了した時刻を示します。キャッシュが最新であるかどうかを確認できます。