Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il provider Azure Key Vault per il driver CSI (Archiviazione di Container Azure) dell'archivio segreti consente l'integrazione di Azure Key Vault come archivio segreti 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 la
SecretProviderClassdefinizione di risorsa personalizzata (CRD). - 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
ConfigMapoSecretcome montaggio del volumesubPathnon riceve aggiornamenti automatici quando il segreto viene ruotato (un limite di Kubernetes). Per rendere effettive le modifiche, l'applicazione deve ricaricare il file modificato controllando le modifiche nel file system o riavviando il pod. Per ulteriori informazioni, vedere Limitazioni note di Secrets Store CSI Driver. - Il componente aggiuntivo crea un'identità gestita denominata
azurekeyvaultsecretsprovider-xxxxxnel gruppo di risorse del nodo (MC_) e la assegna automaticamente al set di scalabilità di macchine virtuali. È 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à.
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.
Rete
- Se si usano cluster isolati di rete, è consigliabile configurare l'endpoint privato per accedere ad Azure Key Vault.
- Se il cluster ha un tipo in uscita
userDefinedRoutinge usa un dispositivo firewall in grado di controllare il traffico in uscita in base ai nomi di dominio, ad esempio Firewall di Azure, verificare che le regole di rete in uscita e i nomi di dominio completi richiesti siano consentiti. - Se si limita l'ingresso al cluster, assicurarsi che le porte 9808 e 8095 siano aperte.
Ruoli
- Questo articolo utilizza il ruolo Key Vault Secrets Officer per consentire al tuo account di creare un segreto nella key vault.
- Nell'articolo per fornire l'accesso ad Azure Key Vault, l'identità utilizzata con
SecretProviderClassnecessita di Key Vault Certificate User per accedere akeyo aicertificatetipi di oggetto e di Key Vault Secrets User per accedere asecrettipo di oggetto.
Creare o aggiornare un cluster AKS
Creare un cluster AKS con il provider di Azure Key Vault per il supporto del Secrets Store CSI Driver.
Creare variabili usate nei comandi per creare un cluster del servizio Azure Kubernetes e Key Vault.
export RANDOM_STRING=$(printf '%05d%05d' "$RANDOM" "$RANDOM") export KEYVAULT_NAME=myKeyVault${RANDOM_STRING} export RESOURCE_GROUP=myResourceGroup export CLUSTER_NAME=myAKSCluster export LOCATION=eastus2I nomi di Azure Key Vault devono essere univoci a livello globale, alfanumerici, inclusi trattini e 3-24 caratteri. Il nome del Key Vault concatena il valore della variabile
KEYVAULT_NAMEcon la stringa di 10 caratteri della variabileRANDOM_STRING.Creare un gruppo di risorse di Azure usando il comando
az group create.az group create --name $RESOURCE_GROUP --location $LOCATIONCreare un cluster AKS con il provider di Azure Key Vault per la funzionalità del Secrets Store CSI Driver usando il comando
az aks createcon il parametro--enable-addons azure-keyvault-secrets-provider.Il
--enable-addonsparametro crea un'identità gestita assegnata dall'utente chiamataazurekeyvaultsecretsprovider-xxxxche è possibile usare per autenticarsi al Key Vault. L'identità gestita viene archiviata nel gruppo di risorse del nodo (MC_) e viene assegnata automaticamente al set di scalabilità di macchine virtuali. È 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à.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-addons azure-keyvault-secrets-provider \ --generate-ssh-keysSuggerimento
Se si intende utilizzare l'ID del carico di lavoro Microsoft Entra, il comando
az aks createdeve includere i parametri--enable-oidc-issuere--enable-workload-identity.
Verificare l'identità gestita
Usare la procedura seguente per verificare che l'identità gestita sia stata creata e assegnata al set di scalabilità di macchine virtuali del cluster.
Verificare che l'identità gestita sia stata creata e assegnata al cluster usando il
az aks showcomando .az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query addonProfiles{ "azureKeyvaultSecretsProvider": { "config": { "enableSecretRotation": "false", "rotationPollInterval": "2m" }, "enabled": true, "identity": { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "resourceId": "/subscriptions/<subscriptionID>/resourcegroups/MC_myResourceGroup_myAKSCluster_eastus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/azurekeyvaultsecretsprovider-myakscluster" } } }La proprietà
resourceIdmostra il gruppo di risorse e il nome dell'identitàazurekeyvaultsecretsprovider-myakscluster.Verificare che l'identità gestita sia assegnata al set di scalabilità di macchine virtuali del gruppo di risorse del nodo.
NODE_RG=$(az aks show \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --query nodeResourceGroup --output tsv) VMSS_NAME=$(az vmss list \ --resource-group $NODE_RG \ --query [].name --output tsv) az vmss show --name $VMSS_NAME --resource-group $NODE_RG --query '[id, identity]'L'output mostra l'ID risorsa del set di scalabilità delle macchine virtuali
Microsoft.Compute/virtualMachineScaleSetse la proprietàuserAssignedIdentitiescon un ID risorsa perazurekeyvaultsecretsprovider-myaksclusterche conferma l'assegnazione dell'identità al set di scalabilità delle macchine virtuali.
Verificare il provider di Azure Key Vault per l'installazione del Secrets Store CSI Driver.
Ottenere le credenziali del cluster del servizio Azure Kubernetes usando il comando
az aks get-credentials.az aks get-credentials \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUPVerificare che l'installazione sia terminata usando il comando
kubectl get pods, che elenca tutti i pod con le etichettesecrets-store-csi-driveresecrets-store-provider-azurenello spazio dei nomikube-system.kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)' -o wideIl flag
o wideinclude il nodo in cui è in esecuzione ogni pod nell'output.L'output dovrebbe essere simile all'esempio di output seguente:
NAME READY STATUS RESTARTS AGE NODE aks-secrets-store-csi-driver-4vpkj 3/3 Running 2 4m25s aks-nodepool1-12345678-vmss000002 aks-secrets-store-csi-driver-ctjq6 3/3 Running 2 4m21s aks-nodepool1-12345678-vmss000001 aks-secrets-store-csi-driver-tlvlq 3/3 Running 2 4m24s aks-nodepool1-12345678-vmss000000 aks-secrets-store-provider-azure-5p4nb 1/1 Running 0 4m21s aks-nodepool1-12345678-vmss000000 aks-secrets-store-provider-azure-6pqmv 1/1 Running 0 4m24s aks-nodepool1-12345678-vmss000001 aks-secrets-store-provider-azure-f5qlm 1/1 Running 0 4m25s aks-nodepool1-12345678-vmss000002
Creare o usare un Azure Key Vault 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 comando az keyvault update con il flag --enable-rbac-authorization.
Il controllo degli accessi in base al ruolo di Azure è abilitato per impostazione predefinita quando si crea un nuovo insieme di credenziali anche se non si include il parametro --enable-rbac-authorization. Il parametro è necessario quando si aggiorna un insieme di credenziali delle chiavi esistente con il controllo degli accessi in base al ruolo di Azure disabilitato.
Per ulteriori informazioni sui modelli di autorizzazione di Key Vault 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
Abilitare l'autorizzazione a livello di Azure RBAC per un nuovo insieme di credenziali o aggiornare un insieme di credenziali esistente.
Eseguire il comando
az keyvault createper creare un nuovo insieme di credenziali delle chiavi con il controllo degli accessi in base al ruolo di Azure abilitato.az keyvault create \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --enable-rbac-authorizationEseguire il comando
az keyvault showper verificare che il Key Vault abbia Azure RBAC abilitato.az keyvault show \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.enableRbacAuthorizationL'output deve essere
true.Aggiungi un'assegnazione di ruolo per l'account utente all'ambito del Key Vault usando il comando
az role assignment createin modo da poter aggiungere un segreto del Key Vault nel passaggio successivo.Il ruolo Responsabile dei Segreti di Key Vault con identificatore univoco
b86a8fe4-44ce-4948-aee5-eccb2c155cd7viene aggiunto ed è possibile utilizzare il nome o l'identificatore univoco. L'uso dell'identificatore univoco del ruolo è una procedura consigliata per evitare problemi se il nome dei ruoli cambia.KEYVAULT_ID=$(az keyvault show \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --query id -o tsv) MYID=$(az ad signed-in-user show --query id --output tsv) az role assignment create \ --assignee-object-id $MYID \ --role "b86a8fe4-44ce-4948-aee5-eccb2c155cd7" \ --scope $KEYVAULT_ID \ --assignee-principal-type UserL'applicazione dell'assegnazione di ruolo può richiedere alcuni minuti. È possibile verificare che l'assegnazione di ruolo sia stata creata con il comando seguente:
az role assignment list \ --assignee-object-id $MYID \ --scope $KEYVAULT_ID \ --query '[].{Role:roleDefinitionName, Scope:scope}' \ --output tableCreare un segreto di testo in chiaro denominato
ExampleSecretnell'archivio delle chiavi usando il comandoaz keyvault secret set.Il tuo archivio di chiavi può conservare chiavi, segreti e certificati. Il
valueparametro usa laRANDOM_STRINGvariabile per creare un valore univoco per il segreto.az keyvault secret set \ --vault-name $KEYVAULT_NAME \ --name ExampleSecret \ --value MyAKSExampleSecret${RANDOM_STRING}Verificare che il segreto sia stato aggiunto al Key Vault usando il comando
az keyvault secret show.az keyvault secret show --vault-name $KEYVAULT_NAME --name ExampleSecret
Pulire le risorse
Se si intende passare all'articolo successivo e sono necessarie queste risorse, ignorare i passaggi seguenti. In caso contrario, se non si prevede di continuare con l'articolo successivo, è necessario eliminare le risorse create in questo articolo per evitare costi non necessari.
Rimuovi le credenziali del tuo cluster dal file locale .kube/config.
KUBE_CONTEXT=$(kubectl config current-context) kubectl config delete-context $KUBE_CONTEXTEliminare il gruppo di risorse e tutte le risorse al suo interno, incluse le risorse nel gruppo di risorse del nodo (
MC_) usando ilaz group deletecomando .az group delete --name $RESOURCE_GROUP --yes --no-wait
Passaggi successivi
In questo articolo, hai imparato come usare il provider di Azure Key Vault per Secrets Store CSI Driver in un cluster AKS (Azure Kubernetes Service). È ora necessario fornire un'identità per accedere ad Azure Key Vault. Per informazioni su come, continuare con l'articolo successivo.