Jak włączyć uwierzytelnianie LDAP w usłudze Azure Managed Instance dla usługi Apache Cassandra
Wystąpienie zarządzane platformy Azure dla usługi Apache Cassandra udostępnia zautomatyzowane operacje wdrażania i skalowania dla zarządzanych centrów danych Apache Cassandra typu open source. W tym artykule omówiono sposób włączania uwierzytelniania LDAP w klastrach i centrach danych.
Ważne
Uwierzytelnianie LDAP jest w publicznej wersji zapoznawczej. Ta funkcja jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Wymagania wstępne
- Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Wystąpienie zarządzane platformy Azure dla klastra Apache Cassandra. Zapoznaj się ze sposobem tworzenia wystąpienia zarządzanego platformy Azure dla klastra Apache Cassandra w witrynie Azure Portal.
Wdrażanie serwera LDAP na platformie Azure
W tej sekcji omówimy tworzenie prostego serwera LDAP na maszynie wirtualnej na platformie Azure. Jeśli masz już uruchomiony serwer LDAP, możesz pominąć tę sekcję i przejrzeć sposób włączania uwierzytelniania LDAP.
Wdrażanie maszyny wirtualnej na platformie Azure przy użyciu systemu Ubuntu Server 18.04 LTS. Możesz postępować zgodnie z instrukcjami tutaj.
Nadaj serwerowi nazwę DNS:
Zainstaluj platformę Docker na maszynie wirtualnej. Zalecamy ten samouczek.
W katalogu głównym skopiuj i wklej następujący tekst i naciśnij Enter. To polecenie spowoduje utworzenie pliku zawierającego testowe konto użytkownika LDAP.
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
Przejdź z powrotem do katalogu macierzystego
cd ..
Uruchom poniższe polecenie, zastępując
<dnsname>
ciąg nazwą DNS utworzoną wcześniej dla serwera LDAP. To polecenie spowoduje wdrożenie serwera LDAP z włączonym protokołem TLS w kontenerze platformy Docker, a także skopiowanie utworzonego wcześniej pliku użytkownika do kontenera.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
Teraz skopiuj folder certyfikatów z kontenera (zastąp
<dnsname>
ciąg nazwą DNS utworzoną dla serwera LDAP):sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
Sprawdź, czy nazwa DNS jest poprawna:
openssl x509 -in certs/ldap.crt -text
ldap.crt
Skopiuj plik do usługi clouddrive w interfejsie wiersza polecenia platformy Azure, aby użyć go później.Dodaj użytkownika do ldap (zastąp
<dnsname>
ciąg nazwą DNS utworzoną dla serwera 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
Włączanie uwierzytelniania LDAP
Ważne
Jeśli pominięto powyższe sekcje, ponieważ masz już istniejący serwer LDAP, upewnij się, że ma on włączone certyfikaty SSL serwera. Określony subject alternative name (dns name)
dla certyfikatu musi być również zgodny z domeną serwera, na którego jest hostowany protokół LDAP, lub uwierzytelnianie zakończy się niepowodzeniem.
Obecnie uwierzytelnianie LDAP jest funkcją publicznej wersji zapoznawczej. Uruchom poniższe polecenie, aby dodać wymagane rozszerzenie interfejsu wiersza polecenia platformy Azure:
az extension add --upgrade --name cosmosdb-preview
Ustaw metodę uwierzytelniania na "Ldap" w klastrze, zastępując
<resource group>
element i<cluster name>
odpowiednimi wartościami:az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
Teraz ustaw właściwości na poziomie centrum danych. Zastąp
<resource group>
wartości i<cluster name>
odpowiednimi wartościami oraz<dnsname>
nazwą DNS utworzoną dla serwera LDAP.Uwaga
Poniższe polecenie jest oparte na konfiguracji LDAP we wcześniejszej sekcji. Jeśli pominięto sekcję, ponieważ masz już istniejący serwer LDAP, podaj odpowiednie wartości dla tego serwera. Upewnij się, że przekazano plik certyfikatu podobny
ldap.crt
do usługi CloudDrive w interfejsie wiersza polecenia platformy 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
Po zakończeniu tego polecenia powinno być możliwe użycie protokołu CQLSH (patrz poniżej) lub dowolnego sterownika klienta open source apache Cassandra w celu nawiązania połączenia z centrum danych wystąpienia zarządzanego z użytkownikiem dodanym w powyższym kroku:
export SSL_VALIDATE=false cqlsh --debug --ssl <data-node-ip> -u <user> -p <password>