Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leest u hoe u KMS-gegevensversleuteling (Key Management Service) inschakelt voor Kubernetes-geheimen in Azure Kubernetes Service (AKS). KMS-versleuteling versleutelt Kubernetes-geheimen die zijn opgeslagen in etcd met behulp van Azure Key Vault-sleutels.
AKS ondersteunt twee opties voor sleutelbeheer:
- Door platform beheerde sleutels (PMK):AKS maakt en beheert automatisch de versleutelingssleutels. Deze optie biedt de eenvoudigste instelling met automatische sleutelrotatie.
- Door de klant beheerde sleutels (CMK): u maakt en beheert uw eigen Azure Key Vault en versleutelingssleutels. Deze optie biedt volledige controle over de levenscyclus van sleutels en voldoet aan nalevingsvereisten die door de klant beheerde sleutels verplicht stellen.
Zie Data encryption at rest-concepten voor AKS voor meer informatie over versleutelingsconcepten en sleutelopties.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Vereiste voorwaarden
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
- Voor dit artikel is versie 2.73.0 of hoger van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie daar al geïnstalleerd.
- U hebt de
aks-previewAzure CLI-extensie versie 19.0.0b13 of hoger nodig.- Als u de
aks-previewextensie nog niet hebt, installeert u deze met behulp van deaz extension addopdracht.az extension add --name aks-preview - Als u de
aks-previewextensie al hebt, werkt u deze bij om ervoor te zorgen dat u de nieuwste versie hebt met behulp van deaz extension updateopdracht.az extension update --name aks-preview
- Als u de
-
kubectlHet CLI-hulpprogramma is geïnstalleerd.
De functievlag registreren
Als u KMS-gegevensversleuteling wilt gebruiken met door het platform beheerde sleutels, registreert u de KMSPMKPreview functievlag in uw abonnement.
Registreer de functievlag met behulp van de
az feature registeropdracht.az feature register --namespace Microsoft.ContainerService --name KMSPMKPreviewControleer de registratiestatus met behulp van de
az feature showopdracht. Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven.az feature show --namespace Microsoft.ContainerService --name KMSPMKPreviewWanneer de status Geregistreerd wordt weergegeven, vernieuwt u de registratie van de Resourceprovider Microsoft.ContainerService met behulp van de
az provider registeropdracht.az provider register --namespace Microsoft.ContainerService
Omgevingsvariabelen instellen
Stel omgevingsvariabelen in voor uw implementatie. Vervang de waarden van de tijdelijke aanduiding door uw eigen waarden.
# 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
Versleuteling van door platform beheerde sleutels inschakelen
Met door het platform beheerde sleutels maakt en beheert AKS automatisch de Azure Key Vault en versleutelingssleutels. Sleutelrotatie wordt automatisch verwerkt door het platform.
Een nieuw AKS-cluster maken met door het platform beheerde sleutels
Maak een nieuw AKS-cluster met KMS-versleuteling met behulp van door het platform beheerde sleutels.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--generate-ssh-keys
Door platform beheerde sleutels inschakelen op een bestaand cluster
Schakel KMS-versleuteling in met platform beheerde sleutels op een bestaand AKS-cluster.
Opmerking
Op het cluster moet Kubernetes versie 1.33 of hoger worden uitgevoerd.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled
KMS-configuratie controleren
Controleer de configuratie nadat u KMS-versleuteling hebt ingeschakeld.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
De uitvoer bevat de KMS-configuratie:
{
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Door de klant beheerde sleutelversleuteling inschakelen met een persoonlijke sleutelkluis
Voor verbeterde beveiliging kunt u een persoonlijke sleutelkluis gebruiken waarvoor openbare netwerktoegang is uitgeschakeld. AKS opent de persoonlijke sleutelkluis via de firewall-uitzondering voor vertrouwde services. In deze sectie wordt beschreven hoe u door de klant beheerde sleutels configureert met een persoonlijke sleutelkluis.
Een sleutelkluis en sleutel creëren met toegang voor vertrouwde services
Opmerking
Deze sectie illustreert het maken van een sleutelkluis met aanvankelijk openbare netwerktoegang en vervolgens het inschakelen van de firewall met een bypass voor vertrouwde diensten. Deze benadering is alleen bedoeld voor illustratieve doeleinden. In productieomgevingen moet u vanaf het begin uw sleutelkluis als privé maken en beheren. Zie Azure Key Vault-netwerkbeveiliging voor hulp bij het beheren van persoonlijke sleutelkluizen.
Maak een Azure Key Vault waarvoor Azure RBAC is ingeschakeld.
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)Wijs uzelf de rol van Key Vault Crypto Officer toe om een sleutel aan te maken.
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_IDMaak een sleutel in de sleutelkluis.
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|/[^/]*$||')Schakel de key vault-firewall in met een bypass van vertrouwde services.
az keyvault update \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --default-action Deny \ --bypass AzureServicesDe
--default-action Denyparameter blokkeert de toegang tot openbare netwerken en met de--bypass AzureServicesparameter kunnen vertrouwde Azure-services (inclusief AKS) toegang krijgen tot de sleutelkluis.
Maak een door de gebruiker toegewezen beheerde identiteit
Maak een door de gebruiker toegewezen beheerde identiteit voor het 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)Wijs de vereiste rollen toe aan de beheerde identiteit.
# 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
Een nieuw AKS-cluster maken met door de klant beheerde sleutels (privé)
Maak een nieuw AKS-cluster met KMS-versleuteling met behulp van door de klant beheerde sleutels met een persoonlijke sleutelkluis.
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
Door de klant beheerde sleutels inschakelen op een bestaand cluster (privé)
Schakel KMS-versleuteling in met door de klant beheerde sleutels met behulp van een persoonlijke sleutelkluis op een bestaand AKS-cluster.
Opmerking
Op het cluster moet Kubernetes versie 1.33 of hoger worden uitgevoerd.
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
KMS-configuratie controleren
Controleer de configuratie nadat u KMS-versleuteling hebt ingeschakeld.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
De uitvoer bevat de KMS-configuratie:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Private",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Door de klant beheerde sleutelversleuteling met een openbare sleutelkluis inschakelen
Met door de klant beheerde sleutels maakt en beheert u uw eigen Azure Key Vault en versleutelingssleutels. In deze sectie wordt beschreven hoe u door de klant beheerde sleutels configureert met een openbare sleutelkluis.
Een sleutelkluis en sleutel maken
Maak een Azure Key Vault waarvoor Azure RBAC is ingeschakeld.
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)Wijs uzelf de rol van Key Vault Crypto Officer toe om een sleutel aan te maken.
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_IDMaak een sleutel in de sleutelkluis.
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|/[^/]*$||')
Maak een door de gebruiker toegewezen beheerde identiteit
Maak een door de gebruiker toegewezen beheerde identiteit voor het 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)Wijs de vereiste rollen toe aan de beheerde identiteit.
# 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
Een nieuw AKS-cluster maken met door de klant beheerde sleutels
Maak een nieuw AKS-cluster met KMS-versleuteling met behulp van door de klant beheerde sleutels.
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
Door de klant beheerde sleutels inschakelen op een bestaand cluster
Schakel KMS-versleuteling in met door de klant beheerde sleutels op een bestaand AKS-cluster.
Opmerking
Op het cluster moet Kubernetes versie 1.33 of hoger worden uitgevoerd.
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
KMS-configuratie controleren
Controleer de configuratie nadat u KMS-versleuteling hebt ingeschakeld.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
De uitvoer bevat de KMS-configuratie:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Public",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Migreren tussen opties voor sleutelbeheer
U kunt migreren tussen door het platform beheerde sleutels en door de klant beheerde sleutels.
Migreren van door platform beheerde sleutels naar door de klant beheerde sleutels
Als u wilt migreren van door het platform beheerde sleutels naar door de klant beheerde sleutels, moet u eerst de sleutelkluis, sleutel en beheerde identiteit instellen, zoals beschreven in de sectie door de klant beheerde sleutels en voert u vervolgens de updateopdracht uit:
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
Migreren van door de klant beheerde sleutels naar door het platform beheerde sleutels
Migreren van door de klant beheerde sleutels naar door het platform beheerde sleutels:
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--disable-azure-keyvault-kms
Sleutelrotatie
Met KMS-gegevensversleuteling wordt sleutelrotatie anders verwerkt, afhankelijk van uw optie voor sleutelbeheer:
- Door platform beheerde sleutels: sleutelrotatie wordt automatisch uitgevoerd. Er is geen actie vereist.
- Door de klant beheerde sleutels: wanneer u de sleutelversie in Azure Key Vault roteert, detecteert de KMS-controller de rotatie periodiek (elke 6 uur) en wordt de nieuwe sleutelversie gebruikt.
Opmerking
In tegenstelling tot de verouderde KMS-ervaring, hoeft u met deze nieuwe implementatie geheimen na sleutelrotatie niet handmatig opnieuw te versleutelen. Het platform verwerkt dit automatisch.