Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak povolit šifrování dat služby Správy klíčů (KMS) pro tajné kódy Kubernetes ve službě Azure Kubernetes Service (AKS). Šifrování pomocí KMS šifruje tajemství Kubernetes uložené v etcd s použitím klíčů služby Azure Key Vault.
AKS podporuje dvě možnosti správy klíčů:
- Klíče spravované platformou (PMK):: AKS automaticky vytváří a spravuje šifrovací klíče. Tato možnost poskytuje nejjednodušší nastavení s automatickou obměnou klíče.
- Klíče spravované zákazníkem (CMK):: Vytvoříte a spravujete vlastní služby Azure Key Vault a šifrovací klíče. Tato možnost poskytuje úplnou kontrolu nad životním cyklem klíčů a splňuje požadavky na dodržování předpisů, které vyžadují klíče spravované zákazníkem.
Další informace o konceptech šifrování a možnostech klíče najdete v tématu Koncepty šifrování neaktivních uložených dat pro AKS.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud chcete spouštět referenční příkazy CLI lokálně, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Pro více informací, viz Jak spustit Azure CLI v Docker kontejneru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Chcete-li dokončit proces ověřování, postupujte podle kroků zobrazených ve vašem terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Když budete vyzváni, nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spusťte az version, abyste zjistili verzi a závislé knihovny, které jsou nainstalovány. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Tento článek vyžaduje verzi 2.73.0 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je tam už nainstalovaná nejnovější verze.
- Potřebujete
aks-previewrozšíření Azure CLI verze 19.0.0b13 nebo novější.- Pokud ještě nemáte rozšíření
aks-preview, nainstalujte jej pomocí příkazuaz extension add.az extension add --name aks-preview - Pokud už máte rozšíření
aks-preview, aktualizujte ho pomocí příkazuaz extension updatea ujistěte se, že máte nejnovější verzi.az extension update --name aks-preview
- Pokud ještě nemáte rozšíření
-
kubectlNainstalovaný nástroj CLI.
Zaregistrujte příznak funkce
Pokud chcete používat šifrování dat KMS s klíči spravovanými platformou, zaregistrujte ve svém předplatném KMSPMKPreview příznak funkčnosti.
Pomocí příkazu
az feature registerzaregistrujte příznak funkce.az feature register --namespace Microsoft.ContainerService --name KMSPMKPreviewPomocí příkazu ověřte stav
az feature showregistrace. Zobrazení stavu Zaregistrované trvá několik minut.az feature show --namespace Microsoft.ContainerService --name KMSPMKPreviewJakmile se zobrazí stav Registrováno, pomocí příkazu aktualizujte registraci poskytovatele prostředků
az provider register.az provider register --namespace Microsoft.ContainerService
Nastavení proměnných prostředí
Nastavte proměnné prostředí pro vaše nasazení. Zástupné hodnoty nahraďte vlastními hodnotami.
# 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
Povolení šifrování klíčů spravovaných platformou
Díky klíčům spravovaným platformou služba AKS automaticky vytvoří a spravuje službu Azure Key Vault a šifrovací klíče. Rotace klíčů probíhá automaticky platformou.
Vytvoření nového clusteru AKS s klíči spravovanými platformou
Vytvořte nový cluster AKS se šifrováním KMS pomocí klíčů spravovaných platformou.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--generate-ssh-keys
Povolení klíčů spravovaných platformou v existujícím clusteru
Povolte šifrování Služby správy klíčů pomocí klíčů spravovaných platformou v existujícím clusteru AKS.
Poznámka:
Cluster musí používat Kubernetes verze 1.33 nebo novější.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled
Ověření konfigurace KMS
Po povolení šifrování Služby správy klíčů ověřte konfiguraci.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
Výstup zahrnuje konfiguraci Key Management Service (KMS):
{
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Povolení šifrování klíčů spravovaných zákazníkem pomocí privátního trezoru klíčů
Pro lepší zabezpečení můžete použít privátní trezor klíčů, který má zakázaný přístup k veřejné síti. AKS přistupuje k trezoru privátních klíčů prostřednictvím výjimky v bráně firewall pro důvěryhodné služby. Tato část ukazuje, jak nakonfigurovat klíče spravované zákazníkem pomocí privátního trezoru klíčů.
Vytvořte trezor klíčů a klíč s přístupem pro důvěryhodné služby.
Poznámka:
Tato část znázorňuje vytvoření trezoru klíčů s přístupem k veřejné síti zpočátku a povolením brány firewall s obejití důvěryhodných služeb. Tento přístup je určen pouze pro ilustrativní účely. V produkčních prostředích byste měli vytvořit a spravovat trezor klíčů jako soukromý od začátku. Pokyny ke správě trezorů privátních klíčů najdete v tématu Zabezpečení sítě služby Azure Key Vault.
Vytvořte trezor klíčů s povoleným Azure RBAC.
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)Přiřaďte si roli Crypto Officer v Key Vault pro vytvoření klíče.
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_IDVytvořte klíč v trezoru klíčů. Ujistěte se, že operace s
encryptadecryptklíči jsou povoleny.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|/[^/]*$||')Povolte bránu firewall Key Vault s výjimkou pro důvěryhodné služby.
az keyvault update \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --default-action Deny \ --bypass AzureServicesParametr
--default-action Denyblokuje přístup k veřejné síti a tento--bypass AzureServicesparametr umožňuje důvěryhodným službám Azure (včetně AKS) přistupovat k trezoru klíčů.
Vytvořit uživatelsky přiřazenou spravovanou identitu
Vytvořte spravovanou identitu přiřazenou uživatelem pro 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)Přiřaďte spravované identitě požadované role.
# 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
Vytvoření nového clusteru AKS s klíči spravovanými zákazníkem (privátní)
Vytvořte nový cluster AKS s šifrováním pomocí služby Key Management Service (KMS) s použitím klíčů spravovaných zákazníkem v rámci soukromého úložiště klíčů.
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
Povolení klíčů spravovaných zákazníkem v existujícím clusteru (privátní)
Povolte šifrování KMS s klíči spravovanými zákazníkem prostřednictvím privátního trezoru klíčů v existujícím clusteru AKS.
Poznámka:
Cluster musí používat Kubernetes verze 1.33 nebo novější.
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
Ověření konfigurace KMS
Po povolení šifrování Služby správy klíčů ověřte konfiguraci.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
Výstup zahrnuje konfiguraci Key Management Service (KMS):
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Private",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Povolení šifrování klíčů spravovaných zákazníkem pomocí veřejného trezoru klíčů
Pomocí klíčů spravovaných zákazníkem vytvoříte a spravujete vlastní službu Azure Key Vault a šifrovací klíče. Tato část ukazuje, jak nakonfigurovat klíče spravované zákazníkem pomocí veřejného trezoru klíčů.
Vytvořit klíčový trezor a klíč
Vytvořte trezor klíčů s povoleným Azure RBAC.
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)Přiřaďte si roli Crypto Officer v Key Vault pro vytvoření klíče.
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_IDVytvořte klíč v trezoru klíčů. Ujistěte se, že operace s
encryptadecryptklíči jsou povoleny.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|/[^/]*$||')
Vytvořit uživatelsky přiřazenou spravovanou identitu
Vytvořte spravovanou identitu přiřazenou uživatelem pro 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)Přiřaďte spravované identitě požadované role.
# 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
Vytvoření nového clusteru AKS s klíči spravovanými zákazníkem
Vytvořte nový cluster AKS se šifrováním KMS pomocí klíčů řízených zákazníkem.
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
Povolení klíčů spravovaných zákazníkem v existujícím clusteru
Povolte šifrování Služby správy klíčů pomocí klíčů spravovaných zákazníkem v existujícím clusteru AKS.
Poznámka:
Cluster musí používat Kubernetes verze 1.33 nebo novější.
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
Ověření konfigurace KMS
Po povolení šifrování Služby správy klíčů ověřte konfiguraci.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
Výstup zahrnuje konfiguraci Key Management Service (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"
}
}
Migrace mezi variantami správy klíčů
Můžete migrovat mezi klíči spravovanými platformou a klíči spravovanými zákazníkem.
Migrace z klíčů spravovaných platformou na klíče spravované zákazníkem
Pokud chcete migrovat z klíčů spravovaných platformou na klíče spravované zákazníkem, nejprve nastavte trezor klíčů, klíč a spravovanou identitu, jak je popsáno v části klíče spravované zákazníkem, a pak spusťte příkaz update:
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
Migrace z klíčů spravovaných zákazníkem na klíče spravované platformou
Migrace z klíčů spravovaných zákazníkem na klíče spravované platformou:
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--disable-azure-keyvault-kms
Rotace klíčů
Při šifrování dat pomocí KMS probíhá rotace klíčů odlišně v závislosti na vaší možnosti správy klíčů.
- Klíče spravované platformou: Obměně klíčů je automatická. Není vyžadována žádná akce.
- Klíče spravované zákazníkem: Při obměně verze klíče ve službě Azure Key Vault kontroler Služby správy klíčů pravidelně zjišťuje rotaci (každých 6 hodin) a používá novou verzi klíče.
Poznámka:
Na rozdíl od starší verze prostředí Služby správy klíčů s touto novou implementací nemusíte po obměně klíčů ručně šifrovat tajné kódy. Platforma to zpracovává automaticky.