Uso del proveedor de Azure Key Vault para el controlador CSI de almacén de secretos en un clúster de Azure Kubernetes Service (AKS)

El proveedor de Azure Key Vault para el controlador CSI de almacén de secretos permite la integración de Azure Key Vault como almacén de secretos con un clúster de Azure Kubernetes Service (AKS) mediante un volumen CSI.

Características

  • Monta secretos, claves y certificados en un pod mediante un volumen CSI.
  • Admite volúmenes CSI en línea.
  • Admite el montaje de varios objetos de almacenamiento de secretos como un solo volumen.
  • Admite la portabilidad de pods con el CRD SecretProviderClass.
  • Admite contenedores de Windows.
  • Se sincroniza con secretos de Kubernetes.
  • Admite la rotación automática de contenido montado y secretos de Kubernetes sincronizados.

Limitaciones

Un contenedor que use el montaje de volúmenes de subPath no recibe actualizaciones de secretos cuando se rota. Para obtener más información, consulte Limitaciones conocidas del controlador CSI del almacén de secretos.

Requisitos previos

Creación de un clúster de AKS con el proveedor de Azure Key Vault para la compatibilidad con el controlador CSI de almacén de secretos

  1. Cree un grupo de recursos de Azure con el comando az group create.

    az group create -n myResourceGroup -l eastus2
    
  2. Cree un clúster de AKS con la funcionalidad del proveedor de Azure Key Vault para el controlador CSI de almacén de secretos mediante el comando az aks create y habilite el complemento azure-keyvault-secrets-provider.

    Nota:

    Si desea usar la identidad de carga de trabajo de Microsoft Entra, también debe usar los --enable-oidc-issuer parámetros y --enable-workload-identity, como en el ejemplo siguiente:

    az aks create -n myAKSCluster -g myResourceGroup --enable-addons azure-keyvault-secrets-provider --enable-oidc-issuer --enable-workload-identity
    
    az aks create -n myAKSCluster -g myResourceGroup --enable-addons azure-keyvault-secrets-provider
    
  3. El complemento crea una identidad administrada asignada por el usuario, azureKeyvaultSecretsProvider, para acceder a los recursos de Azure. En este ejemplo se usa esta identidad para conectar con el almacén de claves donde se almacenan los secretos. No obstante, también puede usar otros métodos de acceso de identidad. Tome nota del clientId de la identidad en la salida.

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

Nota:

Después de habilitar esta característica, AKS crea una identity named azurekeyvaultsecretsprovider-xxx administrada en el grupo de recursos del nodo y la asigna automáticamente a Virtual Machine Scale Sets (VMSS). Puede usar esta identidad administrada o su propia identidad administrada para acceder al almacén de claves. No se admite para evitar la creación de la identidad.

Actualización de un clúster de AKS existente con el proveedor de Azure Key Vault para la compatibilidad con el controlador CSI de almacén de secretos

  • Actualice un clúster de AKS existente con la funcionalidad del proveedor de Azure Key Vault para el controlador CSI de almacén de secretos mediante el comando az aks enable-addons y habilite el complemento azure-keyvault-secrets-provider. El complemento crea una identidad administrada asignada por el usuario, que se puede usar para autenticarse en el almacén de claves.

    az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
    

Nota:

Después de habilitar esta característica, AKS crea una identity named azurekeyvaultsecretsprovider-xxx administrada en el grupo de recursos del nodo y la asigna automáticamente a Virtual Machine Scale Sets (VMSS). Puede usar esta identidad administrada o su propia identidad administrada para acceder al almacén de claves. No se admite para evitar la creación de la identidad.

Comprobación de la instalación del proveedor de Azure Key Vault para el controlador CSI de almacén de secretos

  1. Compruebe que la instalación ha finalizado mediante el comando kubectl get pods, que enumera todos los pods con las etiquetas secrets-store-csi-driver y secrets-store-provider-azure en el espacio de nombres kube-system.

    kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)'
    

    El resultado debería ser similar al ejemplo siguiente:

    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. Asegúrese de que cada nodo del grupo de nodos de clúster tenga un pod del controlador CSI del almacén de secretos y un pod de Azure del proveedor de almacén de secretos ejecutándose.

Creación o uso de una instancia de Azure Key Vault

  1. Cree o actualice un almacén de claves con el control de acceso basado en roles de Azure (Azure RBAC) habilitado mediante el comando az keyvault create o el comando az keyvault update con la marca --enable-rbac-authorization. El nombre del almacén de claves debe ser único globalmente. Para obtener más información sobre los modelos de permisos del almacén de claves y Azure RBAC, consulte Acceso a las claves, los certificados y los secretos de Key Vault con un control de acceso basado en rol de Azure.

    ## Create a new Azure key vault
    az keyvault create -n <keyvault-name> -g myResourceGroup -l eastus2 --enable-rbac-authorization
    
    ## Update an existing Azure key vault
    az keyvault update -n <keyvault-name> -g myResourceGroup -l eastus2 --enable-rbac-authorization
    
  2. El almacén de claves puede almacenar claves, secretos y certificados. En este ejemplo, use el comando az keyvault secret set para establecer un secreto de texto sin formato denominado ExampleSecret.

    az keyvault secret set --vault-name <keyvault-name> -n ExampleSecret --value MyAKSExampleSecret
    
  3. Tome nota de las siguientes propiedades, ya que las usará más adelante:

    • Nombre del objeto secreto en el almacén de claves
    • Tipo de objeto (secreto, clave o certificado)
    • Nombre del recurso del almacén de claves.
    • Identificador de inquilino de Azure de la suscripción

Pasos siguientes

En este artículo, ha aprendido a usar el proveedor de Azure Key Vault para el controlador CSI de almacén de secretos con un clúster de AKS. Ahora debe proporcionar una identidad para acceder a Azure Key Vault. Para saber cómo, avance al siguiente artículo.