Azure Managed Instance for Apache Cassandra では、マネージド オープンソースの Apache Cassandra データセンターに対して、デプロイとスケーリングの自動化された操作を提供します。 この記事では、クラスターとデータセンターに対してライトウェイト ディレクトリ アクセス プロトコル (LDAP) 認証を有効にする方法について説明します。
重要
LDAP 認証はパブリック プレビュー段階です。
この機能は、サービス レベル アグリーメントがなくても提供されます。 運用環境のワークロード用にはお勧めしません。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
前提条件
- Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Azure Managed Instance for Apache Cassandra クラスター。 詳細については、 Azure portal から Azure Managed Instance for Apache Cassandra クラスターを作成する方法に関するページを参照してください。
Azure に LDAP サーバーをデプロイする
このセクションでは、Azure の仮想マシンに単純な LDAP サーバーを作成します。 LDAP サーバーが既に実行されている場合は、「 LDAP 認証を有効にする」に進むことができます。
Ubuntu Server 18.04 Long-Term サポート (LTS) を使用して、Azure に仮想マシンをデプロイします。 詳細な手順については、「 Ubuntu サーバーのデプロイ」を参照してください。
サーバーにドメイン ネーム システム (DNS) 名を付けます。
仮想マシンに Docker をインストールします。 チュートリアルについては、「 Ubuntu 18.04 に Docker をインストールして使用する」を参照してください。
ホーム ディレクトリで、次のテキストをコピーして貼り付け、Enter キーを 押します。 このコマンドは、テスト LDAP ユーザー アカウントを含むファイルを作成します。
mkdir ldap-user && cd ldap-user && cat >> user.ldif <<EOL dn: uid=admin,dc=example,dc=org uid: admin cn: admin sn: 3 objectClass: top objectClass: posixAccount objectClass: inetOrgPerson loginShell: /bin/bash homeDirectory: /home/admin uidNumber: 14583102 gidNumber: 14564100 userPassword: admin mail: admin@example.com gecos: admin EOL
ホーム ディレクトリに戻ります。
cd ..
次のコマンドを実行します。
<dnsname>
を、前に LDAP サーバー用に作成した DNS 名に置き換えます。 このコマンドは、トランスポート層セキュリティ (TLS) が有効になっている LDAP サーバーを Docker コンテナーにデプロイし、先ほど作成したユーザー ファイルをコンテナーにコピーします。sudo docker run --hostname <dnsname>.uksouth.cloudapp.azure.com --name <dnsname> -v $(pwd)/ldap-user:/container/service/slapd/assets/test --detach osixia/openldap:1.5.0
コンテナーから証明書フォルダーをコピーします。
<dnsname>
を、LDAP サーバー用に作成した DNS 名に置き換えます。sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
DNS 名が正しいことを確認します。
openssl x509 -in certs/ldap.crt -text
後で使用するために、
ldap.crt
ファイルを Azure CLI の clouddrive にコピーします。LDAP にユーザーを追加します。
<dnsname>
を、LDAP サーバー用に作成した DNS 名に置き換えます。sudo docker container exec <dnsname> ldapadd -H ldap://<dnsname>.uksouth.cloudapp.azure.com -D "cn=admin,dc=example,dc=org" -w admin -f /container/service/slapd/assets/test/user.ldif
LDAP 認証を有効にする
重要
LDAP サーバーが既に存在するため、前のセクションをスキップした場合は、サーバーの Secure Sockets Layer 証明書が有効になっていることを確認してください。 証明書に指定する subject alternative name (dns name)
も、LDAP がホストされているサーバーのドメインと一致している必要があります。または、認証が失敗します。
現在、LDAP 認証はパブリック プレビュー機能です。 次のコマンドを実行して、必要な Azure CLI 拡張機能を追加します。
az extension add --upgrade --name cosmosdb-preview
クラスターで認証方法を
Ldap
するように設定します。<resource group>
と<cluster name>
を、適切な値に置き換えます。az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
次に、データセンター レベルでプロパティを設定します。
<resource group>
と<cluster name>
を、適切な値に置き換えます。<dnsname>
を、LDAP サーバー用に作成した DNS 名に置き換えます。次のコマンドは、前のセクションの LDAP セットアップに基づいています。 既存の LDAP サーバーが既にあるためにそのセクションをスキップした場合は、代わりにそのサーバーに対応する値を指定します。 Azure CLI で、
ldap.crt
などの証明書ファイルを クラウド ドライブ にアップロードしたことを確認します。ldap_search_base_distinguished_name='dc=example,dc=org' ldap_server_certificates='/usr/csuser/clouddrive/ldap.crt' ldap_server_hostname='<dnsname>.uksouth.cloudapp.azure.com' ldap_service_user_distinguished_name='cn=admin,dc=example,dc=org' ldap_service_user_password='admin' az managed-cassandra datacenter update -g `<resource group>` -c `<cluster name>` -d datacenter-1 \ --ldap-search-base-dn $ldap_search_base_distinguished_name \ --ldap-server-certs $ldap_server_certificates \ --ldap-server-hostname $ldap_server_hostname \ --ldap-service-user-dn $ldap_service_user_distinguished_name \ --ldap-svc-user-pwd $ldap_service_user_password
このコマンドが完了すると、 CQLSH または任意の Apache Cassandra オープンソース クライアント ドライバーを使用して、前の手順で追加したユーザーを使用してマネージド インスタンス データセンターに接続できるようになります。
export SSL_VALIDATE=false cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>