共用方式為


在適用於 Apache Cassandra 的 Azure 受控實例中啟用 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 入口網站中虛擬機 DNS 名稱的螢幕快照。

  3. 在虛擬機器上安裝 Docker。 如需教學課程,請參閱 在Ubuntu18.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 名稱。 此命令會將已啟用傳輸層安全性的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伺服器,請確定它已啟用伺服器安全套接字層憑證。 指定給憑證的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 中的雲端磁碟機

    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>