在 Azure Kubernetes Service (AKS) 叢集中使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者
適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者可讓您透過 CSI 磁碟區 (英文),將 Azure Key Vault 與 Azure Kubernetes Service (AKS) 叢集整合為祕密存放區。
功能
- 使用 CSI 磁碟區,將祕密、金鑰和憑證掛接到 Pod。
- 支援 CSI 內嵌磁碟區。
- 支援將多個祕密存放區物件掛接為單一磁碟區。
- 支援使用
SecretProviderClass
CRD 的 Pod 可攜性。 - 支援 Windows 容器。
- 與 Kubernetes 祕密同步。
- 支援自動輪替掛接的內容和同步的 Kubernetes 祕密。
限制
使用「subPath 磁碟區掛接」的容器在輪替時不會收到祕密更新。 如需詳細資訊,請參閱祕密存放區 CSI 驅動程式的已知限制 (英文)。
必要條件
- 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- 請確定您的 Azure CLI 版本是 2.30.0 或更新版本。 如果是較早的版本,請安裝最新版本。
- 如果您限制對叢集的輸入,請確定連接埠 9808 和 8095 均為開放狀態。
- 建議的最低 Kubernetes 版本是以滾動 Kubernetes 版本支援視窗為基礎。 請確定您執行的是 N-2 版或更新版本。
使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者支援來建立 AKS 叢集
使用
az group create
命令建立 Azure 資源群組。az group create --name myResourceGroup --location eastus2
使用
az aks create
(部分機器翻譯) 命令搭配--enable-addons azure-keyvault-secrets-provider
參數,利用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者功能來建立 AKS 叢集。 此附加元件會建立使用者指派的受控識別,以供您用來向金鑰保存庫進行驗證。 下列範例會建立已啟用秘密存放區 CSI 驅動程式 Azure Key Vault 提供者的 AKS 叢集。注意
如果您想要使用 Microsoft Entra 工作負載 ID,也必須使用
--enable-oidc-issuer
和--enable-workload-identity
參數,如下列範例所示:az aks create --name myAKSCluster --resource-group myResourceGroup --enable-addons azure-keyvault-secrets-provider --enable-oidc-issuer --enable-workload-identity --generate-ssh-keys
az aks create \ --name myAKSCluster \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --generate-ssh-keys
上一個命令會建立使用者指派的受控識別 (
azureKeyvaultSecretsProvider
) 以存取 Azure 資源。 下列範例會使用此身分識別來連線到要儲存祕密的金鑰保存庫,但您也可以使用其他身分識別存取方法 (部分機器翻譯)。 請記下輸出中身分識別的clientId
。..., "addonProfiles": { "azureKeyvaultSecretsProvider": { ..., "identity": { "clientId": "<client-id>", ... } }
注意
啟用此功能之後,AKS 會在節點資源群組中建立名為 azurekeyvaultsecretsprovider-xxx
的受控識別,並自動將它指派給 虛擬機器擴展集 (VMSS)。 您可以使用此受控識別或自己的受控識別來存取金鑰保存庫。 不支援防止建立身分識別。
使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者支援升級現有的 AKS 叢集
使用
az aks enable-addons
(部分機器翻譯) 命令,利用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者功能來升級現有的 AKS 叢集,並啟用azure-keyvault-secrets-provider
附加元件。 此附加元件會建立使用者指派的受控識別,以供您用來向金鑰保存庫進行驗證。az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
注意
啟用此功能之後,AKS 會在節點資源群組中建立名為 azurekeyvaultsecretsprovider-xxx
的受控識別,並自動將它指派給 虛擬機器擴展集 (VMSS)。 您可以使用此受控識別或自己的受控識別來存取金鑰保存庫。 不支援防止建立身分識別。
驗證適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者安裝
使用 [
az aks get-credentials
][az-aks-get-credentials] 命令取得 AKS 叢集認證。az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
使用
kubectl get pods
命令來確認安裝已完成,其中會列出 kube-system 命名空間中具有secrets-store-csi-driver
和secrets-store-provider-azure
標籤的所有 Pod。kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)'
您的輸出看起來應類似下列的範例輸出:
NAME READY STATUS RESTARTS AGE aks-secrets-store-csi-driver-4vpkj 3/3 Running 2 4m25s aks-secrets-store-csi-driver-ctjq6 3/3 Running 2 4m21s aks-secrets-store-csi-driver-tlvlq 3/3 Running 2 4m24s aks-secrets-store-provider-azure-5p4nb 1/1 Running 0 4m21s aks-secrets-store-provider-azure-6pqmv 1/1 Running 0 4m24s aks-secrets-store-provider-azure-f5qlm 1/1 Running 0 4m25s
確認叢集節點集區中的每個節點正在執行祕密存放區 CSI 驅動程式 Pod 和祕密存放區提供者 Azure Pod。
建立或使用現有的 Azure Key Vault
使用
az keyvault create
(部分機器翻譯) 命令或具有--enable-rbac-authorization
旗標的az keyvault update
(部分機器翻譯) 命令,建立或更新已啟用 Azure 角色型存取控制 (Azure RBAC) 的金鑰保存庫。 金鑰保存庫的名稱必須是全域唯一的。 如需金鑰保存庫權限模型和 Azure RBAC 的更多詳細資料,請參閱使用 Azure 角色型存取控制來提供 Key Vault 金鑰、憑證和祕密的存取權 (部分機器翻譯)## Create a new Azure key vault az keyvault create --name <keyvault-name> --resource-group myResourceGroup --location eastus2 --enable-rbac-authorization ## Update an existing Azure key vault az keyvault update --name <keyvault-name> --resource-group myResourceGroup --location eastus2 --enable-rbac-authorization
您的金鑰保存庫可以儲存金鑰、祕密和憑證。 在此範例中,使用
az keyvault secret set
(部分機器翻譯) 命令來設定稱為ExampleSecret
的純文字祕密。az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
記下下列屬性以供日後使用:
- 金鑰保存庫中的祕密物件名稱
- 物件類型 (祕密、金鑰或憑證)
- 金鑰保存庫資源的名稱
- 訂用帳戶的 Azure 租用戶識別碼
下一步
在本文中,您已了解如何在 AKS 叢集中使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者。 您現在需要提供身分識別來存取 Azure Key Vault。 若要深入了解,請繼續進行下一篇文章。