Azure Managed Instance for Apache Cassandra で LDAP認証を有効にする方法
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 に仮想マシンをデプロイします。 こちらの手順に従います。
サーバーに DNS 名を付けます。
仮想マシンに 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
後で使用するために、Azure CLI の clouddrive に
ldap.crt
ファイルをコピーします。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
次のように
<resource group>
と<cluster name>
を適切な値に置き換えて、クラスターで認証方法を "Ldap" に設定します。az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
ここで、データ センター レベルでプロパティを設定します。
<resource group>
と<cluster name>
を適切な値に、<dnsname>
を LDAP サーバー用に作成した DNS 名に置き換えます。Note
以下のコマンドは、前のセクションの 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>