Azure Managed Instance for Apache Cassandra で LDAP認証を有効にする方法

Azure Managed Instance for Apache Cassandra では、マネージド オープンソースの Apache Cassandra データセンターに対して、自動化されたデプロイおよびスケーリング操作を提供します。 この記事では、クラスターとデータ センターに対して LDAP 認証を有効にする方法について説明します。

重要

LDAP 認証はパブリック プレビュー段階です。 この機能はサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

前提条件

Azure に LDAP サーバーをデプロイする

このセクションでは、Azure で仮想マシンに簡単な LDAP サーバーを作成する方法について順を追って説明します。 既に実行されている LDAP サーバーがある場合は、このセクションをスキップして、LDAP 認証を有効にする方法に関するページを確認できます。

  1. Ubuntu Server 18.04 LTS を使用して Azure に仮想マシンをデプロイします。 こちらの手順に従います。

  2. サーバーに DNS 名を付けます。

    Screenshot of virtual machine d n s name in Azure portal.

  3. 仮想マシンに Docker をインストールします。 このチュートリアルをお勧めします。

  4. ホーム ディレクトリで、次のテキストをコピーして貼り付け、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 
    
  5. ホーム ディレクトリに戻ります。

    cd ..
    
  6. <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
    
  7. 次に、コンテナーから証明書フォルダーをコピーします (<dnsname> を LDAP サーバー用に作成した DNS 名に置き換えます)。

    sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
    
  8. 次のように、DNS 名が正しいことを確認します。

    openssl x509 -in certs/ldap.crt -text
    

    Screenshot of output from command to verify certificate.

  9. 後で使用するために、Azure CLI の clouddriveldap.crt ファイルをコピーします。

  10. 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 がホストされているサーバーのドメインと一致していることも必要です。そうでない場合は、認証が失敗します。

  1. 現在、LDAP 認証はパブリック プレビュー機能です。 以下のコマンドを実行して、必要な Azure CLI 拡張機能を追加します。

    az extension add --upgrade --name cosmosdb-preview
    
  2. 次のように <resource group><cluster name> を適切な値に置き換えて、クラスターで認証方法を "Ldap" に設定します。

    az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
    
  3. ここで、データ センター レベルでプロパティを設定します。 <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
    
  4. このコマンドが完了すると、CQLSH (下記参照) または Apache Cassandra のオープン ソース クライアント ドライバーを使用し、上記の手順で追加したユーザーを使用してマネージド インスタンス データ センターに接続できるようになります。

    export SSL_VALIDATE=false
    cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>
    

次のステップ