メインコンテンツまでスキップ

LDAP グループを CelerData クラスターにマッピングする

このトピックでは、LDAP サービスのユーザーおよびグループメンバーシップ情報を CelerData クラスターにマッピングする方法について説明します。LDAP 情報へのアクセスを CelerData クラスターに許可することで、クラスターは LDAP 情報に基づいてユーザーと権限を自動的に管理できるようになり、CelerData クラスターでの LDAP による認証と認可の体験を大幅に簡素化するだけでなく、2 つのサービス間のユーザー情報の 一貫性 を大幅に向上させます。

注意

以下の操作を実行できるのは、SYSTEM レベルで SECURITY 権限を持つユーザーのみです。

概要

CelerData は新しい機能であるセキュリティ統合を提供し、ユーザーのログイン時にユーザーと権限の管理を自動化します。CelerData クラスター内でセキュリティ統合を作成することで、LDAP サービスへのアクセスを CelerData に許可できます。CelerData は作成したマッピングポリシーに従って LDAP サービスのグループメンバーシップ情報をキャッシュし、必要に応じてキャッシュを更新します。

ユーザーは、LDAP サービスがサポートする認証方法で CelerData クラスターにログインできます。ユーザーが CelerData クラスターにログインするたびに、クラスターは次のように動作します。

  1. クラスターはまず、ユーザーが LDAP サービスに存在するかどうか、および認証が有効かどうかを確認します。

    • ユーザーが存在し、認証が有効な場合、クラスターはユーザーがログインした LDAP ユーザー名でダミーユーザーアカウントを作成します。
    • ユーザーが LDAP サービスに存在しないか、認証が無効な場合、クラスターはログイン失敗を返します。
  2. 次に、キャッシュされたグループメンバーシップ情報を照会して、ユーザーがどのグループに属しているかを確認します。

    • ユーザーが特定のグループに属している場合、クラスターは対応する役割(特定の権限を持つ)をダミーユーザーアカウントに付与し、ログイン成功を返します。
    • ユーザーがどのグループにも属していない場合、クラスターはログイン失敗を返します。

セキュリティ統合を作成する

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_attruid として指定し、ldap_user_group_match_attrmemberUid として指定する必要があります。このパラメータが指定されていない場合、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_pathldap_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 クラスターは memberuniqueMember、および memberUid を使用してグループ内のメンバーを検索します。
  • デフォルトでは、各グループは再帰的に展開されます。CelerData クラスターは groupOfNamesgroupOfUniqueNames、および posixGroupobjectClass を持つすべてのメンバーを展開し、対応する属性を持つメンバーを検索します。

キャッシュを更新する

マッピングポリシーが作成され、セキュリティ統合が有効になると、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 は、最後のキャッシュ更新が完了した時刻を示します。キャッシュが最新であるかどうかを確認できます。