Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment activer le chiffrement des données KMS (Key Management Service) pour les secrets Kubernetes dans Azure Kubernetes Service (AKS). Le chiffrement KMS chiffre les secrets Kubernetes stockés dans etcd à l’aide de clés Azure Key Vault.
AKS prend en charge deux options de gestion clés :
- Clés gérées par la plateforme (PMK) : AKS crée et gère automatiquement les clés de chiffrement. Cette option fournit la configuration la plus simple avec la rotation automatique des clés.
- Clés gérées par le client (CMK) : vous créez et gérez vos propres clés Azure Key Vault et de chiffrement. Cette option offre un contrôle total sur le cycle de vie des clés et répond aux exigences de conformité qui imposent des clés gérées par le client.
Pour plus d’informations sur les concepts de chiffrement et les options clés, consultez les concepts de chiffrement au repos des données pour AKS.
Important
Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les versions d'essai sont fournies « en l’état » et « selon disponibilité », et elles sont exclues des contrats de niveau de service et de la garantie limitée. Les versions préliminaires AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Par conséquent, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :
Prerequisites
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.
Si vous préférez exécuter des commandes de référence CLI localement, installez Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Comment exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour terminer le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour obtenir d’autres options de connexion, consultez S’authentifier auprès d’Azure à l’aide d’Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet article nécessite la version 2.73.0 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, sachez que la dernière version y est déjà installée.
- Vous avez besoin de l’extension
aks-previewAzure CLI version 19.0.0b13 ou ultérieure.- Si vous n’avez pas encore l’extension
aks-preview, installez-la en utilisant la commandeaz extension add.az extension add --name aks-preview - Si vous disposez déjà de l’extension
aks-preview, mettez-la à jour pour vous assurer que vous disposez de la dernière version en utilisant la commandeaz extension update.az extension update --name aks-preview
- Si vous n’avez pas encore l’extension
-
kubectlOutil CLI installé.
Inscrire l’indicateur de fonctionnalité
Pour utiliser le chiffrement des données KMS avec des clés gérées par la plateforme, inscrivez l’indicateur de KMSPMKPreview fonctionnalité dans votre abonnement.
Inscrivez l’indicateur de fonctionnalité à l’aide de la
az feature registercommande.az feature register --namespace Microsoft.ContainerService --name KMSPMKPreviewVérifiez l’état de l’inscription en utilisant la commande
az feature show. Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit).az feature show --namespace Microsoft.ContainerService --name KMSPMKPreviewLorsque l’état indique Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la
az provider registercommande.az provider register --namespace Microsoft.ContainerService
Définir les variables d’environnement
Configurez des variables d’environnement pour votre déploiement. Remplacez les valeurs d’espace réservé par vos propres valeurs.
# Set environment variables
export SUBSCRIPTION_ID="<your-subscription-id>"
export RESOURCE_GROUP="<your-resource-group>"
export LOCATION="<your-location>"
export CLUSTER_NAME="<your-cluster-name>"
# Set subscription
az account set --subscription $SUBSCRIPTION_ID
# Create resource group if it doesn't exist
az group create --name $RESOURCE_GROUP --location $LOCATION
Activer le chiffrement de clé gérée par la plateforme
Avec les clés gérées par la plateforme, AKS crée et gère automatiquement les clés Azure Key Vault et de chiffrement. La rotation des clés est gérée automatiquement par la plateforme.
Créer un cluster AKS avec des clés gérées par la plateforme
Créez un cluster AKS avec chiffrement KMS à l’aide de clés gérées par la plateforme.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--generate-ssh-keys
Activer des clés gérées par la plateforme sur un cluster existant
Activez le chiffrement KMS avec des clés gérées par la plateforme sur un cluster AKS existant.
Note
Le cluster doit exécuter Kubernetes version 1.33 ou ultérieure.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled
Activer le chiffrement de clé géré par le client avec un coffre de clés privé
Pour renforcer la sécurité, vous pouvez utiliser un coffre de clés privé dont l’accès au réseau public est désactivé. AKS accède au coffre de clés privé via l’exception de pare-feu des services approuvés. Cette section montre comment configurer des clés gérées par le client avec un coffre de clés privé.
Créer un coffre de clés et une clé avec accès aux services approuvés
Note
Cette section illustre la création d'un coffre de clés avec un accès initial au réseau public, puis l'activation du pare-feu avec contournement des services approuvés. Cette approche est à des fins d’illustration uniquement. Dans les environnements de production, vous devez créer et gérer votre coffre de clés en tant que privé dès le début. Pour obtenir des conseils sur la gestion des coffres de clés privés, consultez la sécurité réseau d’Azure Key Vault.
Créez un coffre de clés avec Azure RBAC activé.
export KEY_VAULT_NAME="<your-key-vault-name>" az keyvault create \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --enable-rbac-authorization true \ --public-network-access Enabled # Get the key vault resource ID export KEY_VAULT_RESOURCE_ID=$(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id -o tsv)Attribuez-vous le rôle Agent de chiffrement Key Vault pour créer une clé.
az role assignment create \ --role "Key Vault Crypto Officer" \ --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \ --assignee-principal-type "User" \ --scope $KEY_VAULT_RESOURCE_IDCréez une clé dans le coffre de clés.
export KEY_NAME="<your-key-name>" az keyvault key create --name $KEY_NAME --vault-name $KEY_VAULT_NAME # Get the key ID (without version for automatic rotation) export KEY_ID=$(az keyvault key show --name $KEY_NAME --vault-name $KEY_VAULT_NAME --query 'key.kid' -o tsv) export KEY_ID_NO_VERSION=$(echo $KEY_ID | sed 's|/[^/]*$||')Activez le pare-feu key vault avec le contournement des services approuvés.
az keyvault update \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --default-action Deny \ --bypass AzureServicesLe
--default-action Denyparamètre bloque l’accès au réseau public et le--bypass AzureServicesparamètre permet aux services Azure approuvés (y compris AKS) d’accéder au coffre de clés.
Créer une identité managée attribuée par l’utilisateur
Créez une identité managée affectée par l’utilisateur pour le cluster.
export IDENTITY_NAME="<your-identity-name>" az identity create --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP # Get the identity details export IDENTITY_OBJECT_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'principalId' -o tsv) export IDENTITY_RESOURCE_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'id' -o tsv)Attribuez les rôles requis à l’identité managée.
# Assign Key Vault Crypto User role for encrypt/decrypt operations az role assignment create \ --role "Key Vault Crypto User" \ --assignee-object-id $IDENTITY_OBJECT_ID \ --assignee-principal-type "ServicePrincipal" \ --scope $KEY_VAULT_RESOURCE_ID # Assign Key Vault Contributor role for key management az role assignment create \ --role "Key Vault Contributor" \ --assignee-object-id $IDENTITY_OBJECT_ID \ --assignee-principal-type "ServicePrincipal" \ --scope $KEY_VAULT_RESOURCE_ID
Créer un cluster AKS avec des clés gérées par le client (privées)
Créez un cluster AKS avec chiffrement KMS à l’aide de clés gérées par le client avec un coffre de clés privé.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-id $KEY_ID_NO_VERSION \
--azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID \
--azure-keyvault-kms-key-vault-network-access Private \
--assign-identity $IDENTITY_RESOURCE_ID \
--generate-ssh-keys
Activer les clés gérées par le client sur un cluster existant (privé)
Activez le chiffrement KMS avec des clés gérées par le client à l’aide d’un coffre de clés privé sur un cluster AKS existant.
Note
Le cluster doit exécuter Kubernetes version 1.33 ou ultérieure.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-id $KEY_ID_NO_VERSION \
--azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID \
--azure-keyvault-kms-key-vault-network-access Private \
--assign-identity $IDENTITY_RESOURCE_ID
Activer le chiffrement de clé géré par le client avec un coffre de clés public
Avec les clés gérées par le client, vous créez et gérez vos propres clés Azure Key Vault et de chiffrement. Cette section montre comment configurer des clés gérées par le client avec un coffre de clés public.
Créer un coffre de clés et une clé
Créez un coffre de clés avec Azure RBAC activé.
export KEY_VAULT_NAME="<your-key-vault-name>" az keyvault create \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --enable-rbac-authorization true \ --public-network-access Enabled # Get the key vault resource ID export KEY_VAULT_RESOURCE_ID=$(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id -o tsv)Attribuez-vous le rôle Agent de chiffrement Key Vault pour créer une clé.
az role assignment create \ --role "Key Vault Crypto Officer" \ --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \ --assignee-principal-type "User" \ --scope $KEY_VAULT_RESOURCE_IDCréez une clé dans le coffre de clés.
export KEY_NAME="<your-key-name>" az keyvault key create --name $KEY_NAME --vault-name $KEY_VAULT_NAME # Get the key ID (without version for automatic rotation) export KEY_ID=$(az keyvault key show --name $KEY_NAME --vault-name $KEY_VAULT_NAME --query 'key.kid' -o tsv) export KEY_ID_NO_VERSION=$(echo $KEY_ID | sed 's|/[^/]*$||')
Créer une identité managée attribuée par l’utilisateur
Créez une identité managée affectée par l’utilisateur pour le cluster.
export IDENTITY_NAME="<your-identity-name>" az identity create --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP # Get the identity details export IDENTITY_OBJECT_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'principalId' -o tsv) export IDENTITY_RESOURCE_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'id' -o tsv)Attribuez les rôles requis à l’identité managée.
# Assign Key Vault Crypto User role for encrypt/decrypt operations az role assignment create \ --role "Key Vault Crypto User" \ --assignee-object-id $IDENTITY_OBJECT_ID \ --assignee-principal-type "ServicePrincipal" \ --scope $KEY_VAULT_RESOURCE_ID # Assign Key Vault Contributor role for key management az role assignment create \ --role "Key Vault Contributor" \ --assignee-object-id $IDENTITY_OBJECT_ID \ --assignee-principal-type "ServicePrincipal" \ --scope $KEY_VAULT_RESOURCE_ID
Créer un cluster AKS avec des clés gérées par le client
Créez un cluster AKS avec chiffrement KMS à l’aide de clés gérées par le client.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-id $KEY_ID_NO_VERSION \
--azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID \
--azure-keyvault-kms-key-vault-network-access Public \
--assign-identity $IDENTITY_RESOURCE_ID \
--generate-ssh-keys
Activer les clés gérées par le client sur un cluster existant
Activez le chiffrement KMS avec des clés gérées par le client sur un cluster AKS existant.
Note
Le cluster doit exécuter Kubernetes version 1.33 ou ultérieure.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-id $KEY_ID_NO_VERSION \
--azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID \
--azure-keyvault-kms-key-vault-network-access Public \
--assign-identity $IDENTITY_RESOURCE_ID
Vérifier la configuration KMS
Après avoir activé le chiffrement KMS, vérifiez la configuration.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
La sortie inclut la configuration KMS :
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Public",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Migrer entre les options de gestion des clés
Vous pouvez migrer entre les clés gérées par la plateforme et les clés gérées par le client.
Migrer des clés gérées par la plateforme vers des clés gérées par le client
Pour migrer des clés gérées par la plateforme vers des clés gérées par le client, commencez par configurer le coffre de clés, la clé et l’identité managée, comme décrit dans la section clés gérées par le client, puis exécutez la commande de mise à jour :
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-id $KEY_ID_NO_VERSION \
--azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID \
--azure-keyvault-kms-key-vault-network-access Public \
--assign-identity $IDENTITY_RESOURCE_ID
Migrer des clés gérées par le client vers des clés gérées par la plateforme
Pour migrer des clés gérées par le client vers des clés gérées par la plateforme :
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--disable-azure-keyvault-kms
Rotation des clés
Avec le chiffrement des données KMS, la rotation des clés est gérée différemment en fonction de votre option de gestion des clés :
- Clés gérées par la plateforme : la rotation des clés est automatique. Aucune action n’est requise.
- Clés gérées par le client : lorsque vous faites pivoter la version de clé dans Azure Key Vault, le contrôleur KMS détecte régulièrement la rotation (toutes les 6 heures) et utilise la nouvelle version de la clé.
Note
Contrairement à l’expérience KMS héritée, avec cette nouvelle implémentation, vous n’avez pas besoin de chiffrer manuellement les secrets après la rotation des clés. La plateforme gère cela automatiquement.