你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 LTS 在 Azure 中部署虚拟机。 有关详细说明,请参阅 部署 Ubuntu 服务器。
为服务器提供一个 DNS 名称:
在虚拟机上安装 Docker。 有关教程,请参阅 如何在 Ubuntu 18.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 ..
运行以下命令。 使用您之前为 LDAP 服务器创建的 DNS 名称替换
<dnsname>
。 此命令将启用了 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 服务器而跳过该部分,请改为提供该服务器的对应值。 确保已在 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
此命令完成后,应能够使用 CQLSH 或任何 Apache Cassandra 开源客户端驱动程序连接到托管实例数据中心,并在上一步骤中添加用户:
export SSL_VALIDATE=false cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>