次の方法で共有


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 に仮想マシンをデプロイします。 詳細な手順については、「 Ubuntu サーバーのデプロイ」を参照してください。

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

    Azure portal の仮想マシンの DNS 名のスクリーンショット。

  3. 仮想マシンに Docker をインストールします。 チュートリアルについては、「 Ubuntu 18.04 で 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
    

    証明書を確認するコマンドからの出力のスクリーンショット。

  9. 後で使用するために、Azure CLI の ldap.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. クラスターで認証方法を "Ldap" に設定します。 <resource group><cluster name> を、適切な値に置き換えます。

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

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

次のステップ