共用方式為


如何在 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. 在 Azure 中使用 Ubuntu Server 18.04 LTS 部署虛擬機器。 您可以遵循這裡的指示。

  2. 為您的伺服器提供 DNS 名稱:

    Azure 入口網站 中虛擬機 d n s 名稱的螢幕快照。

  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
    

    命令輸出以驗證憑證的螢幕快照。

  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 伺服器而略過上述小節,請確定該伺服器已啟用伺服器 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 伺服器而略過該小節,請改為提供該伺服器的對應值。 請確定您已將憑證檔案 (例如 ldap.crt) 上傳至 Azure CLI 中的 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>
    

下一步