Azure Managed Instance for Apache Cassandra에서 LDAP 인증을 사용하도록 설정하는 방법

Azure Managed Instance for Apache Cassandra는 관리형 오픈 소스 Apache Cassandra 데이터 센터에 자동화된 배포 및 크기 조정 작업을 제공합니다. 이 문서에서는 클러스터 및 데이터 센터에 LDAP 인증을 사용하도록 설정하는 방법을 설명합니다.

Important

LDAP 인증은 공개 미리 보기로 제공됩니다. 해당 기능은 별도의 Service Level Agreement(서비스 수준 규약) 없이 제공되며, 프로덕션 작업에는 사용하지 않는 것이 좋습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

필수 조건

Azure에서 LDAP 서버 배포

이 섹션에서는 Azure의 Virtual Machine에서 간단한 LDAP 서버를 만드는 방법에 대해 설명합니다. LDAP 서버가 이미 실행 중인 경우 이 섹션을 건너뛰고 LDAP 인증을 사용하도록 설정하는 방법을 검토하면 됩니다.

  1. Ubuntu Server 18.04 LTS를 사용하여 Azure에서 Virtual Machine을 배포합니다. 여기에 나와 있는 지침을 따르면 됩니다.

  2. 서버에 DNS 이름을 지정합니다.

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

  3. 가상 머신에 Docker를 설치합니다. 자습서를 사용하는 것이 좋습니다.

  4. 홈 디렉터리에서 다음 텍스트를 복사하여 붙여넣고 Enter 키를 누릅니다. 이 명령은 테스트 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 
    
  5. 홈 디렉터리로 백업 이동

    cd ..
    
  6. 아래 명령을 실행하여 <dnsname>을 앞서 LDAP 서버에 만든 dns 이름으로 바꿉니다. 이 명령은 TLS가 사용하도록 설정된 LDAP 서버를 Docker 컨테이너에 배포하고, 또한 이전에 만든 사용자 파일을 컨테이너에 복사합니다.

    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. 이제 컨테이너에서 인증서 폴더를 복사합니다(<dnsname>을 LDAP 서버에 만든 dns 이름으로 바꿈).

    sudo docker cp <dnsname>:/container/service/slapd/assets/certs certs
    
  8. dns 이름이 올바른지 확인합니다.

    openssl x509 -in certs/ldap.crt -text
    

    Screenshot of output from command to verify certificate.

  9. 나중에 사용할 수 있도록 Azure CLI의 clouddriveldap.crt 파일을 복사합니다.

  10. 사용자를 ldap에 추가합니다(<dnsname>을 LDAP 서버에 만든 dns 이름으로 바꿈).

    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
    

LDAP 인증 사용

Important

기존 LDAP 서버가 이미 있으므로 위의 섹션을 건너뛴 경우, 서버 SSL 인증서가 사용하도록 설정되어 있는지 확인하세요. 인증서에 지정된 subject alternative name (dns name)은 LDAP가 호스트되는 서버의 도메인과도 일치해야 합니다. 그렇지 않으면 인증에 실패합니다.

  1. 현재 LDAP 인증은 공개 미리 보기 기능입니다. 아래 명령을 실행하여 필요한 Azure CLI 확장을 추가합니다.

    az extension add --upgrade --name cosmosdb-preview
    
  2. 클러스터에서 인증 방법을 "Ldap"으로 설정하고 <resource group><cluster name>을 적절한 값으로 바꿉니다.

    az managed-cassandra cluster update -g <resource group> -c <cluster name> --authentication-method "Ldap"
    
  3. 이제 데이터 센터 수준에서 속성을 설정합니다. <resource group><cluster name>을 적절한 값으로 바꾸고 <dnsname>을 LDAP 서버용으로 만든 dns 이름으로 바꿉니다.

    참고 항목

    아래 명령은 이전 섹션의 LDAP 설정을 기반으로 합니다. 기존 LDAP 서버가 이미 있으므로 해당 섹션을 건너뛴 경우, 이 서버에 해당하는 값을 대신 제공합니다. Azure CLI에서 clouddriveldap.crt 같은 인증서 파일을 업로드했는지 확인합니다.

    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. 이 명령이 완료되면 CQLSH(아래 참조) 또는 Apache Cassandra 오픈 소스 클라이언트 드라이버를 사용하여 위 단계에서 추가한 사용자로 관리되는 인스턴스 데이터 센터에 연결할 수 있어야 합니다.

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

다음 단계