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 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 にユーザーを追加します。
<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 サーバーが既に存在するため、前のセクションをスキップした場合は、サーバー SSL 証明書が有効になっていることを確認してください。 証明書に指定する 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
などの証明書ファイルを clouddrive にアップロードしたことを確認します。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>