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
- Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Compruebe que la versión de la CLI de Azure es 2.30.0 o posterior. Si es una versión anterior, instale la más reciente.
- Si restringe la entrada al clúster, asegúrese de que los puertos 9808 y 8095 estén abiertos.
- La versión mínima recomendada de Kubernetes se basa en la ventana de compatibilidad de la versión gradual de Kubernetes. Asegúrese de estar ejecutando la versión N-2 u otra posterior.
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
Cree un grupo de recursos de Azure con el comando
az group create
.az group create --name myResourceGroup --location eastus2
Cree un clúster de AKS con la funcionalidad del proveedor de Azure Key Vault para el controlador CSI del almacén de secretos mediante el comando
az aks create
con el parámetro--enable-addons 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. En el ejemplo siguiente se crea un clúster de AKS con el proveedor de Azure Key Vault para el controlador CSI del almacén de secretos habilitado.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 --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
El comando anterior 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 delclientId
de la identidad en la salida...., "addonProfiles": { "azureKeyvaultSecretsProvider": { ..., "identity": { "clientId": "<client-id>", ... } }
Nota:
Después de habilitar esta característica, AKS crea una identidad administrada llamada azurekeyvaultsecretsprovider-xxx
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 complementoazure-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 identidad administrada llamada azurekeyvaultsecretsprovider-xxx
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
Obtenga las credenciales del clúster de AKS mediante el comando [
az aks get-credentials
][az-aks-get-credentials].az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
Compruebe que la instalación ha finalizado mediante el comando
kubectl get pods
, que enumera todos los pods con las etiquetassecrets-store-csi-driver
ysecrets-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
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
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 comandoaz 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 --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
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 denominadoExampleSecret
.az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
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.
Azure Kubernetes Service