Condividi tramite


Usa il provider Azure Key Vault per il driver CSI di Secrets Store in un cluster di Azure Kubernetes Service (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 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 ulteriori informazioni, vedere Limitazioni note di Secrets Store CSI Driver.

Prerequisiti

Creare un cluster AKS (Azure Kubernetes Service) con il provider di Azure Key Vault per il supporto del driver CSI Secrets Store

  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 AKS con il provider di Azure Key Vault per la funzionalità del Secrets Store CSI Driver 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 puoi utilizzare per autenticarti nel Key Vault. L'esempio seguente crea un cluster di Azure Kubernetes Service (AKS) con il provider di Azure Key Vault per il Secrets Store CSI Driver 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
    
  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 al key vault che archivia i segreti, ma è anche possibile usare altri metodi di accesso con identità. Prendere nota dell'identità clientId nell'output.

    ...,
     "addonProfiles": {
        "azureKeyvaultSecretsProvider": {
          ...,
          "identity": {
            "clientId": "<client-id>",
            ...
          }
        }
    

Nota

Dopo aver abilitato questa funzionalità, AKS crea un'identità gestita denominata azurekeyvaultsecretsprovider-xxx nel gruppo di risorse del nodo e la assegna automaticamente al 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 Azure Kubernetes Service (AKS) esistente con il provider Azure Key Vault per il supporto del Secrets Store CSI Driver.

  • 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 puoi utilizzare per autenticarti nel Key Vault.

    az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
    

Nota

Dopo aver abilitato questa funzionalità, AKS crea un'identità gestita denominata azurekeyvaultsecretsprovider-xxx nel gruppo di risorse del nodo e la assegna automaticamente al 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 Secrets Store CSI Driver.

  1. Ottenere le credenziali del cluster del servizio Azure Kubernetes usando il comando az aks get-credentials.

    az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
    
  2. 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
    
  3. 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 Azure Key Vault 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 ulteriori dettagli sui modelli di autorizzazione di Azure Key Vault e sul controllo degli accessi in base al ruolo di Azure, vedere Fornire accesso alle chiavi, ai certificati e ai segreti di Azure 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. Il tuo archivio di chiavi può conservare 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, 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.