자습서 – 시스템 관리형 keytab 모드에서 Active Directory 커넥터 배포

이 문서에서는 시스템 관리형 keytab 모드에서 Active Directory 커넥터를 배포하는 방법을 설명합니다. Azure Arc에서 사용하도록 설정된 SQL Managed Instance에서 Active Directory 인증을 사용하도록 설정하는 핵심 구성 요소입니다.

시스템 관리형 keytab 모드의 Active Directory 커넥터

시스템 관리형 Keytab 모드에서 Active Directory 커넥터는 관리되는 인스턴스에서 들어오는 DNS 요청을 두 개의 업스트림 DNS 서비스 중 하나로 프록시하는 DNS 프록시 서비스를 배포합니다.

  • Active Directory DNS 서버
  • Kubernetes DNS 서버

AD 커넥터는 DNS 프록시 서비스 외에 AD 계정, SPN(서비스 사용자 이름) 및 keytab의 자동 생성 및 관리를 위해 AD 도메인에 대한 통신을 편리하게 할 수 있는 보안 지원 서비스도 배포합니다.

다음 다이어그램은 시스템 관리형 keytab 모드의 AD 커넥터 및 DNS 프록시 서비스 기능을 보여 줍니다.

Active Directory connector

필수 조건

계속 진행하려면 다음 항목이 있어야 합니다.

  • 지원되는 Kubernetes 버전에 배포된 데이터 컨트롤러의 인스턴스
  • Active Directory 도메인
  • Active Directory 도메인에서 미리 만든 OU(조직 구성 단위)
  • Active Directory 도메인 서비스 계정

AD 도메인 서비스 계정에는 Active Directory에 제공된 OU(조직 구성 단위) 내에서 사용자 계정을 자동으로 만들고 삭제할 수 있는 충분한 권한이 있어야 합니다.

범위가 OU(조직 구성 단위)로 지정된 다음 권한을 도메인 서비스 계정에 부여합니다.

  • 모든 속성 읽기
  • 모든 속성 쓰기
  • 사용자 개체 만들기
  • 사용자 개체 삭제
  • 하위 사용자 개체에 대한 암호 재설정

OU 및 AD 계정을 설정하는 방법에 대한 자세한 내용은 시스템 관리형 keytab을 사용하여 Active Directory 인증에서 Azure Arc 지원 데이터 서비스 배포 - 필수 구성 요소로 이동하세요.

시스템 관리형 keytab 모드에서 Active Directory 커넥터를 배포하기 위한 입력

Active Directory 커넥터의 인스턴스를 배포하려면 Active Directory 도메인 환경의 입력 여러 개가 필요합니다.

이러한 입력은 AD 커넥터 인스턴스에 대한 YAML 사양에서 제공됩니다.

AD 커넥터의 인스턴스를 배포하기 전에 AD 도메인에 대한 다음 메타데이터를 사용할 수 있어야 합니다.

  • Active Directory 도메인의 이름
  • 도메인 컨트롤러 목록(정규화된 도메인 이름)
  • DNS 서버 IP 주소 목록

다음 입력 필드는 Active Directory 커넥터 사양의 사용자에게 노출됩니다.

  • Required

    • spec.activeDirectory.realm 대문자로 된 Active Directory 도메인의 이름입니다. 이것은 이 AD 커넥터 인스턴스가 연결될 AD 도메인입니다.

    • spec.activeDirectory.domainControllers.primaryDomainController.hostname AD 도메인에 있는 PDC(주 도메인 컨트롤러)의 정규화된 도메인 이름입니다.

      도메인에서 어떤 도메인 컨트롤러가 기본인지 모르는 경우 AD 도메인에 가입된 모든 Windows 컴퓨터에서 다음 명령을 실행하면 확인할 수 있습니다. netdom query fsmo

    • spec.activeDirectory.dns.nameserverIpAddresses Active Directory DNS 서버 IP 주소의 목록입니다. DNS 프록시 서비스는 제공된 도메인 이름의 DNS 쿼리를 이러한 서버에 전달합니다.

  • 선택 사항

    • spec.activeDirectory.serviceAccountProvisioning 이는 고객 관리형 keytab의 경우 manual 또는 시스템 관리형 keytab의 경우 automatic으로 가능한 값을 사용하여 AD 커넥터 배포 모드를 정의하는 선택적 필드입니다. 이 필드를 설정하지 않으면 값이 기본적으로 manual로 설정됩니다. automatic(시스템 관리형 keytab)로 설정하면 시스템은 이 AD 커넥터와 연결된 SQL Managed Instances에 대한 AD 계정과 SPN(서비스 사용자 이름)을 자동으로 생성하고 이에 대한 keytab 파일을 만듭니다. manual(고객 관리형 keytab)으로 설정하면 시스템에서 AD 계정 및 keytab 생성의 자동 생성을 제공하지 않습니다. 사용자가 keytab 파일을 제공해야 합니다.

    • spec.activeDirectory.ouDistinguishedName 이 필드는 옵션입니다. 그러나 serviceAccountProvisioning의 값이 automatic으로 설정된 경우에는 조건부로 필수가 됩니다. 이 필드는 사용자가 AD 커넥터를 배포하기 전에 Active Directory 도메인에서 만들어야 하는 OU(조직 구성 단위)의 DN(고유 이름)을 허용합니다. Active Directory 도메인에 SQL Managed Instances에 대한 시스템 생성 AD 계정을 저장하는 데 사용됩니다. 값의 예: OU=arcou,DC=contoso,DC=local.

    • spec.activeDirectory.domainServiceAccountSecret 이 필드는 옵션입니다. serviceAccountProvisioning의 값이 automatic으로 설정된 경우에는 조건부로 필수가 됩니다. 이 필드는 AD 커넥터 배포 전에 만든 도메인 서비스 계정의 사용자 이름과 암호를 포함하는 Kubernetes 비밀의 이름을 허용합니다. 시스템은 이 계정을 사용하여 OU에서 다른 AD 계정을 생성하고 해당 AD 계정에 대해 작업을 수행합니다.

    • spec.activeDirectory.netbiosDomainName Active Directory 도메인의 NetBIOS 이름입니다. Active Directory 도메인의 짧은 도메인 이름(Windows 2000 이전 이름)입니다. AD 도메인의 계정을 한정하는 데 사용되는 경우가 많습니다. 예를 들어 도메인의 계정을 CONTOSO\admin이라고 하는 경우 CONTOSO가 NETBIOS 도메인 이름입니다.

      이 필드는 선택적입니다. 이 값을 제공하지 않은 경우 기본적으로 spec.activeDirectory.realm 필드의 첫 번째 레이블로 설정됩니다.

      대부분의 도메인 환경에서는 이 값이 기본값으로 설정되지만 일부 도메인 환경에는 기본값이 아닌 값이 있을 수 있습니다. 도메인의 NetBIOS 이름이 정규화된 이름의 첫 번째 레이블과 일치하지 않는 경우에만 이 필드를 사용해야 합니다.

    • spec.activeDirectory.domainControllers.secondaryDomainControllers[*].hostname AD 도메인에 있는 보조 도메인 컨트롤러의 정규화된 도메인 이름의 목록입니다.

      도메인이 여러 도메인 컨트롤러에서 제공되는 경우 이 목록에 있는 정규화된 도메인 이름 중 일부를 제공하는 것이 좋습니다. 그러면 Kerberos 작업의 가용성이 높아집니다.

      이 필드는 선택 사항이며 필수는 아닙니다. 값이 제공되지 않으면 시스템에서 자동으로 보조 도메인 컨트롤러를 검색합니다.

    • spec.activeDirectory.dns.domainName Active Directory DNS 서버로 DNS 조회를 전달해야 하는 DNS 도메인 이름입니다.

      이 도메인 또는 해당 하위 도메인에 속하는 이름에 대한 DNS 조회는 Active Directory로 전달됩니다.

      이 필드는 선택적입니다. 제공하지 않으면 기본적으로 소문자로 변환된 spec.activeDirectory.realm에 제공된 값으로 설정됩니다.

    • spec.activeDirectory.dns.replicas DNS 프록시 서비스의 복제본 수입니다. 이 필드는 선택 사항이며 제공하지 않으면 기본적으로 1로 설정됩니다.

    • spec.activeDirectory.dns.preferK8sDnsForPtrLookups IP 주소 조회에 대한 AD DNS 서버 응답보다 Kubernetes DNS 서버 응답을 선호할지 여부를 나타내는 플래그입니다.

      DNS 프록시 서비스는 이 필드를 사용하여 IP 주소 조회에 기본 설정할 DNS 서버의 업스트림 그룹을 결정합니다.

      이 필드는 선택적입니다. 제공하지 않으면 기본적으로 true로 설정됩니다. 즉, IP 주소의 DNS 조회가 Kubernetes DNS 서버로 먼저 전달됩니다. Kubernetes DNS 서버가 조회에 응답하지 않으면 쿼리가 AD DNS 서버로 전달됩니다. false로 설정하면 이러한 DNS 조회가 먼저 AD DNS 서버로 전달되고 실패하면 Kubernetes로 대체됩니다.

시스템 관리형 keytab 모드에서 Active Directory 커넥터 배포

AD 커넥터를 배포하려면 active-directory-connector.yaml이라는 YAML 사양 파일을 만듭니다.

다음은 CONTOSO.LOCAL이라는 이름의 AD 도메인을 사용하는 시스템 관리형 keytab AD 커넥터의 예입니다. 값을 AD 도메인의 값으로 바꿔야 합니다. adarc-dsa-secret에는 AD 배포 전에 만든 AD 도메인 서비스 계정이 포함됩니다.

참고 항목

여기에 제공된 도메인 서비스 AD 계정의 암호에 !를 특수 문자로 포함하지 않아야 합니다.

apiVersion: v1 
kind: Secret 
type: Opaque 
metadata: 
  name: adarc-dsa-secret
  namespace: <namespace>
data: 
  password: <your base64 encoded password>
  username: <your base64 encoded username>
---
apiVersion: arcdata.microsoft.com/v1beta2
kind: ActiveDirectoryConnector
metadata:
  name: adarc
  namespace: <namespace>
spec:
  activeDirectory:
    realm: CONTOSO.LOCAL
    serviceAccountProvisioning: automatic
    ouDistinguishedName: "OU=arcou,DC=contoso,DC=local"
    domainServiceAccountSecret: adarc-dsa-secret
    domainControllers:
      primaryDomainController:
        hostname: dc1.contoso.local
      secondaryDomainControllers:
      - hostname: dc2.contoso.local
      - hostname: dc3.contoso.local
  dns:
    preferK8sDnsForPtrLookups: false
    nameserverIPAddresses:
      - <DNS Server 1 IP address>
      - <DNS Server 2 IP address>

다음 명령은 AD 커넥터 인스턴스를 배포합니다. 현재 kube 네이티브 접근 방식의 배포만 지원됩니다.

kubectl apply –f active-directory-connector.yaml

AD 커넥터 인스턴스에 대한 배포를 제출한 후 다음 명령을 사용하여 배포 상태를 확인할 수 있습니다.

kubectl get adc -n <namespace>