LDAP認証の構成

外部LDAPサーバーを使用してLDAP認証を有効にするようにDataStax Enterpriseを構成する手順。

LDAP認証を有効にするには、外部LDAPサーバーを使用するようにDataStax Enterpriseを構成します。LDAP認証を使用する場合は、LDAPロールとともにDSE Role Managerを使用することをお勧めします。

LDAPグループを使用する場合は、以下のルールが適用されます。
  • 各LDAPユーザーは、LDAPグループにマッピングされている必要がある。
  • 各LDAPグループは、CREATE ROLEコマンドで作成したCassandraの内部ロールにマッピングされている必要がある。
  • 各ロールには適切なログイン権限が付与されている必要がある。
  • LDAPグループにマッピングされているユーザーは、DataStax Enterpriseクラスターで認証できる。
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール install_location/resources/cassandra/conf/cassandra.yaml
dse.yamlファイルの場所は、インストールのタイプによって異なります。
Installer-Services /etc/dse/dse.yaml
パッケージ・インストール /etc/dse/dse.yaml
Installer-No Services install_location/resources/dse/conf/dse.yaml
tarボール・インストール install_location/resources/dse/conf/dse.yaml

始める前に

適切に構成されたLDAP v3サーバーを実行している必要があります。サポートされているLDAPサーバーは以下のとおりです。

  • Microsoft Active Directory:
    • Windows 2008
    • Windows 2012
  • OpenLDAP 2.4.x
  • Oracle Directory Server Enterprise Edition 11.1.1.7.0

手順

  1. default_schemeまたはother_schemesldapが指定されるように、「認証の構成」の説明に従って認証の構成を完了します。
  2. dse.yamlファイルで、LDAPサーバーの構成を設定します。
    オプション説明
    server_host LDAPサーバーのホスト名。
    server_port LDAPサーバーがリッスンするポート。暗号化されていない接続のデフォルト・ポートは389です。

    LDAP用のデフォルトのSSLポートは636です。

    search_dn LDAPサーバーで別のユーザーを検索するのに使用されるユーザー名。存在しない場合は、検索に匿名バインドが使用されます。
    search_password search_dnユーザーのパスワード。
    use_ssl LDAPサーバーへのSSL接続を有効にするには、trueに設定します。trueに設定すると、server_portをLDAPサーバーのSSLポートに変更する必要がある場合があります。デフォルト値はfalseです。
    use_tls LDAPサーバーへのTLS接続を有効にするには、trueに設定します。trueに設定する場合は、server_portをLDAPサーバーのTLSポートに変更してください。デフォルト値はfalseです。
    truststore_path SSL証明書のトラストストアのパス。
    truststore_password トラストストアにアクセスするためのパスワード。
    truststore_type トラストストアのタイプ。デフォルト値はjksです。
    user_search_base ドメインの検索ベース。ユーザーの検索に使用します。LDAPドメインのouおよびdc要素を設定します。通常、これはou=users,dc=domain,dc=top_level_domainに設定します。たとえば、ou=users,dc=example,dc=com

    Active Directoryでは、通常、CN=search,CN=Users,DC=ActDir_domname,DC=internalなどの別の検索ベースが使用されます。たとえば、CN=search,CN=Users,DC=example-sales,DC=internal

    user_search_filter ユーザー名を検索するための検索フィルター。デフォルト設定は(uid={0})です。

    Active Directoryを使用する場合は、フィルターを(sAMAccountName={0})に設定します。

    user_memberof_attribute グループ・メンバーシップ情報を含んだユーザー・エントリーの属性。
    group_search_type ユーザーのグループ・メンバーシップを決める方法を定義します。以下のいずれかの値を選択します。
    • directory_search - group_search_baseのサブツリー検索を実行して結果をフィルターし、group_search_filterに一致するグループを見つけます。(デフォルト)
    • memberof_search - ユーザーのmemberof属性からグループを取得します。ディレクトリー・サーバーはmemberofのサポートが必要です。
    memberof_searchはより効率的で、ユーザーが属しているグループを含むユーザー検索のmemberof属性を返すように構成されているディレクトリー・サーバーに依存します。

    memberof_searchは、ディレクトリー・サーバーへ1回往復するだけで、ユーザー情報とグループ情報を取得できます。memberof_searchは、user_memberof_attributeを使用してユーザー・エントリー上のグループを検索します。次に、group_name_attributeで定義されている属性を使用してグループ名を解決します。

    group_search_base グループ・メンバーシップの検索ベースとなるグループの一意の識別名(DN)。
    group_search_filter 検索でフィルターされるLDAPグループ。デフォルト:(uniquemember={0})group_search_filterは、検索の開始前にユーザーDNと組み合わせられます。以下のオプションでは、
    ldap_options:
    group_search_type:directory_search
    group_search_base:ou=groups,dc=example,dc=com
    group_search_filter:(uniquemember={0})
    ユーザーcn=test,ou=users,dc=example,dc=comを検索し、このユーザーが一意のメンバーとして含まれているグループを検索します。
    group_name_attribute LDAPグループ名を保持するグループ・エントリーの属性。デフォルト:cn
    credentials_validity_in_ms 認証情報キャッシュの時間(単位はミリ秒)。キャッシュを無効にするには、0に設定します。キャッシュは、デフォルトでは無効になっています。

    キャッシュが有効になっている場合、DataStax Enterpriseは、指定された期間中、ユーザー認証情報をローカルに格納します。リモートLDAPサーバーにバインドするには、時間とリソースが必要となります。このため、認証情報キャッシュを有効にすると通常、初期認証フェーズ後にパフォーマンスが向上します。LDAPサーバーのユーザー認証情報に行った変更は、キャッシュ期間中はDataStax Enterpriseに反映されません。

    search_validity_in_seconds 検索キャッシュの時間(単位はミリ秒)。キャッシュを無効にするには、0に設定します。キャッシュは、デフォルトでは無効になっています。

    検索キャッシュを有効にすると、LDAPサーバーに送信される要求数が減少し、パフォーマンスが向上します。LDAPサーバーのユーザー・データに行った変更は、キャッシュ期間中には反映されません。

    connection_pool LDAP要求を行うための接続プールの構成設定。
    max_active LDAPサーバーへのアクティブな接続の最大数。デフォルト値は8です。
    max_idle 要求待ちプールでのアイドル接続の最大数。デフォルト値は8です。
    ldap_options:
    server_host:localhost
    server_port: 389
    search_dn:cn=Admin
    search_password:secret
    use_ssl:false
    use_tls:false
    truststore_path:
    truststore_password:
    truststore_type:jks
    user_search_base:ou=users,dc=example,dc=com
    user_search_filter:(uid={0})
    user_memberof_attribute:memberof
    group_search_type:directory_search#
    group_search_base:#
    group_search_filter:(uniquemember={0})
    group_name_attribute:cn
    credentials_validity_in_ms: 0
    connection_pool:
    max_active: 8
    max_idle: 8
  3. cqlshを起動し、スーパーユーザー名とパスワードを使用してログインします。
    DataStax Enterpriseは、cassandraスーパーユーザーを自動的に作成しますが、このユーザーをリモートLDAPサービスで使用できる可能性は低いです。以下の手順に従って、Cassandraでスーパーユーザーとその他のユーザーを作成します。
    ./cqlsh -u cassandra -p cassandra
  4. DataStax Enterpriseは、cassandraスーパーユーザーを自動的に作成しますが、このユーザーをリモートLDAPサービスで使用できる可能性は低いです。Cassandraでスーパーユーザーとその他のロールを作成します。
  5. 新しいスーパーユーザーとしてログインします。
  6. まだデフォルトのcassandraユーザーを変更していない場合は、デフォルトのcassandraユーザーを変更します。
    注: このステップは、DataStax Enterpriseのセキュリティを向上させるために強く推奨します。
  7. クラスター内のノードごとに上記の手順を繰り返します。