如何在 Azure Managed Instance for Apache Cassandra 中啟用 LDAP 驗證
Azure Managed Instance for Apache Cassandra 可為受控開放原始碼 Apache Cassandra 資料中心提供自動化部署與規模調整作業。 本文討論如何啟用叢集和資料中心的 LDAP 驗證。
重要
LDAP 驗證目前為公開預覽狀態。 此功能是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
必要條件
- 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Azure Managed Instance for Apache Cassandra 叢集。 請參閱如何從 Azure 入口網站建立 Azure Managed Instance for Apache Cassandra 叢集。
在 Azure 中部署 LDAP 伺服器
在本節中,我們將逐步解說如何在 Azure 中的虛擬機器上建立簡易 LDAP 伺服器。 如果您已經有執行中的 LDAP 伺服器,則可以略過本節,並檢閱如何啟用 LDAP 驗證。
在 Azure 中使用 Ubuntu Server 18.04 LTS 部署虛擬機器。 您可以遵循這裡的指示。
為您的伺服器提供 DNS 名稱:
在虛擬機器上安裝 Docker。 我們建議參考此教學課程。
在主目錄中,複製並貼上下列文字並按下 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
瀏覽回到主目錄
cd ..
執行下列命令,將
<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
現在從容器複製憑證資料夾 (將
<dnsname>
取代為您為 LDAP 伺服器建立的 dns 名稱):sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
請確認 dns 名稱正確:
openssl x509 -in certs/ldap.crt -text
將檔案
ldap.crt
複製到 Azure CLI 中的 clouddrive 以供稍後使用。將使用者新增至 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 的伺服器網域,否則驗證將會失敗。
目前,LDAP 驗證是公開預覽功能。 執行下列命令以新增必要的 Azure CLI 擴充功能:
az extension add --upgrade --name cosmosdb-preview
將驗證方法設定為叢集上的「Ldap」,並將
<resource group>
和<cluster name>
取代為適當的值:az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
現在設定資料中心層級的屬性。 將
<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
此命令完成後,您應該能夠使用 CQLSH (如下所示) 或任何 Apache Cassandra 開放原始碼用戶端驅動程式,使用上述步驟中新增的使用者連線到受控執行個體資料中心:
export SSL_VALIDATE=false cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>