Procedimiento para habilitar la autenticación LDAP en Azure Managed Instance for Apache Cassandra

Azure Managed Instance for Apache Cassandra proporciona operaciones de implementación y escalado automatizadas para los centros de datos administrados de código abierto de Apache Cassandra. En este artículo se describe cómo habilitar la autenticación LDAP en clústeres y centros de datos.

Importante

La autenticación LDAP está en versión preliminar pública. Esta característica se ofrece sin contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Requisitos previos

Implementación de un servidor LDAP en Azure

En esta sección, se describirá cómo crear un servidor LDAP simple en una máquina virtual en Azure. Si ya tiene un servidor LDAP en ejecución, puede omitir esta sección y revisar cómo habilitar la autenticación LDAP.

  1. Implemente una máquina virtual en Azure mediante Ubuntu Server 18.04 LTS. Puede seguir estas instrucciones.

  2. Asigne un nombre DNS al servidor:

    Screenshot of virtual machine d n s name in Azure portal.

  3. Instale Docker en la máquina virtual. Se recomienda este tutorial.

  4. En el directorio principal, copie y pegue el texto siguiente y presione Entrar. Este comando creará un archivo que contiene una cuenta de usuario LDAP de prueba.

    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 
    
  5. Vuelva a navegar hasta el directorio principal.

    cd ..
    
  6. Ejecute el comando siguiente y reemplace <dnsname> por el nombre DNS que ha creado antes para el servidor LDAP. Este comando implementará un servidor LDAP con TLS habilitado en un contenedor de Docker y también copiará el archivo de usuario que ha creado antes en el contenedor.

    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
    
  7. Ahora copie la carpeta de certificados del contenedor (reemplace <dnsname> por el nombre DNS que ha creado para el servidor LDAP):

    sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
    
  8. Compruebe que el nombre DNS sea correcto:

    openssl x509 -in certs/ldap.crt -text
    

    Screenshot of output from command to verify certificate.

  9. Copie el archivo ldap.crt en clouddrive en la CLI de Azure para usarlo más adelante.

  10. Agregue el usuario a LDAP (reemplace <dnsname> por el nombre DNS que ha creado para el 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
    

Habilitación de la autenticación LDAP

Importante

Si ha omitido la sección anterior porque ya tiene un servidor LDAP existente, asegúrese de que tiene habilitados los certificados SSL de servidor. El valor subject alternative name (dns name) especificado para el certificado también debe coincidir con el dominio del servidor en el que se hospeda LDAP o se producirá un error en la autenticación.

  1. Actualmente, la autenticación LDAP es una característica en versión preliminar pública. Ejecute el comando siguiente para agregar la extensión de la CLI de Azure necesaria:

    az extension add --upgrade --name cosmosdb-preview
    
  2. Establezca el método de autenticación en "Ldap" en el clúster y reemplace <resource group> y <cluster name> por los valores adecuados:

    az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
    
  3. Ahora establezca las propiedades en el nivel del centro de datos. Reemplace <resource group> y <cluster name> por los valores adecuados y <dnsname> por el nombre DNS que ha creado para el servidor LDAP.

    Nota:

    El comando siguiente se basa en la configuración de LDAP de la sección anterior. Si ha omitido esa sección porque ya tiene un servidor LDAP existente, proporcione los valores correspondientes para ese servidor en su lugar. Asegúrese de que ha cargado un archivo de certificado como ldap.crt en clouddrive en la CLI de 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
    
  4. Una vez que se complete este comando, debe poder usar CQLSH (vea más abajo) o cualquier controlador cliente de código abierto de Apache Cassandra para conectarse al centro de datos de la instancia administrada con el usuario agregado en el paso anterior:

    export SSL_VALIDATE=false
    cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>
    

Pasos siguientes