Como habilitar a autenticação 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 Apache Cassandra de código aberto gerenciados. Este artigo descreve como habilitar a autenticação LDAP para seus clusters e data centers.
Importante
A autenticação LDAP está em visualização 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, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Pré-requisitos
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Uma instância gerenciada do Azure para cluster Apache Cassandra. Reveja como criar uma Instância Gerida do Azure para o cluster Apache Cassandra a partir do portal do Azure.
Implantar um servidor LDAP no Azure
Nesta seção, veremos como criar um servidor LDAP simples em uma máquina virtual no Azure. Se já tiver um servidor LDAP em execução, pode ignorar esta secção e rever como ativar a autenticação LDAP.
Implante uma máquina virtual no Azure usando o Ubuntu Server 18.04 LTS. Pode seguir as instruções aqui.
Dê ao seu servidor um nome DNS:
Instale o Docker na máquina virtual. Recomendamos este tutorial.
No diretório inicial, copie e cole o seguinte texto e pressione enter. Este comando criará um arquivo contendo 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
Navegue de volta 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 em 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 seu servidor LDAP):sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
Verifique se o nome dns está correto:
openssl x509 -in certs/ldap.crt -text
Copie o
ldap.crt
arquivo 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 seu 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
Ativar autenticação LDAP
Importante
Se você pulou a seção acima porque já tem um servidor LDAP existente, certifique-se de que ele tenha certificados SSL de servidor ativados. 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, ou a autenticação falhará.
Atualmente, a autenticação LDAP é 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>
com os 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>
com os valores apropriados e<dnsname>
com o nome dns que você criou para seu servidor LDAP.Nota
O comando abaixo é baseado na configuração LDAP na seção anterior. Se você ignorou essa seção porque já tem um servidor LDAP existente, forneça os valores correspondentes para esse servidor. Certifique-se de ter carregado um arquivo de certificado como
ldap.crt
no seu clouddrive na 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
Uma vez que este comando tenha sido concluído, você deve ser capaz de usar CQLSH (veja abaixo) ou qualquer driver de cliente de código aberto Apache Cassandra para se conectar ao seu data center de 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>