このトピックでは、Alibaba Cloud Elasticsearch インスタンスの Active Directory (AD) ID 認証を設定する方法について説明します。これにより、AD ドメイン内の特定のロールを持つユーザーが Alibaba Cloud Elasticsearch インスタンスにアクセスできるようになります。
前提条件
以下の操作が完了していること。
Alibaba Cloud Elasticsearch インスタンスが作成済みであること。このトピックでは、Elasticsearch V7.10 インスタンスを例として使用します。
詳細については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
Alibaba Cloud Elasticsearch インスタンスと同じ Virtual Private Cloud (VPC) 内で、AD ドメイン環境とデータが利用可能であること。このトピックでは、Windows Server 2012 を例として使用します。
このトピックでは、ユーザー名は ccy1、ルートドメインは ccy.com です
制限事項
2020 年 10 月以降、Alibaba Cloud はさまざまなリージョンで Elasticsearch のネットワークアーキテクチャを調整しました。この調整は、インスタンスに次のように影響します。
古いネットワークアーキテクチャ上のインスタンスの場合、SNAT 機能または自己管理の Nginx プロキシを使用してインターネットに接続する必要があります。
新しいネットワークアーキテクチャ上のインスタンスの場合、AD 機能はネットワークの制限を受けます。PrivateLink を使用して、VPC 間にプライベートネットワークピアリングを確立する必要があります。詳細については、「インスタンスのプライベート接続の設定」をご参照ください。インターネットにアクセスするには、リクエストを転送するように Nginx プロキシを設定する必要があります。
古いネットワークアーキテクチャでは、Alibaba Cloud Elasticsearch はシングルゾーンインスタンスでのみ AD 認証をサポートします。
ネットワークアーキテクチャの詳細については、「お知らせ:ネットワークアーキテクチャの調整」をご参照ください。
操作手順
ステップ 1:(任意) エンドポイントドメイン名の取得
2020 年 10 月以降に作成された Elasticsearch クラスターは、新しいネットワークアーキテクチャにデプロイされます。これらの Elasticsearch クラスターは、Elasticsearch サービスアカウントの VPC 内に存在します。ご利用の Elasticsearch クラスターが新しいネットワークアーキテクチャにデプロイされている場合、PrivateLink サービスを使用して VPC とご利用の VPC との間にプライベート接続を確立する必要があります。その後、将来の使用のために、関連するエンドポイントのドメイン名を取得します。エンドポイントのドメイン名を取得するには、次の手順を実行します。
- PrivateLink サービスをサポートし、作成された Elasticsearch クラスターと同じ VPC 内に存在する Classic Load Balancer (CLB) インスタンスを作成します。
詳細については、「ステップ 1:SLB インスタンスの作成と設定」をご参照ください。
SLB インスタンスを設定します。
インスタンスを設定する際、Lightweight Directory Access Protocol (LDAP) サービスをホストするサーバーをバックエンドサーバーとして指定し、リスニングポートを 389 に設定します。
詳細については、「Elasticsearch クラスターのプライベート接続の設定」をご参照ください。
- エンドポイントサービスを作成します。
詳細については、「ステップ 2:エンドポイントサービスの作成」をご参照ください。
- Elasticsearch クラスターへのプライベート接続を設定します。
詳細については、「ステップ 3:Alibaba Cloud ES クラスターのプライベート接続の設定」をご参照ください。
- エンドポイントサービスへのアクセスに使用するエンドポイントのドメイン名を取得します。
詳細については、「Elasticsearch クラスターのプライベート接続の設定」をご参照ください。
説明 取得したドメイン名は、後続の設定で使用するため、記録しておいてください。
ステップ 2:AD 認証の設定
Elasticsearch のセキュリティ機能は、AD ドメインと通信してユーザーの ID 認証を実行できます。これらの機能は LDAP を使用して AD ドメインと通信するため、active_directory レルムは ldap レルムに似ています。LDAP ディレクトリと同様に、AD ドメインはユーザーとグループを階層的に保存します。ユーザーを認証するために、AD ドメインは LDAP バインド要求を送信します。認証が成功すると、AD ドメインは Active Directory でユーザーのエントリを検索します。ユーザーが見つかると、AD ドメインはユーザーのエントリの tokenGroups 属性からユーザーのグループメンバーシップを取得します。詳細については、「Active Directory レルムの設定」をご参照ください。
Alibaba Cloud Elasticsearch V6.x、V7.x、および V8.x インスタンスの場合:
Elasticsearch インスタンスの YML ファイルに次の設定を追加して、AD 認証をセットアップします。詳細については、「YML パラメーターの設定」をご参照ください。
その他のバージョンの Alibaba Cloud Elasticsearch インスタンスの場合:
Elasticsearch インスタンスの YML ファイルに次の設定を追加します。コンソールでの操作が失敗した場合、またはインスタンスが再起動して YML 設定の変更が適用されない場合は、チケットを送信し、テクニカルサポートに設定を提供してください。
xpack.security.authc.realms.active_directory.my_ad.order: 2
xpack.security.authc.realms.active_directory.my_ad.domain_name: ccy.com
xpack.security.authc.realms.active_directory.my_ad.url: ldap://ep-bp1i321219*********-cn-hangzhou-h.epsrv-bp15571d5ps*********.cn-hangzhou.privatelink.aliyuncs.com:389
xpack.security.authc.realms.active_directory.my_ad.bind_dn: cc**@ccy.com
xpack.security.authc.realms.active_directory.my_ad.bind_password: your_passwordパラメーター | 説明 |
order | ID 認証中に、設定された AD ドメインがチェックされる順序。 説明 V8.x インスタンスの場合、order の値は一意である必要があります。2 に設定してください。 |
domain_name | ルートドメインの名前。 |
url | AD ドメインへのプライベート接続用の URL とポート。詳細については、「Active Directory レルムの設定」をご参照ください。 重要 新しいネットワークアーキテクチャの場合、これを |
bind_dn | すべての Active Directory 検索リクエストを実行するユーザー。 |
bind_password | AD ドメインで ID を認証するために使用されるパスワード。 |
ステップ 3:ドメインアカウントとロールのマッピング
ご利用の Elasticsearch インスタンスの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
説明操作は Kibana のバージョンによって若干異なる場合があります。実際のユーザーインターフェースが優先されます。
Kibana のホームページで、[Dev Tools] をクリックします。
[Console] タブで、次のコマンドを実行して、AD ドメインの ccy1 ユーザーを管理者ロールにマッピングします。
PUT /_security/role_mapping/basic_users { "roles": [ "superuser" ], "enabled": true, "rules": { "any": [ { "field": { "groups": "cn=ali,dc=ccy,dc=com" } }, { "field": { "dn": "cn=ccy1,cn=ali,dc=ccy,dc=com" } } ] } }
ステップ 4:結果の検証
権限を付与された ccy1 ユーザーとして、ご利用の Elasticsearch インスタンスの Kibana コンソールにログインします。
Kibana のホームページで、[Dev Tools] をクリックします。
[Console] タブで、次のコマンドを実行して、ccy1 ユーザーが必要な権限を持っていることを確認します。
GET _cat/indicesccy1 ユーザーが必要な権限を持っている場合、結果が返されます。これは、AD ドメイン内の ccy1 ユーザーの権限が設定されていることを示します。
