在 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 或更新版本。 如果是較早的版本,請安裝最新版本
  • 如果您限制對叢集的輸入,請確定連接埠 98088095 均為開放狀態。
  • 建議的最低 Kubernetes 版本是以滾動 Kubernetes 版本支援視窗為基礎。 請確定您執行的是 N-2 版或更新版本。

使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者支援來建立 AKS 叢集

  1. 使用 az group create 命令建立 Azure 資源群組。

    az group create --name myResourceGroup --location eastus2
    
  2. 使用 az aks create 命令搭配 --enable-managed-identity 參數和 --enable-addons azure-keyvault-secrets-provider 參數,使用 Azure 金鑰保存庫 Provider for Secrets Store CSI 驅動程式功能建立 AKS 叢集。 此附加元件會建立使用者指派的受控識別,以供您用來向金鑰保存庫進行驗證。 下列範例會建立已啟用秘密存放區 CSI 驅動程式的 Azure 金鑰保存庫 提供者的 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
    
    az aks create --name myAKSCluster --resource-group myResourceGroup --enable-managed-identity --enable-addons azure-keyvault-secrets-provider
    
  3. 上一個命令會建立使用者指派的受控識別 , azureKeyvaultSecretsProvider以存取 Azure 資源。 下列範例會使用此身分識別來連線到要儲存祕密的金鑰保存庫,但您也可以使用其他身分識別存取方法 (部分機器翻譯)。 請記下輸出中身分識別的 clientId

    ...,
     "addonProfiles": {
        "azureKeyvaultSecretsProvider": {
          ...,
          "identity": {
            "clientId": "<client-id>",
            ...
          }
        }
    

注意

啟用此功能之後,AKS 會在節點資源群組中建立受控的 identity named 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 會在節點資源群組中建立受控的 identity named azurekeyvaultsecretsprovider-xxx,並自動將其指派給虛擬機器擴展集 (VMSS)。 您可以使用此受控識別或自己的受控識別來存取金鑰保存庫。 不支援防止建立身分識別。

驗證適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者安裝

  1. 使用 kubectl get pods 命令來確認安裝已完成,其中會列出 kube-system 命名空間中具有 secrets-store-csi-driversecrets-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
    
  2. 確認叢集節點集區中的每個節點正在執行祕密存放區 CSI 驅動程式 Pod 和祕密存放區提供者 Azure Pod。

建立或使用現有的 Azure Key Vault

  1. 使用 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
    
  2. 您的金鑰保存庫可以儲存金鑰、祕密和憑證。 在此範例中,使用 az keyvault secret set (部分機器翻譯) 命令來設定稱為 ExampleSecret 的純文字祕密。

    az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
    
  3. 記下下列屬性以供日後使用:

    • 金鑰保存庫中的祕密物件名稱
    • 物件類型 (祕密、金鑰或憑證)
    • 金鑰保存庫資源的名稱
    • 訂用帳戶的 Azure 租用戶識別碼

下一步

在本文中,您已了解如何在 AKS 叢集中使用適用於祕密存放區 CSI 驅動程式的 Azure Key Vault 提供者。 您現在需要提供身分識別來存取 Azure Key Vault。 若要深入了解,請繼續進行下一篇文章。