次の方法で共有


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 Long-Term サポート (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. 後で使用するために、 ldap.crt ファイルを Azure CLI の clouddrive にコピーします。

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

    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>