Saiba como habilitar a autenticação de LDAP na Instância Gerenciada do Azure para Apache Cassandra
A Instância Gerenciada do Azure para Apache Cassandra fornece operações automatizadas de implantação e dimensionamento para data centers gerenciados de código aberto do Apache Cassandra. Este artigo aborda como habilitar a autenticação LDAP para seus clusters e data centers.
Importante
A autenticação LDAP está em versão prévia pública. Esse recurso é fornecido sem um Contrato de Nível de Serviço e não é recomendado para cargas de trabalho de produção. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.
Pré-requisitos
- Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Um cluster da Instância Gerenciada do Azure para Apache Cassandra. Examine como criar um cluster da Instância Gerenciada do Azure para Apache Cassandra no portal do Azure.
Implantar um servidor LDAP no Azure
Nesta seção, vamos acompanhar a criação de um servidor LDAP simples em uma máquina virtual no Azure. Se você já tiver um servidor LDAP em execução, poderá ignorar esta seção e examinar como habilitar a autenticação LDAP.
Implante uma máquina virtual no Azure usando o Ubuntu Server 18.04 LTS. Siga as instruções aqui.
Dê um nome DNS ao seu servidor:
Instale o Docker na máquina virtual. Recomendamos este tutorial.
No diretório inicial, copie e cole o texto a seguir e pressione Enter. Esse comando criará um arquivo que contém uma conta de usuário LDAP de teste.
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
Volte para o diretório inicial.
cd ..
Execute o comando abaixo, substituindo
<dnsname>
pelo nome DNS que você criou para o servidor LDAP anteriormente. Esse comando implantará um servidor LDAP com TLS habilitado para um contêiner do Docker e também copiará o arquivo de usuário criado anteriormente para o contêiner.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
Agora copie a pasta de certificados do contêiner (substitua
<dnsname>
pelo nome DNS que você criou para o servidor LDAP):sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
Confira se o nome DNS está correto:
openssl x509 -in certs/ldap.crt -text
Copie o arquivo
ldap.crt
para o clouddrive na CLI do Azure para uso posterior.Adicione o usuário ao ldap (substitua
<dnsname>
pelo nome DNS que você criou para o servidor LDAP):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
Habilitar autenticação LDAP
Importante
Se você pulou a seção acima porque já tem um servidor LDAP, verifique se ele tem certificados SSL de servidor habilitados. O subject alternative name (dns name)
especificado para o certificado também deve corresponder ao domínio do servidor no qual o LDAP está hospedado, senão a autenticação falhará.
A autenticação LDAP atualmente é um recurso de visualização pública. Execute o comando abaixo para adicionar a extensão necessária da CLI do Azure:
az extension add --upgrade --name cosmosdb-preview
Defina o método de autenticação como "Ldap" no cluster, substituindo
<resource group>
e<cluster name>
pelos valores apropriados:az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
Agora defina as propriedades no nível do data center. Substitua
<resource group>
e<cluster name>
pelos valores apropriados e<dnsname>
pelo nome DNSs que você criou para o servidor LDAP.Observação
O comando abaixo é com base na configuração LDAP na seção anterior. Se você ignorou essa seção porque já tem um servidor LDAP, forneça os valores correspondentes para esse servidor. Verifique se você carregou um arquivo de certificados como
ldap.crt
no clouddrive da CLI do Azure.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
Depois que esse comando for concluído, você poderá usar o CQLSH (veja abaixo) ou qualquer driver de cliente de software livre do Apache Cassandra para se conectar ao data center da instância gerenciada com o usuário adicionado na etapa acima:
export SSL_VALIDATE=false cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>