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

Поставщик Azure Key Vault для драйвера CSI хранилища секретов позволяет интегрировать Azure Key Vault в качестве хранилища секретов с кластером Служба Azure Kubernetes (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-managed-identity и параметром --enable-addons azure-keyvault-secrets-provider . Надстройка создает управляемое удостоверение, назначаемое пользователем, можно использовать для проверки подлинности в хранилище ключей. В следующем примере создается кластер AKS с включенным поставщиком Azure Key Vault для драйвера CSI хранилища секретов.

    Примечание.

    Если вы хотите использовать Идентификация рабочей нагрузки Microsoft Entra, необходимо также использовать --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
    
    az aks create --name myAKSCluster --resource-group myResourceGroup --enable-managed-identity --enable-addons azure-keyvault-secrets-provider
    
  3. Предыдущая команда создает управляемое удостоверение, назначаемое пользователем, azureKeyvaultSecretsProviderдля доступа к ресурсам Azure. В следующем примере используется это удостоверение для подключения к хранилищу ключей, в которой хранятся секреты, но также можно использовать другие методы доступа к удостоверениям. Запишите идентификатор clientId в выходных данных.

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

Примечание.

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

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

  • Обновите существующий кластер 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 создает управляемый identity named azurekeyvaultsecretsprovider-xxx в группе ресурсов узла и автоматически назначает его Масштабируемые наборы виртуальных машин (VMSS). Это управляемое удостоверение или собственное управляемое удостоверение можно использовать для доступа к хранилищу ключей. Он не поддерживается, чтобы предотвратить создание удостоверения.

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

  1. Убедитесь, что установка завершена с помощью kubectl get pods команды, в которой перечислены все модули pod с 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
    
  2. Убедитесь, что каждый узел в пуле узлов кластера содержит 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. Чтобы узнать, как, перейдите к следующей статье.