Поделиться через


Использование провайдера Azure Key Vault для драйвера CSI хранилища секретов в кластере Azure Kubernetes Service (AKS)

Поставщик Azure Key Vault для драйвера CSI хранилища секретов позволяет интегрировать Azure Key Vault как хранилище секретов с кластером Azure Kubernetes Service (AKS) через том CSI.

Функции

  • Подключает секреты, ключи и сертификаты к pod с помощью тома CSI.
  • Поддерживает встроенные тома CSI.
  • Поддерживает монтирование нескольких объектов хранилища секретов в виде одного тома.
  • Поддерживает переносимость pod с помощью SecretProviderClass CRD.
  • Поддерживает контейнеры Windows.
  • Синхронизируется с секретами Kubernetes.
  • Поддерживает авторотацию подключенного содержимого и синхронизированных секретов Kubernetes.

Ограничения

Контейнер, использующий подключение тома subPath, не получает секретных обновлений при повороте. Дополнительные сведения см. в разделе "Известные ограничения для хранилища секретов CSI Driver".

Предварительные условия

Создание кластера AKS с помощью поставщика Azure Key Vault для поддержки драйвера CSI хранилища секретов

  1. Создайте группу ресурсов Azure с помощью az group create команды.

    az group create --name myResourceGroup --location eastus2
    
  2. Создайте кластер AKS с модулем Azure Key Vault для использования драйвера CSI для хранилища секретов с помощью команды az aks create с параметром --enable-addons azure-keyvault-secrets-provider. Надстройка создает управляемое удостоверение, назначаемое пользователем, которое можно использовать для аутентификации в вашем хранилище ключей. В следующем примере создается кластер AKS с включенной поддержкой Хранилища ключей Azure для драйвера CSI Хранилища секретов.

    Примечание.

    Если вы хотите использовать Microsoft Entra Workload ID, необходимо также использовать параметры --enable-oidc-issuer и --enable-workload-identity, например в следующем примере:

    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. Предыдущая команда создает управляемое удостоверение, назначаемое пользователем, azureKeyvaultSecretsProviderдля доступа к ресурсам Azure. В следующем примере используется это удостоверение для подключения к хранилищу ключей, в которой хранятся секреты, но также можно использовать другие методы доступа к удостоверениям. Обратите внимание на идентификатор clientId в выходных данных.

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

Примечание.

После включения этой функции AKS создает управляемое удостоверение с именем azurekeyvaultsecretsprovider-xxx в группе ресурсов узла AKS и автоматически назначает его наборам виртуальных машин с автоматическим масштабированием (VMSS). Это управляемое удостоверение или собственное управляемое удостоверение можно использовать для доступа к хранилищу ключей. Предотвращение создания удостоверения не поддерживается.

Обновление существующего кластера AKS с поддержкой драйвера CSI для хранилища секретов с помощью провайдера Azure Key Vault

  • Обновите существующий кластер AKS с помощью поставщика Azure Key Vault для возможности драйвера CSI хранилища секретов с помощью az aks enable-addons команды и включите надстройку azure-keyvault-secrets-provider . Надстройка создает назначенное пользователем управляемое удостоверение, которое вы можете использовать для аутентификации в вашем хранилище ключей.

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

Примечание.

После включения этой функции AKS создает управляемое удостоверение с именем azurekeyvaultsecretsprovider-xxx в группе ресурсов узла и автоматически назначает его для масштабируемых наборов виртуальных машин (VMSS). Это управляемое удостоверение или собственное управляемое удостоверение можно использовать для доступа к хранилищу ключей. Он не поддерживается, чтобы предотвратить создание удостоверения.

Проверьте драйвер CSI для хранилища секретов поставщика Azure Key Vault

  1. Получите учетные данные кластера AKS с помощью команды [az aks get-credentials][az-aks-get-credentials].

    az aks get-credentials --name myAKSCluster --resource-group myResourceGroup
    
  2. Убедитесь, что установка завершена, используя команду kubectl get pods, которая перечисляет все поды с метками secrets-store-csi-driver и secrets-store-provider-azure в пространстве имен kube-system.

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

    Выходные данные должны выглядеть примерно так:

    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. Убедитесь, что на каждом узле в пуле узлов вашего кластера запущены pod драйвера CSI Хранилища секретов и pod поставщика хранилища секретов Azure.

Создание или использование существующей службы Azure Key Vault

  1. Создайте или обновите хранилище ключей, включив управление доступом на основе ролей Azure (Azure RBAC), используя команду az keyvault create или команду az keyvault update с флагом --enable-rbac-authorization. Имя хранилища ключей должно быть уникальным в глобальном масштабе. Дополнительные сведения о моделях разрешений хранилища ключей и Azure RBAC см. в статье "Предоставление доступа к ключам Key Vault, сертификатам и секретам с помощью управления доступом на основе ролей 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. Хранилище ключей может хранить ключи, секреты и сертификаты. В этом примере используйте az keyvault secret set команду для задания нешифрованного текстового секрета ExampleSecret.

    az keyvault secret set --vault-name <keyvault-name> --name ExampleSecret --value MyAKSExampleSecret
    
  3. Запишите следующие свойства для дальнейшего использования:

    • Имя секретного объекта в хранилище ключей
    • Тип объекта (секрет, ключ или сертификат)
    • Имя ресурса хранилища ключей
    • Идентификатор клиента Azure подписки

Следующие шаги

Из этой статьи вы узнали, как использовать поставщика Azure Key Vault для CSI-драйвера для хранилища секретов в кластере AKS. Теперь необходимо предоставить удостоверение для доступа к Azure Key Vault. Чтобы узнать, как, перейдите к следующей статье.