Usar o provedor do Cofre da Chave do Azure para o Driver CSI do Repositório de Segredos em um cluster do Serviço Kubernetes do Azure (AKS)

O provedor do Azure Key Vault for Secrets Store CSI Driver permite a integração de um Azure Key Vault como um armazenamento secreto com um cluster do Azure Kubernetes Service (AKS) por meio de um volume CSI.

Funcionalidades

  • Monta segredos, chaves e certificados em um pod usando um volume CSI.
  • Suporta volumes em linha CSI.
  • Suporta a montagem de vários objetos de armazenamento de segredos como um único volume.
  • Suporta portabilidade de pod com o SecretProviderClass CRD.
  • Suporta contêineres do Windows.
  • Sincroniza com segredos do Kubernetes.
  • Suporta autorotação de conteúdos montados e segredos sincronizados do Kubernetes.

Limitações

Um contêiner usando a montagem de volume do subPath não recebe atualizações secretas quando é girado. Para obter mais informações, consulte Limitações conhecidas do driver CSI do Secrets Store.

Pré-requisitos

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Verifique se a sua versão da CLI do Azure é 2.30.0 ou posterior. Se for uma versão anterior, instale a versão mais recente.
  • Se você estiver restringindo a Entrada ao cluster, verifique se as portas 9808 e 8095 estão abertas.
  • A versão mínima recomendada do Kubernetes é baseada na janela de suporte à versão contínua do Kubernetes. Certifique-se de que está a executar a versão N-2 ou posterior.

Criar um cluster AKS com o provedor do Azure Key Vault para suporte ao Driver CSI do Secrets Store

  1. Crie um grupo de recursos do Azure usando o az group create comando.

    az group create --name myResourceGroup --location eastus2
    
  2. Crie um cluster AKS com o provedor do Azure Key Vault para o recurso de Driver CSI do Secrets Store usando o az aks create comando com o --enable-addons azure-keyvault-secrets-provider parâmetro. O complemento cria uma identidade gerenciada atribuída pelo usuário que você pode usar para autenticar no cofre de chaves. O exemplo a seguir cria um cluster AKS com o provedor do Azure Key Vault para o Driver CSI do Secrets Store habilitado.

    Nota

    Se você quiser usar o ID de carga de trabalho do Microsoft Entra, também deverá usar os --enable-oidc-issuer parâmetros e --enable-workload-identity , como no exemplo a seguir:

    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. O comando anterior cria uma identidade gerenciada atribuída pelo usuário, azureKeyvaultSecretsProvider, para acessar recursos do Azure. O exemplo a seguir usa essa identidade para se conectar ao cofre de chaves que armazena os segredos, mas você também pode usar outros métodos de acesso de identidade. Anote as identidades clientId na saída.

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

Nota

Depois de ativar esse recurso, o AKS cria uma identidade gerenciada nomeada azurekeyvaultsecretsprovider-xxx no grupo de recursos do nó e a atribui automaticamente aos Conjuntos de Escala de Máquina Virtual (VMSS). Você pode usar essa identidade gerenciada ou sua própria identidade gerenciada para acessar o cofre de chaves. Não é suportado para impedir a criação da identidade.

Atualizar um cluster AKS existente com o provedor do Azure Key Vault para suporte ao Driver CSI do Secrets Store

  • Atualize um cluster AKS existente com o provedor do Azure Key Vault para o recurso de Driver CSI do Secrets Store usando o az aks enable-addons comando e habilite o complemento azure-keyvault-secrets-provider . O complemento cria uma identidade gerenciada atribuída pelo usuário que você pode usar para autenticar no cofre de chaves.

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

Nota

Depois de ativar esse recurso, o AKS cria uma identidade gerenciada nomeada azurekeyvaultsecretsprovider-xxx no grupo de recursos do nó e a atribui automaticamente aos Conjuntos de Escala de Máquina Virtual (VMSS). Você pode usar essa identidade gerenciada ou sua própria identidade gerenciada para acessar o cofre de chaves. Não é suportado para impedir a criação da identidade.

Verifique o provedor do Azure Key Vault para a instalação do Driver CSI do Secrets Store

  1. Obtenha as credenciais do cluster AKS usando o comando [az aks get-credentials[az-aks-get-credentials].

    az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
    
  2. Verifique se a instalação foi concluída usando o kubectl get pods comando, que lista todos os pods com os secrets-store-csi-driver rótulos e secrets-store-provider-azure no namespace kube-system.

    kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)'
    

    Sua saída deve ser semelhante à saída de exemplo a seguir:

    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. Verifique se cada nó no pool de nós do cluster tem um pod de Driver CSI do Repositório de Segredos e um pod do Azure do Provedor de Repositório de Segredos em execução.

Criar ou usar um Cofre da Chave do Azure existente

  1. Crie ou atualize um cofre de chaves com o controle de acesso baseado em função do Azure (Azure RBAC) habilitado usando o az keyvault create comando ou o az keyvault update comando com o --enable-rbac-authorization sinalizador. O nome do cofre de chaves deve ser globalmente exclusivo. Para obter mais detalhes sobre modelos de permissão de cofre de chaves e RBAC do Azure, consulte Fornecer acesso a chaves, certificados e segredos do Cofre de Chaves com um controle de acesso baseado em função do 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. Seu cofre de chaves pode armazenar chaves, segredos e certificados. Neste exemplo, use o az keyvault secret set comando para definir um segredo de texto simples chamado ExampleSecret.

    az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
    
  3. Tome nota das seguintes propriedades para uso futuro:

    • O nome do objeto secreto no cofre de chaves
    • O tipo de objeto (segredo, chave ou certificado)
    • O nome do recurso do cofre da chave
    • A ID do locatário do Azure da assinatura

Próximos passos

Neste artigo, você aprendeu como usar o provedor do Cofre de Chaves do Azure para o Driver CSI do Repositório de Segredos em um cluster AKS. Agora você precisa fornecer uma identidade para acessar o Cofre da Chave do Azure. Para saber como, continue para o próximo artigo.