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 のセットアップ
Azure Key Vault (AKV) は、Active Directory ドメイン コントローラーと通信するために AKS 上の Windows ノードによって使用される資格情報を格納するために使用されます。 マネージド ID (MI) は、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 ノードにワークロードをデプロイできるようになりました。