다음을 통해 공유


PowerShell 모듈을 사용하여 Azure Kubernetes Service 기반 gMSA 구성

이 섹션에서는 AKS PowerShell 모듈의 gMSA를 사용하여 Azure Kubernetes Service 기반 gMSA를 설정하는 방법을 설명합니다. 아래 단계에서는 AKS PowerShell 모듈에 gMSA를 설치하고, AKS 클러스터에 연결하고, 필요한 매개 변수를 제공했다고 가정합니다. 아직 수행하지 않은 경우 이 자습서의 첫 번째 섹션에 있는 단계를 수행해야 합니다.

AKS 클러스터에 gMSA 기능이 제대로 구성되었는지 확인

AKS 클러스터는 gMSA에 대해 이미 구성되어 있거나 그렇지 않을 수 있습니다. 클러스터에서 gMSA를 활용할 준비가 되었는지 확인하려면 다음 명령을 실행합니다.

 Confirm-AksGMSAConfiguration `
 -AksResourceGroupName $params["aks-cluster-rg-name"] `
 -AksClusterName $params["aks-cluster-name"] `
 -AksGMSADomainDnsServer $params["domain-dns-server"] `
 -AksGMSARootDomainName $params["domain-fqdn"]

클러스터가 구성되면 gMSA가 작동하는 데 필요한 나머지 인프라를 구성할 수 있습니다.

Active Directory 환경 구성

Active Directory를 준비하는 첫 번째 단계는 키 배포 시스템이 구성되어 있는지 확인하는 것입니다. 이 단계에서는 도메인 컨트롤러에 대해 적절한 위임이 있는 자격 증명을 사용하여 명령을 실행해야 합니다. 이 작업은 권한 있는 사용자에게 위임할 수 있습니다.

도메인 컨트롤러에서 다음을 실행하여 루트 키를 사용하도록 설정합니다.

프로덕션 환경의 경우:

# You will need to wait 10 hours before the KDS root key is
# replicated and available for use on all domain controllers.
Add-KdsRootKey -EffectiveImmediately

테스트 환경의 경우:

# For single-DC test environments ONLY.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

다음 명령은 도메인 컨트롤러 또는 원격 PowerShell 세션에서 실행할 수 있습니다. 도메인 컨트롤러에서 실행하는 경우 명령에서 "DomainControllerAddress", "DomainUser" 및 "DomainPassword" 매개 변수를 제거합니다.

원격으로 실행하는 경우 도메인 컨트롤러가 원격 관리용으로 구성되어 있는지 확인합니다.

표준 도메인 사용자 만들기

 # Creates the standard domain user.
 New-GMSADomainUser `
 -Name $params["gmsa-domain-user-name"] `
 -Password $params["gmsa-domain-user-password"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainAdmin "$($params["domain-fqdn"])\$($params["domain-admin-user-name"])" `
 -DomainAdminPassword $params["domain-admin-user-password"]

gMSA 만들기

 # Creates the gMSA account, and it authorizes only the standard domain user.
 New-GMSA `
 -Name $params["gmsa-name"] `
 -AuthorizedUser $params["gmsa-domain-user-name"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainAdmin "$($params["domain-fqdn"])\$($params["domain-admin-user-name"])" `
 -DomainAdminPassword $params["domain-admin-user-password"]

Azure Key Vault 및 Azure 사용자가 할당한 관리 ID 설정

AKV(Azure Key Vault)는 Active Directory 도메인 컨트롤러와 통신하기 위해 AKS의 Windows 노드에서 사용하는 자격 증명을 저장하는 데 사용됩니다. MI(관리 ID)는 Windows 노드의 AKV에 대한 적절한 액세스를 제공하는 데 사용됩니다.

Azure 키 자격 증명 모음 만들기

 # The Azure key vault will have a secret with the credentials of the standard
 # domain user authorized to fetch the gMSA.
 New-GMSAAzureKeyVault `
 -ResourceGroupName $params["aks-cluster-rg-name"] `
 -Location $params["azure-location"] `
 -Name $params["akv-name"] `
 -SecretName $params["akv-secret-name"] `
 -GMSADomainUser "$($params["domain-fqdn"])\$($params["gmsa-domain-user-name"])" `
 -GMSADomainUserPassword $params["gmsa-domain-user-password"]

Azure 사용자가 할당한 관리 ID 만들기

 New-GMSAManagedIdentity `
 -ResourceGroupName $params["aks-cluster-rg-name"] `
 -Location $params["azure-location"] `
 -Name $params["ami-name"]

AKS Windows 호스트에 대한 AKV 액세스 권한 부여

 # Appends the user-assigned managed identity to the AKS Windows agent pools given as input parameter.
 # Configures the AKV read access policy for the user-assigned managed identity.
 Grant-AkvAccessToAksWindowsHosts `
 -AksResourceGroupName $params["aks-cluster-rg-name"] `
 -AksClusterName $params["aks-cluster-name"] `
 -AksWindowsNodePoolsNames $params["aks-win-node-pools-names"] `
 -VaultResourceGroupName $params["aks-cluster-rg-name"] `
 -VaultName $params["akv-name"] `
 -ManagedIdentityResourceGroupName $params["aks-cluster-rg-name"] `
 -ManagedIdentityName $params["ami-name"]

RBAC 리소스를 사용하여 gMSA 자격 증명 사양 설정

 # Creates the gMSA credential spec.
 # Configures the appropriate RBAC resources (ClusterRole and RoleBinding) for the spec.
 # Executes AD commands to get the appropriate domain information for the credential spec.
 New-GMSACredentialSpec `
 -Name $params["gmsa-spec-name"] `
 -GMSAName $params["gmsa-name"] `
 -ManagedIdentityResourceGroupName $params["aks-cluster-rg-name"] `
 -ManagedIdentityName $params["ami-name"] `
 -VaultName $params["akv-name"] `
 -VaultGMSASecretName $params["akv-secret-name"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainUser "$($params["domain-fqdn"])\$($params["gmsa-domain-user-name"])" `
 -DomainUserPassword $params["gmsa-domain-user-password"]

이 단계에서는 AKS 기반 gMSA 구성이 완료됩니다. 이제 워크로드를 Windows 노드에 배포할 수 있습니다.

다음 단계