Come abilitare l'autenticazione LDAP in Azure Istanza gestita per Apache Cassandra

Azure Istanza gestita per Apache Cassandra offre operazioni di distribuzione e ridimensionamento automatizzate per data center Apache Cassandra open source gestiti. Questo articolo illustra come abilitare l'autenticazione LDAP per i cluster e i data center.

Importante

L'autenticazione LDAP è in anteprima pubblica. Questa funzionalità viene fornita senza un contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Prerequisiti

Distribuire un server LDAP in Azure

In questa sezione verrà illustrata la creazione di un semplice server LDAP in una macchina virtuale in Azure. Se è già in esecuzione un server LDAP, è possibile ignorare questa sezione ed esaminare come abilitare l'autenticazione LDAP.

  1. Distribuire una macchina virtuale in Azure usando Ubuntu Server 18.04 LTS. È possibile seguire le istruzioni qui.

  2. Assegnare al server un nome DNS:

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

  3. Installare Docker nella macchina virtuale. Questa esercitazione è consigliata.

  4. Nella home directory copiare e incollare il testo seguente e premere INVIO. Questo comando creerà un file contenente un account utente LDAP di test.

    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. Tornare alla home directory

    cd ..
    
  6. Eseguire il comando seguente, sostituendo <dnsname> con il nome DNS creato per il server LDAP in precedenza. Questo comando distribuirà un server LDAP con TLS abilitato in un contenitore Docker e copierà anche il file utente creato in precedenza nel contenitore.

    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. Copiare ora la cartella certificates dal contenitore (sostituire <dnsname> con il nome DNS creato per il server LDAP):

    sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
    
  8. Verificare che il nome DNS sia corretto:

    openssl x509 -in certs/ldap.crt -text
    

    Screenshot of output from command to verify certificate.

  9. Copiare il ldap.crt file in clouddrive nell'interfaccia della riga di comando di Azure per usarlo in un secondo momento.

  10. Aggiungere l'utente all'ldap (sostituire <dnsname> con il nome DNS creato per il server 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
    

Abilitare l'autenticazione LDAP

Importante

Se la sezione precedente è stata ignorata perché si dispone già di un server LDAP esistente, assicurarsi che siano abilitati i certificati SSL del server. L'oggetto subject alternative name (dns name) specificato per il certificato deve corrispondere anche al dominio del server in cui è ospitato LDAP oppure l'autenticazione avrà esito negativo.

  1. Attualmente, l'autenticazione LDAP è una funzionalità di anteprima pubblica. Eseguire il comando seguente per aggiungere l'estensione dell'interfaccia della riga di comando di Azure necessaria:

    az extension add --upgrade --name cosmosdb-preview
    
  2. Impostare il metodo di autenticazione su "Ldap" nel cluster, sostituendo <resource group> e <cluster name> con i valori appropriati:

    az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
    
  3. Impostare ora le proprietà a livello di data center. Sostituire <resource group> e <cluster name> con i valori appropriati e <dnsname> con il nome DNS creato per il server LDAP.

    Nota

    Il comando seguente si basa sull'installazione LDAP nella sezione precedente. Se la sezione è stata ignorata perché si dispone già di un server LDAP esistente, specificare invece i valori corrispondenti per tale server. Assicurarsi di aver caricato un file di certificato come ldap.crtnel clouddrive nell'interfaccia della riga di comando di 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. Al termine di questo comando, sarà possibile usare CQLSH (vedere di seguito) o qualsiasi driver client open source apache Cassandra per connettersi al data center dell'istanza gestita con l'utente aggiunto nel passaggio precedente:

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

Passaggi successivi