Notes
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.
Azure chiffre toutes les données dans un disque managé au repos. Par défaut, les données sont chiffrées avec des clés managées par Microsoft Pour plus de contrôle sur les clés de chiffrement, vous pouvez fournir des clés gérées par le client à utiliser pour le chiffrement au repos des disques de système d’exploitation et des disques de données pour vos clusters AKS.
En savoir plus sur les clés gérées par le client sur Linux et Windows.
Prérequis
- Vous devez activer la suppression réversible et la protection contre le vidage pour Azure Key Vault lors de l’utilisation de Key Vault pour chiffrer des disques managés.
- Vous devez disposer d’Azure CLI 2.11.1 ou d’un version ultérieure.
- Le chiffrement de disque de données et les clés gérées par le client sont pris en charge sur Kubernetes versions 1.24 et ultérieures.
- Si vous choisissez de faire pivoter (modifier) régulièrement vos clés, consultez Clés gérées par le client et chiffrement du disque managé Azure pour plus d’informations.
Limites
Le chiffrement d’un disque de système d’exploitation avec des clés managées par le client ne peut être activé que lors de la création d’un cluster AKS.
Les nœuds virtuels ne sont pas pris en charge.
Lorsque vous chiffrez un pool de nœuds avec disque de système d’exploitation éphémère avec des clés gérées par le client, si vous souhaitez faire pivoter la clé dans Azure Key Vault, il existe deux options à prendre en compte :
Utilisation immédiate de la nouvelle clé CMK
- Réduisez le nombre de groupes de nœuds à 0.
- Faites pivoter la touche.
- Augmentez le pool de nœuds jusqu’au nombre d’origine.
Utilisation progressive de la nouvelle clé maîtresse de chiffrement (CMK)
- Autorisez les mises à niveau d’images de nœud AKS ou les mises à niveau de version pour adopter naturellement la nouvelle clé CMK au fil du temps.
- Tant que tous les nœuds du pool sont mis à niveau, la clé CMK existante continue de fonctionner sans interruption.
- Une fois le processus de mise à niveau terminé sur tous les nœuds, la nouvelle clé CMK prend effet de manière fluide.
Créer une instance Azure Key Vault
Utilisez une instance Azure Key Vault pour stocker vos clés. Vous pouvez éventuellement utiliser le portail Azure pour configurer des clés gérées par le client avec Azure Key Vault
Créez un groupe de ressources, puis une instance Key Vault. Activez ensuite la suppression réversible et la protection contre le vidage. Veillez à utiliser les mêmes noms de régions et de groupes de ressources pour chaque commande.
# Optionally retrieve Azure region short names for use on upcoming commands
az account list-locations
# Create new resource group in a supported Azure region
az group create --location myAzureRegionName --name myResourceGroup
# Create an Azure Key Vault resource in a supported Azure region
az keyvault create --name myKeyVaultName --resource-group myResourceGroup --location myAzureRegionName --enable-purge-protection true
Créer une instance de DiskEncryptionSet
Remplacez myKeyVaultName par le nom de votre coffre de clés. Vous devez également disposer d’une clé stockée dans Azure Key Vault pour effectuer les étapes suivantes. Stockez votre clé existante dans le coffre de clés que vous avez créé au cours des étapes précédentes, ou générez une nouvelle clé et remplacez myKeyName avec le nom de votre clé.
Remarque
Pour la prise en charge de l’accès entre comptes pour les clés de chiffrement gérées par le client, vous devez créer le DiskEncryptionSet pour les clés gérées par le client interlocataire, comme indiqué dans ce guide. La configuration de classe de stockage restante est la même que les clés gérées par le client normalement.
# Retrieve the Key Vault Id and store it in a variable
keyVaultId=$(az keyvault show --name myKeyVaultName --query "[id]" -o tsv)
# Retrieve the Key Vault key URL and store it in a variable
keyVaultKeyUrl=$(az keyvault key show --vault-name myKeyVaultName --name myKeyName --query "[key.kid]" -o tsv)
# Create a DiskEncryptionSet
az disk-encryption-set create --name myDiskEncryptionSetName --location myAzureRegionName --resource-group myResourceGroup --source-vault $keyVaultId --key-url $keyVaultKeyUrl
Important
Vérifiez que DiskEncryptionSet se trouve dans la même région que votre cluster AKS et que l’identité du cluster AKS a accès en lecture au DiskEncryptionSet.
Octroyer à DiskEncryptionSet l’accès au coffre de clés
Utilisez DiskEncryptionSet et les groupes de ressources que vous avez créés lors des étapes précédentes, puis accordez à la ressource DiskEncryptionSet l’accès au coffre de clés Azure.
# Retrieve the DiskEncryptionSet value and set a variable
desIdentity=$(az disk-encryption-set show --name myDiskEncryptionSetName --resource-group myResourceGroup --query "[identity.principalId]" -o tsv)
# Update security policy settings
az keyvault set-policy --name myKeyVaultName --resource-group myResourceGroup --object-id $desIdentity --key-permissions wrapkey unwrapkey get
Créer un cluster AKS et chiffrer le disque de système d’exploitation
Créez un groupe de ressources ou sélectionnez un groupe de ressources existant hébergeant d’autres clusters AKS, puis utilisez votre clé pour chiffrer les disques de système d’exploitation attachés au réseau ou à l’aide d’un disque de système d’exploitation éphémère. Par défaut, un cluster utilise un disque de système d’exploitation éphémère lorsque cela est possible conjointement avec la taille de machine virtuelle et la taille du disque du système d’exploitation.
Exécutez la commande suivante pour récupérer la valeur DiskEncryptionSet et définir une variable :
diskEncryptionSetId=$(az disk-encryption-set show --name mydiskEncryptionSetName --resource-group myResourceGroup --query "[id]" -o tsv)
Si vous souhaitez créer un groupe de ressources pour le cluster, exécutez la commande suivante :
az group create --name myResourceGroup --location myAzureRegionName
Pour créer un cluster standard à l’aide de disques de système d’exploitation attachés au réseau et chiffrés avec votre clé, vous pouvez le faire en spécifiant l’argument --node-osdisk-type=Managed
.
az aks create --name myAKSCluster --resource-group myResourceGroup --node-osdisk-diskencryptionset-id $diskEncryptionSetId --generate-ssh-keys --node-osdisk-type Managed
Pour créer un cluster avec un disque de système d’exploitation éphémère chiffré avec votre clé, vous pouvez le faire en spécifiant l’argument --node-osdisk-type=Ephemeral
. Vous devez également spécifier l’argument --node-vm-size
, car la taille de machine virtuelle par défaut est trop petite et ne prend pas en charge le disque de système d’exploitation éphémère.
az aks create --name myAKSCluster --resource-group myResourceGroup --node-osdisk-diskencryptionset-id $diskEncryptionSetId --generate-ssh-keys --node-osdisk-type Ephemeral --node-vm-size Standard_DS3_v2
Quand de nouveaux pools de nœuds sont ajoutés au cluster créé ci-dessus, la clé gérée par le client fournie pendant le processus de création est utilisée pour chiffrer le disque de système d’exploitation. L’exemple suivant montre comment déployer un nouveau pool de nœuds avec un disque de système d’exploitation éphémère.
az aks nodepool add --cluster-name $CLUSTER_NAME --resource-group $RG_NAME --name $NODEPOOL_NAME --node-osdisk-type Ephemeral
Important
Le DiskEncryptionSet que nous avons précédemment appliqué à la classe de stockage chiffre uniquement les nouveaux PVC. Le chiffrement des PVC existants nécessite de les détacher avant d’utiliser l’API/CLI Azure Disks pour mettre à jour les disques sous-jacents, comme indiqué dans ce guide connexe.
Chiffrer votre disque de données de cluster AKS
Si vous avez déjà fourni un jeu de chiffrement de disque lors de la création du cluster, l’option par défaut est le chiffrement des disques de données avec le même jeu de chiffrement de disque. Cette étape est donc facultative. Si vous souhaitez toutefois chiffrer des disques de données avec un autre jeu de chiffrement de disque, vous pouvez suivre ces étapes.
Important
Vérifiez que vous disposez des informations d’identification AKS appropriées. L’identité managée doit disposer d’un accès contributeur au groupe de ressources où diskencryptionset est déployé. Sinon, cela renvoie une erreur suggérant que l’identité managée ne dispose pas d’autorisations.
Pour attribuer à l'identité du cluster AKS le rôle Contributor pour le diskencryptionset, exécutez les commandes suivantes :
aksIdentity=$(az aks show --resource-group $RG_NAME --name $CLUSTER_NAME --query "identity.principalId")
az role assignment create --role "Contributor" --assignee $aksIdentity --scope $diskEncryptionSetId
Créez un fichier appelé byok-azure-disk.yaml et contenant les informations suivantes. Remplacez myAzureSubscriptionId, myResourceGroup et myDiskEncrptionSetName par vos valeurs, puis appliquez le fichier YAML. Veillez à utiliser le groupe de ressources dans lequel votre ressource DiskEncryptionSet est déployée.
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: byok
provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21
parameters:
skuname: StandardSSD_LRS
kind: managed
diskEncryptionSetID: "/subscriptions/{myAzureSubscriptionId}/resourceGroups/{myResourceGroup}/providers/Microsoft.Compute/diskEncryptionSets/{myDiskEncryptionSetName}"
Ensuite, exécutez les commandes suivantes pour mettre à jour votre cluster AKS :
# Get credentials
az aks get-credentials --name myAksCluster --resource-group myResourceGroup --output table
# Update cluster
kubectl apply -f byok-azure-disk.yaml
Étapes suivantes
Consulter les bonnes pratiques relatives à la sécurité des clusters AKS
Azure Kubernetes Service