Azure Managed Instance for Apache Cassandra 可為受控開放原始碼 Apache Cassandra 資料中心提供自動化部署與規模調整作業。 本文討論如何為叢集和數據中心啟用羽量型目錄存取通訊協定 (LDAP) 驗證。
先決條件
- 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Azure Managed Instance for Apache Cassandra 叢集。 如需詳細資訊,請參閱 從 Azure 入口網站建立適用於 Apache Cassandra 叢集的 Azure 受控實例。
在 Azure 中部署 LDAP 伺服器
在本節中,您會在 Azure 中的虛擬機上建立簡單的 LDAP 伺服器。 如果您已經執行 LDAP 伺服器,您可以直接跳到 啟用 LDAP 驗證。
使用Ubuntu Server 18.04 Long-Term 支援 (LTS) 在 Azure 中部署虛擬機。 如需詳細指示,請參閱 部署Ubuntu伺服器。
給予伺服器一個域名系統 (DNS) 名稱。
在虛擬機器上安裝 Docker。 如需教學課程,請參閱 在Ubuntu18.04上安裝和使用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 名稱。 此命令會將已啟用傳輸層安全性的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伺服器,請確定它已啟用伺服器安全套接字層憑證。 指定給憑證的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 中的雲端磁碟機。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>