Så här aktiverar du LDAP-autentisering i Azure Managed Instance för Apache Cassandra

Azure Managed Instance för Apache Cassandra tillhandahåller automatiserade distributions- och skalningsåtgärder för hanterade Apache Cassandra-datacenter med öppen källkod. I den här artikeln beskrivs hur du aktiverar LDAP-autentisering till dina kluster och datacenter.

Viktigt!

LDAP-autentisering finns i offentlig förhandsversion. Den här funktionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Förutsättningar

Distribuera en LDAP-server i Azure

I det här avsnittet går vi igenom hur du skapar en enkel LDAP-server på en virtuell dator i Azure. Om du redan har en LDAP-server som körs kan du hoppa över det här avsnittet och granska hur du aktiverar LDAP-autentisering.

  1. Distribuera en virtuell dator i Azure med Ubuntu Server 18.04 LTS. Du kan följa anvisningarna här.

  2. Ge servern ett DNS-namn:

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

  3. Installera Docker på den virtuella datorn. Vi rekommenderar den här självstudien.

  4. I hemkatalogen kopierar och klistrar du in följande text och trycker på Retur. Det här kommandot skapar en fil som innehåller ett LDAP-testanvändarkonto.

    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. Gå tillbaka till hemkatalogen

    cd ..
    
  6. Kör kommandot nedan och <dnsname> ersätt med dns-namnet som du skapade för LDAP-servern tidigare. Det här kommandot distribuerar en LDAP-server med TLS aktiverat till en Docker-container och kopierar även användarfilen som du skapade tidigare till containern.

    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. Kopiera nu certifikatmappen från containern (ersätt <dnsname> med dns-namnet som du skapade för LDAP-servern):

    sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
    
  8. Kontrollera att dns-namnet är korrekt:

    openssl x509 -in certs/ldap.crt -text
    

    Screenshot of output from command to verify certificate.

  9. ldap.crt Kopiera filen till clouddrive i Azure CLI för senare användning.

  10. Lägg till användaren i ldap (ersätt <dnsname> med dns-namnet som du skapade för LDAP-servern):

    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
    

Aktivera LDAP-autentisering

Viktigt!

Om du hoppades över avsnittet ovan eftersom du redan har en befintlig LDAP-server kontrollerar du att server-SSL-certifikat är aktiverade. Det subject alternative name (dns name) angivna certifikatet måste också matcha domänen för den server som LDAP finns på, annars misslyckas autentiseringen.

  1. För närvarande är LDAP-autentisering en offentlig förhandsversionsfunktion. Kör kommandot nedan för att lägga till det nödvändiga Azure CLI-tillägget:

    az extension add --upgrade --name cosmosdb-preview
    
  2. Ange autentiseringsmetod till "Ldap" i klustret och ersätt <resource group> och <cluster name> med lämpliga värden:

    az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
    
  3. Ange nu egenskaper på datacenternivå. Ersätt <resource group> och <cluster name> med lämpliga värden och <dnsname> med dns-namnet som du skapade för LDAP-servern.

    Kommentar

    Kommandot nedan baseras på LDAP-konfigurationen i det tidigare avsnittet. Om du hoppades över det avsnittet eftersom du redan har en befintlig LDAP-server anger du motsvarande värden för den servern i stället. Se till att du har laddat upp en certifikatfil som ldap.crt till din clouddrive i Azure CLI.

    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. När det här kommandot har slutförts bör du kunna använda CQLSH (se nedan) eller någon Apache Cassandra-klientdrivrutin med öppen källkod för att ansluta till datacentret för den hanterade instansen med användaren som lades till i ovanstående steg:

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

Nästa steg