PowerShell モジュールを使用して gMSA on Azure Kubernetes Service を構成する

このセクションでは、gMSA on AKS PowerShell モジュールを使用して、gMSA on Azure Kubernetes Service をセットアップする方法について説明します。 次の手順では、gMSA on AKS PowerShell モジュールをインストール済みで、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"]

この時点で、gMSA on AKS の構成は完了しています。 これで、Windows ノードにワークロードを展開できるようになりました。

次のステップ