Usare il provider di Azure Key Vault per il driver CSI dell'archivio segreti in un cluster del servizio Azure Kubernetes
Il provider di Azure Key Vault per il driver CSI dell'archivio segreti consente l'integrazione di un insieme di credenziali delle chiavi di Azure come archivio segreto con un cluster del servizio Azure Kubernetes tramite un volume CSI.
Funzionalità
- Monta segreti, chiavi e certificati in un pod usando un volume CSI.
- Supporta volumi inline CSI.
- Supporta il montaggio di più oggetti dell'archivio segreti come un singolo volume.
- Supporta la portabilità dei pod con crd
SecretProviderClass
. - Supporta i contenitori di Windows.
- Esegue la sincronizzazione con i segreti kubernetes.
- Supporta l'autorotazione dei contenuti montati e i segreti Kubernetes sincronizzati.
Limiti
Un contenitore che usa il montaggio del volume subPath non riceve gli aggiornamenti dei segreti quando viene ruotato. Per altre informazioni, vedere Limitazioni note del driver CSI dell'archivio segreti.
Prerequisiti
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Verificare che la versione dell'interfaccia della riga di comando di Azure sia 2.30.0 o successiva. Se si tratta di una versione precedente, installare la versione più recente.
- Se si limita l'ingresso al cluster, assicurarsi che le porte 9808 e 8095 siano aperte.
- La versione minima consigliata di Kubernetes si basa sulla finestra di supporto della versione di Kubernetes in sequenza. Assicurarsi di eseguire la versione N-2 o successiva.
Creare un cluster del servizio Azure Kubernetes con il provider di Azure Key Vault per il supporto del driver CSI dell'archivio segreti
Creare un gruppo di risorse di Azure usando il comando
az group create
.az group create --name myResourceGroup --location eastus2
Creare un cluster del servizio Azure Kubernetes con il provider di Azure Key Vault per la funzionalità del driver CSI dell'archivio segreti usando il comando
az aks create
con il parametro--enable-addons azure-keyvault-secrets-provider
. Il componente aggiuntivo crea un'identità gestita assegnata dall'utente che è possibile usare per eseguire l'autenticazione nell'insieme di credenziali delle chiavi. L'esempio seguente crea un cluster del servizio Azure Kubernetes con il provider di Azure Key Vault per il driver CSI dell'archivio segreti abilitato.Nota
Se si vuole usare l'ID del carico di lavoro Microsoft Entra, è necessario usare anche i parametri
--enable-oidc-issuer
e--enable-workload-identity
, ad esempio nell'esempio seguente: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
Il comando precedente crea un'identità gestita assegnata dall'utente,
azureKeyvaultSecretsProvider
, per accedere alle risorse di Azure. Nell'esempio seguente viene usata questa identità per connettersi all'insieme di credenziali delle chiavi che archivia i segreti, ma è anche possibile usare altri metodi di accesso alle identità . Prendere nota dell'identitàclientId
nell'output...., "addonProfiles": { "azureKeyvaultSecretsProvider": { ..., "identity": { "clientId": "<client-id>", ... } }
Nota
Dopo aver abilitato questa funzionalità, il servizio Azure Kubernetes crea un'identità gestita denominata azurekeyvaultsecretsprovider-xxx
nel gruppo di risorse del nodo e la assegna automaticamente al set di scalabilità di macchine virtuali (VMSS). È possibile usare questa identità gestita o la propria identità gestita per accedere all'insieme di credenziali delle chiavi. Non è supportato per impedire la creazione dell'identità.
Aggiornare un cluster del servizio Azure Kubernetes esistente con il provider di Azure Key Vault per il supporto del driver CSI dell'archivio segreti
Aggiornare un cluster del servizio Azure Kubernetes esistente con il provider di Azure Key Vault per la funzionalità del driver CSI dell'archivio segreti usando il
az aks enable-addons
comando e abilitare il componente aggiuntivoazure-keyvault-secrets-provider
. Il componente aggiuntivo crea un'identità gestita assegnata dall'utente che è possibile usare per eseguire l'autenticazione nell'insieme di credenziali delle chiavi.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Nota
Dopo aver abilitato questa funzionalità, il servizio Azure Kubernetes crea un'identità gestita denominata azurekeyvaultsecretsprovider-xxx
nel gruppo di risorse del nodo e la assegna automaticamente al set di scalabilità di macchine virtuali (VMSS). È possibile usare questa identità gestita o la propria identità gestita per accedere all'insieme di credenziali delle chiavi. Non è supportato per impedire la creazione dell'identità.
Verificare il provider di Azure Key Vault per l'installazione del driver CSI dell'archivio segreti
Ottenere le credenziali del cluster del servizio Azure Kubernetes usando il comando [
az aks get-credentials
][az-aks-get-credentials].az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
Verificare che l'installazione sia terminata usando il comando
kubectl get pods
, che elenca tutti i pod con le etichettesecrets-store-csi-driver
esecrets-store-provider-azure
nello spazio dei nomi kube-system.kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)'
L'output dovrebbe essere simile all'esempio di output seguente:
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
Verificare che ogni nodo nel pool di nodi del cluster abbia un pod del driver CSI dell'archivio segreti e un pod di Azure del provider di archivi segreti in esecuzione.
Creare o usare un insieme di credenziali delle chiavi di Azure esistente
Creare o aggiornare un insieme di credenziali delle chiavi con il controllo degli accessi in base al ruolo di Azure abilitato usando il comando
az keyvault create
o il comandoaz keyvault update
con il flag--enable-rbac-authorization
. Il nome dell'insieme di credenziali delle chiavi deve essere globalmente univoco. Per altre informazioni sui modelli di autorizzazione dell'insieme di credenziali delle chiavi e sul controllo degli accessi in base al ruolo di Azure, vedere Fornire l'accesso a chiavi, certificati e segreti di Key Vault con un controllo degli accessi in base al ruolo di 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
L'insieme di credenziali delle chiavi può archiviare chiavi, segreti e certificati. In questo esempio usare il comando
az keyvault secret set
per impostare un segreto di testo normale denominatoExampleSecret
.az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
Prendere nota delle proprietà seguenti per un uso futuro:
- Nome dell'oggetto segreto nell'insieme di credenziali delle chiavi
- Il tipo di oggetto (segreto, chiave o certificato)
- Nome della risorsa dell'insieme di credenziali delle chiavi
- ID tenant di Azure della sottoscrizione
Passaggi successivi
In questo articolo si è appreso come usare il provider di Azure Key Vault per il driver CSI dell'archivio segreti in un cluster del servizio Azure Kubernetes. È ora necessario fornire un'identità per accedere ad Azure Key Vault. Per informazioni su come, continuare con l'articolo successivo.
Azure Kubernetes Service