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

Creare un cluster del servizio Azure Kubernetes con il provider di Azure Key Vault per il supporto del driver CSI dell'archivio segreti

  1. Creare un gruppo di risorse di Azure usando il comando az group create.

    az group create --name myResourceGroup --location eastus2
    
  2. 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 con il az aks create parametro --enable-managed-identity e il --enable-addons azure-keyvault-secrets-provider parametro . 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
    
    az aks create --name myAKSCluster --resource-group myResourceGroup --enable-managed-identity --enable-addons azure-keyvault-secrets-provider
    
  3. 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 identity named azurekeyvaultsecretsprovider-xxx gestito nel gruppo di risorse del nodo e lo assegna automaticamente ai 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à.

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 aggiuntivo 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.

    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 identity named azurekeyvaultsecretsprovider-xxx gestito nel gruppo di risorse del nodo e lo assegna automaticamente ai 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à.

Verificare il provider di Azure Key Vault per l'installazione del driver CSI dell'archivio segreti

  1. Verificare che l'installazione sia terminata usando il comando kubectl get pods, che elenca tutti i pod con le etichette secrets-store-csi-driver e secrets-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
    
  2. 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

  1. 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 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
    
  2. 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 denominato ExampleSecret.

    az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
    
  3. 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.