Как добавить KMS в кластер Azure Kubernetes Service

В Azure Kubernetes Service появилась интеграция плагина Key Management System (KMS), который позволяет шифровать остальные данные Kubernetes в etcd с помощью Azure Key Vault. Теперь мы можем хранить секреты в зашифрованном etcd с помощью KMS.

KMS Plugin для Key Vault — это рекомендованное предпочтение использованию стороннего инструмента для управления ключами. Плагин KMS упрощает ротацию ключей, при этом новый ключ шифрования данных (DEK) генерируется для каждого шифрования, а ротация ключей шифрования (KEK) контролируется пользователем.

Функции

  • Используйте ключ из хранилища ключей.
  • Приносить свои собственные ключи.
  • Обеспечение шифрования в состоянии покоя для секретов, хранящихся в etcd.

Необходимые условия

  • Подписка на Azure. Мы можем создать бесплатную учетную запись, если у нас нет подписки.
  • Установлен Azure CLI.

Установите aks-preview Azure CLI.

Нам также нужно расширение aks-preview Azure CLI версии 0.5.58 или более поздней. Установите расширение aks-preview Azure CLI с помощью команды az extension add или установите все доступные обновления с помощью команды az extension update.

# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Вход в полноэкранный режим Выйдите из полноэкранного режима

Зарегистрируйте функцию предварительного просмотра AzureKeyVaultKmsPreview.

Чтобы использовать эту функцию, мы должны также включить флаг функции AzureKeyVaultKmsPreview в нашей подписке.

Зарегистрируйте флаг функции AzureKeyVaultKmsPreview с помощью команды az feature register, как показано в следующем примере:

az feature register --namespace "Microsoft.ContainerService" --name "AzureKeyVaultKmsPreview"
Вход в полноэкранный режим Выход из полноэкранного режима

Потребуется несколько минут для отображения статуса Зарегистрирован. Проверьте статус регистрации с помощью команды az feature list:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AzureKeyVaultKmsPreview')].{Name:name,State:properties.state}"
Enter fullscreen mode Выйти из полноэкранного режима

Когда все будет готово, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью команды az provider register:

az provider register --namespace Microsoft.ContainerService
Войти в полноэкранный режим Выйти из полноэкранного режима

Ограничения

При интеграции шифрования KMS etcd с AKS наблюдаются следующие препятствия:

  • Функция шифрования KMS etcd отключена.

  • Изменение идентификатора ключа, включая имя ключа и версию ключа.

  • Ключевое хранилище или связанная с ним идентификация могут быть удалены.

  • System-Assigned Managed Identity не работает с шифрованием KMS etcd. Перед включением функции необходимо установить политику доступа к хранилищу ключей. System-Assigned Managed Identity недоступна до создания кластера.

  • PrivateLink включается при использовании хранилища ключей azure.

  • В кластере более 2000 секретов.

  • Имеется управляемая поддержка hsm.

  • Вы можете принести собственное хранилище ключей от другого арендатора.

Создание хранилища ключей и ключа

Используйте команду az keyvault create для создания хранилища ключей.

az keyvault create --name kcdchennaikv --resource-group kcdchennairg
Вход в полноэкранный режим Выход из полноэкранного режима

Используйте az keyvault key create для создания ключа.

az keyvault key create --name kcdchennaikey --vault-name kcdchennaikv
Войти в полноэкранный режим Выход из полноэкранного режима

Используйте az keyvault key show для экспорта идентификатора ключа.

export KEY_ID=$(az keyvault key show --name kcdchennaikey --vault-name kcdchennaikv --query 'key.kid' -o tsv)
echo $KEY_ID
Войти в полноэкранный режим Выход из полноэкранного режима

В приведенном выше примере идентификатор ключа хранится в KEY_ID.

Создание управляемой идентификации, назначенной пользователем

Используйте команду az identity create для создания управляемой идентификации, назначенной пользователем.

az identity create --name kcdidentity --resource-group kcdchennairg
Вход в полноэкранный режим Выход из полноэкранного режима

Используйте az identity show для получения идентификатора объекта идентификации.

IDENTITY_OBJECT_ID=$(az identity show --name kcdidentity --resource-group kcdchennairg --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID
Войти в полноэкранный режим Выход из полноэкранного режима

В приведенном выше примере значение идентификатора объекта идентификации хранится в IDENTITY_OBJECT_ID.

Используйте az identity show для получения Identity Resource ID.

IDENTITY_RESOURCE_ID=$(az identity show --name kcdidentity --resource-group kcdchennairg --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID

Вход в полноэкранный режим Выход из полноэкранного режима

В приведенном выше примере значение идентификатора ресурса идентичности хранится в IDENTITY_RESOURCE_ID.

Назначение разрешений (расшифровка и шифрование) для доступа к хранилищу ключей

Используйте az keyvault set-policy для создания политики Azure KeyVault.

az keyvault set-policy -n kcdchennaikv --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID
Вход в полноэкранный режим Выход из полноэкранного режима

Создание кластера AKS с включенным шифрованием KMS etcd

Создайте кластер AKS с помощью команды az aks create с параметрами --enable-azure-keyvault-kms и --azure-keyvault-kms-key-id для включения шифрования KMS etcd.

az aks create --name kcdchnakscluster --resource-group kcdchennairg --assign-identity $IDENTITY_RESOURCE_ID --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $KEY_ID
Вход в полноэкранный режим Выход из полноэкранного режима

Обновление выходящего кластера AKS для включения шифрования KMS etcd

Используйте az aks update с параметрами --enable-azure-keyvault-kms и --azure-keyvault-kms-key-id для включения шифрования KMS etcd на существующем кластере.

az aks update --name kcdchnakscluster --resource-group kcdchennairg --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $KEY_ID
Вход в полноэкранный режим Выход из полноэкранного режима

Используйте команду beneath для обновления всех секретов. В противном случае старые секреты не будут зашифрованы.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Войти в полноэкранный режим Выйти из полноэкранного режима

Более подробные сведения об использовании плагина KMS см. в разделе Шифрование секретных данных в состоянии покоя.

Примечание

Эта функция находится на стадии предварительного просмотра. Функции предварительного просмотра доступны в AKS на основе самообслуживания. Предварительные версии не включены в соглашения об уровне обслуживания и ограниченную гарантию. Предварительные версии AKS частично покрываются поддержкой клиентов. Эти функции не предназначены для производственного использования.

Спасибо, что дочитали мою статью до конца. Надеюсь, сегодня вы узнали что-то необычное. Если вам понравилась эта статья, пожалуйста, поделитесь с друзьями, а если у вас есть советы или мысли, которыми вы хотите поделиться со мной, пожалуйста, напишите в поле для комментариев.

Этот блог представлен в рамках ‘Devtron Blogathon 2022’ — https://devtron.ai/.
Загляните в GitHub-репо Devtron — https://github.com/devtron-labs/devtron/ и поставьте ⭐ в знак любви и поддержки.
Следите за Devtron на LinkedIn — https://www.linkedin.com/company/devtron-labs/ и Twitter — https://twitter.com/DevtronL/, чтобы быть в курсе новостей этого проекта с открытым исходным кодом.

Оцените статью
Procodings.ru
Добавить комментарий