Usare il provider di Azure Key Vault per il driver CSI dell'archivio segreti in un cluster servizio Azure Kubernetes (AKS)

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

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

    az group create -n myResourceGroup -l 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 az aks create comando e abilitare il azure-keyvault-secrets-provider componente aggiuntivo.

    Nota

    Se si vuole usare ID dei carichi di lavoro di Microsoft Entra, è necessario usare anche i --enable-oidc-issuer parametri e --enable-workload-identity , ad esempio nell'esempio seguente:

    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. Il componente aggiuntivo 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>",
            ...
          }
        }
    

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 azure-keyvault-secrets-provider componente aggiuntivo. 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
    

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 kubectl get pods comando , che elenca tutti i pod con le secrets-store-csi-driver etichette 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'output di esempio 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 az keyvault create comando o il az keyvault update comando con il --enable-rbac-authorization flag . 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 -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. L'insieme di credenziali delle chiavi può archiviare chiavi, segreti e certificati. In questo esempio usare il az keyvault secret set comando per impostare un segreto di testo normale denominato ExampleSecret.

    az keyvault secret set --vault-name <keyvault-name> -n ExampleSecret --value MyAKSExampleSecret
    
  3. Prendere nota delle proprietà seguenti per un uso futuro:

    • Nome dell'oggetto segreto nell'insieme di credenziali delle chiavi
    • 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.