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.
Důležité
Tento článek popisuje starší verzi prostředí Služby správy klíčů pro AKS. Pro nové clustery, na kterých běží Kubernetes verze 1.33 nebo novější, doporučujeme použít nové prostředí pro šifrování dat Služby správy klíčů , které nabízí klíče spravované platformou, klíče spravované zákazníkem s automatickým obměněm klíčů a zjednodušené prostředí konfigurace.
Koncepční informace o možnostech šifrování dat najdete v tématu Koncepty šifrování neaktivních uložených dat pro AKS.
V tomto článku se dozvíte, jak zapnout šifrování uložených dat v klidu pro veřejný nebo privátní trezor klíčů pomocí služby Azure Key Vault a pluginu Služby správy klíčů (KMS) v AKS. Modul plug-in KmS můžete použít k:
- Pro šifrování atd. použijte klíč v trezoru klíčů.
- Přineste si vlastní klíče.
- Zajistěte šifrování dat na úložišti pro tajemství uložená v etcd.
- Otočte klíče v trezoru klíčů.
Další informace o používání Služby správy klíčů najdete v tématu Použití zprostředkovatele Služby správy klíčů pro šifrování dat.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Azure CLI verze 2.39.0 nebo novější Pomocí příkazu najděte svoji verzi
az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace rozhraní příkazového řádku Azure CLI.
Varování
Od 15. září 2024 už nebude Konnectivity podporována pro trezory privátních klíčů v nových předplatných nebo v těch, která tuto konfiguraci dosud nepoužívala. U předplatných, která aktuálně používají tuto konfiguraci nebo ji používali za posledních 60 dnů, podpora pokračuje až do konce životnosti AKS verze 1.30 pro podporu komunity.
KMS podporuje Konnectivity nebo API Server VNet Integration pro trezory veřejných klíčů.
Služba KMS podporuje API Server VNet Integration pro privátní i veřejné úložiště klíčů.
Můžete použít kubectl get pods -n kube-system k ověření výsledků a zobrazení, že konnectivity-agent pod běží. Pokud je pod spuštěný, cluster AKS používá Konnectivity. Pokud používáte integraci virtuální sítě serveru API, můžete spuštěním az aks show --resource-group <resource-group-name> --name <cluster-name> příkazu ověřit, že enableVnetIntegration je nastavení nastavené na true.
Omezení
Při integraci šifrování KMS etcd s AKS platí následující omezení:
- Odstranění klíče, trezoru klíčů nebo přidružené identity se nepodporuje.
- Šifrování KMS etcd nefunguje se spravovanou identitou přiřazenou systémem. Před zapnutím této funkce je nutné nastavit zásady přístupu trezoru klíčů. Spravovaná identita přiřazená systémem není k dispozici, dokud se cluster nevytvořil. Zvažte závislost cyklu.
- Vzhledem k tomu, že brána firewall blokuje provoz z KMS pluginu do služby Key Vault, nejsou podporovány dva scénáře. Nejprve, ve službě Azure Key Vault není možné nastavit možnost firewallu Povolit veřejný přístup z konkrétních virtuálních sítí a IP adres. Za druhé, Azure Key Vault nejde nakonfigurovat pomocí zákazu veřejného přístupu , pokud není povolená integrace virtuální sítě API Serveru .
- Maximální počet tajných kódů podporovaných clusterem se zapnutou službou KmS je 2 000. Je ale důležité si uvědomit, že Služba správy klíčů v2 není tímto omezením omezena a dokáže zpracovat vyšší počet tajných kódů.
- Používání vlastního trezoru klíčů Azure (BYO) z jiného tenanta se nepodporuje.
- Když je služba Správy klíčů zapnutá, nemůžete změnit přidružený režim trezoru klíčů (veřejný a soukromý). Pokud chcete aktualizovat režim trezoru klíčů, musíte nejdřív vypnout Službu správy klíčů a pak ho znovu zapnout.
- Pokud má cluster zapnutou KMS a trezor privátních klíčů, musí použít tunel integrace VNet pro API Server. Nepodporuje se Konnectivity.
- Použití rozhraní API škálovacích sad virtuálních počítačů ke škálování uzlů v clusteru dolů na nulu uvolní uzly. Cluster se pak zhroutí a stane se neobnovitelný.
- Po vypnutí Služby správy klíčů nemůžete klíče odstranit ani vypršet jejich platnost. Takové chování by způsobilo, že server rozhraní API přestal fungovat.
- Pro privátní cluster s povolenou službou KMS a integrací virtuální sítě, která používá trezor privátních klíčů, musí skupina zabezpečení sítě (NSG) povolit port TCP 443 ze serveru rozhraní API na IP adresu privátního koncového bodu trezoru privátních klíčů. Toto omezení je potřeba zvážit při použití jiných pravidel v síťové bezpečnostní skupině podsítě API nebo v síťové bezpečnostní skupině podsítě clusteru.
Vytvoření trezoru klíčů a klíče pro veřejný trezor klíčů
Následující části popisují, jak zapnout Službu správy klíčů pro veřejný trezor klíčů. Veřejný trezor klíčů můžete použít s řízením přístupu na základě role Azure (Azure RBAC) nebo bez.
Varování
Odstranění klíče nebo trezoru klíčů se nepodporuje a způsobí, že tajné kódy v clusteru nebudou obnovitelné.
Pokud potřebujete obnovit trezor klíčů nebo váš klíč, přečtěte si Správa obnovení služby Azure Key Vault pomocí funkce měkkého odstranění a ochrany před vymazáním.
Vytvořte trezor klíčů pomocí Azure RBAC pomocí
az keyvault createpříkazu. Tento ukázkový příkaz také exportuje ID prostředku trezoru klíčů do proměnné prostředí.export KEY_VAULT_RESOURCE_ID=$(az keyvault create --name $KEY_VAULT --resource-group $RESOURCE_GROUP --enable-rbac-authorization true --query id -o tsv)Přiřaďte si oprávnění k vytvoření klíče pomocí
az role assignment createpříkazu. Tento příklad přiřadí roli kryptografického důstojníka služby Key Vault přihlášeným uživatelům.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íč pomocí
az keyvault key createpříkazu. Ujistěte se, žeencryptadecryptklíčové operace jsou povoleny.az keyvault key create --name $KEY_NAME --vault-name $KEY_VAULTZískejte ID klíče a pomocí příkazu ho uložte jako proměnnou
az keyvault key showprostředí.export KEY_ID=$(az keyvault key show --name $KEY_NAME --vault-name $KEY_VAULT --query 'key.kid' -o tsv) echo $KEY_ID
Vytvoření spravované identity přiřazené uživatelem pro veřejný trezor klíčů
Vytvořte spravovanou identitu přiřazenou uživatelem pomocí příkazu
az identity create.az identity create --name $IDENTITY_NAME --resource-group $RESOURCE_GROUPZískejte ID objektu identity a pomocí příkazu ho uložte jako proměnnou
az identity showprostředí.export IDENTITY_OBJECT_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'principalId' -o tsv) echo $IDENTITY_OBJECT_IDZískejte ID prostředku identity a pomocí příkazu ho
az identity showuložte jako proměnnou prostředí.export IDENTITY_RESOURCE_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'id' -o tsv) echo $IDENTITY_RESOURCE_ID
Přiřazení oprávnění k dešifrování a šifrování veřejného trezoru klíčů
Následující části popisují, jak přiřadit dešifrovací a šifrovací oprávnění pro úložiště veřejných klíčů s Azure RBAC nebo bez něj.
- Přiřazení oprávnění pro veřejný trezor klíčů pomocí Azure RBAC
- Přiřazení oprávnění pro veřejný trezor klíčů bez Azure RBAC
Přiřaďte roli uživatele kryptografických služeb Key Vault, abyste mohli pomocí
az role assignment createpříkazu udělit dešifrovací a šifrovaná oprávnění.az role assignment create --role "Key Vault Crypto User" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEY_VAULT_RESOURCE_ID
Povolení KMS pro úložiště veřejných klíčů v clusteru AKS
Následující části popisují, jak zapnout Službu správy klíčů pro veřejný trezor klíčů v novém nebo existujícím clusteru AKS.
Vytvoření clusteru AKS s trezorem veřejných klíčů a Službou správy klíčů
Vytvořte cluster AKS s úložištěm veřejných klíčů a Službou správy klíčů pomocí příkazu
az aks createa parametrů--enable-azure-keyvault-kms,--azure-keyvault-kms-key-vault-network-accessa--azure-keyvault-kms-key-id.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --assign-identity $IDENTITY_RESOURCE_ID \ --enable-azure-keyvault-kms \ --azure-keyvault-kms-key-vault-network-access "Public" \ --azure-keyvault-kms-key-id $KEY_ID \ --generate-ssh-keys
Povolení veřejného trezoru klíčů a Služby správy klíčů v existujícím clusteru AKS
Povolte KMS v trezoru veřejných klíčů v existujícím clusteru pomocí příkazu
az aks updates parametry--enable-azure-keyvault-kms,--azure-keyvault-kms-key-vault-network-accessa--azure-keyvault-kms-key-id.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-azure-keyvault-kms \ --azure-keyvault-kms-key-vault-network-access "Public" \ --azure-keyvault-kms-key-id $KEY_IDAktualizujte všechny tajné kódy
kubectl get secretspomocí příkazu, abyste zajistili, že dříve vytvořené tajné kódy už nejsou šifrované. U větších clusterů můžete chtít rozdělit tajemství podle oboru názvů nebo vytvořit skript pro aktualizaci. Pokud předchozí příkaz pro aktualizaci Služby správy klíčů selže, spusťte následující příkaz, aby se zabránilo neočekávanému stavu modulu plug-in Služby správy klíčů.kubectl get secrets --all-namespaces -o json | kubectl replace -f -Při spuštění příkazu je následující chyba bezpečná pro ignorování:
The object has been modified; please apply your changes to the latest version and try again.
Rotace existujících klíčů v klíčovém trezoru
Po změně ID klíče (včetně změny názvu klíče nebo verze klíče) můžete stávající klíče ve veřejném trezoru klíčů otočit.
Varování
Nezapomeňte aktualizovat všechny tajné kódy po obměně klíčů. Pokud neaktualizujete všechny tajné kódy, jsou tajné kódy nepřístupné, pokud dříve vytvořené klíče neexistují nebo už nefungují.
KMS používá současně dva klíče. Po obměně prvního klíče je potřeba zajistit, aby staré i nové klíče byly platné (nevypršela platnost) až do další obměna klíče. Po obměně druhého klíče je možné nejstarší klíč bezpečně odebrat nebo vypršet.
Po rotaci verze klíče Služby správy klíčů s novým keyId zkontrolujte securityProfile.azureKeyVaultKms.keyId v json prostředku AKS. Ujistěte se, že se používá nová verze klíče.
Pomocí příkazu
az aks updates parametry--enable-azure-keyvault-kms,--azure-keyvault-kms-key-vault-network-accessa--azure-keyvault-kms-key-idmůžete otočit existující klíče.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-azure-keyvault-kms \ --azure-keyvault-kms-key-vault-network-access "Public" \ --azure-keyvault-kms-key-id $NEW_KEY_IDAktualizujte všechny tajné kódy
kubectl get secretspomocí příkazu, abyste zajistili, že dříve vytvořené tajné kódy už nejsou šifrované. U větších clusterů můžete chtít rozdělit tajemství podle oboru názvů nebo vytvořit skript pro aktualizaci. Pokud předchozí příkaz pro aktualizaci Služby správy klíčů selže, spusťte následující příkaz, aby se zabránilo neočekávanému stavu modulu plug-in Služby správy klíčů.kubectl get secrets --all-namespaces -o json | kubectl replace -f -Při spuštění příkazu je následující chyba bezpečná pro ignorování:
The object has been modified; please apply your changes to the latest version and try again.
Vytvořte trezor klíčů a klíč pro privátní úložiště klíčů
Pokud pro privátní trezor klíčů zapnete Službu správy klíčů, AKS automaticky vytvoří privátní koncový bod a privátní propojení ve skupině prostředků uzlu. Úložiště klíčů má připojení privátního koncového bodu ke clusteru AKS.
Varování
Při používání privátního trezoru klíčů mějte na paměti následující informace:
- KMS podporuje pouze integraci virtuální sítě serveru API pro soukromý trezor klíčů.
- Vytvoření nebo aktualizace klíčů v trezoru privátních klíčů, který nemá privátní koncový bod, není podporováno. Informace o správě trezorů privátních klíčů najdete v tématu Integrace trezoru klíčů pomocí služby Azure Private Link.
- Odstranění klíče nebo trezoru klíčů se nepodporuje a způsobí, že tajné kódy v clusteru nebudou obnovitelné. Pokud potřebujete obnovit trezor klíčů nebo váš klíč, přečtěte si Správa obnovení služby Azure Key Vault pomocí funkce měkkého odstranění a ochrany před vymazáním.
Pomocí příkazu s
az keyvault createparametrem--public-network-access Disabledvytvořte privátní trezor klíčů.az keyvault create --name $KEY_VAULT --resource-group $RESOURCE_GROUP --public-network-access DisabledVytvořte klíč pomocí
az keyvault key createpříkazu. Ujistěte se, žeencryptadecryptklíčové operace jsou povoleny.az keyvault key create --name $KEY_NAME --vault-name $KEY_VAULT
Vytvoření spravované identity přiřazené uživatelem pro privátní trezor klíčů
Vytvořte spravovanou identitu přiřazenou uživatelem pomocí příkazu
az identity create.az identity create --name $IDENTITY_NAME --resource-group $RESOURCE_GROUPZískejte ID objektu identity a pomocí příkazu ho uložte jako proměnnou
az identity showprostředí.export IDENTITY_OBJECT_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'principalId' -o tsv) echo $IDENTITY_OBJECT_IDZískejte ID prostředku identity a pomocí příkazu ho
az identity showuložte jako proměnnou prostředí.export IDENTITY_RESOURCE_ID=$(az identity show --name $IDENTITY_NAME --resource-group $RESOURCE_GROUP --query 'id' -o tsv) echo $IDENTITY_RESOURCE_ID
Přiřazení oprávnění k dešifrování a šifrování privátního trezoru klíčů
Následující části popisují, jak přiřadit oprávnění dešifrovat a šifrovat k privátnímu klíčovému trezoru s nebo bez Azure RBAC.
- Přiřazení oprávnění k privátnímu trezoru klíčů pomocí Azure RBAC
- Přiřazení oprávnění k privátnímu trezoru klíčů bez Azure RBAC
Přiřaďte roli uživatele kryptografických služeb Key Vault, abyste mohli pomocí
az role assignment createpříkazu udělit dešifrovací a šifrovaná oprávnění.az role assignment create --role "Key Vault Crypto User" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEY_VAULT_RESOURCE_ID
Přiřazení oprávnění k vytvoření privátního propojení
Pro trezory privátních klíčů se k vytvoření privátního propojení mezi privátním trezorem klíčů a clusterem vyžaduje role Přispěvatel služby Key Vault.
Pomocí příkazu
az role assignment createpřiřaďte roli Přispěvatel služby Key Vault.az role assignment create --role "Key Vault Contributor" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEY_VAULT_RESOURCE_ID
Povolte KMS pro soukromé úložiště klíčů v clusteru AKS
Následující části popisují, jak zapnout Službu správy klíčů pro privátní trezor klíčů v novém nebo existujícím clusteru AKS.
Vytvoření clusteru AKS s trezorem privátních klíčů a Službou správy klíčů
Vytvořte cluster AKS s trezorem privátních klíčů a se službou správy klíčů KMS pomocí příkazu s parametry
az aks create,--enable-azure-keyvault-kms,--azure-keyvault-kms-key-ida--azure-keyvault-kms-key-vault-network-access.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --assign-identity $IDENTITY_RESOURCE_ID \ --enable-azure-keyvault-kms \ --azure-keyvault-kms-key-id $KEY_ID \ --azure-keyvault-kms-key-vault-network-access "Private" \ --azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_ID \ --generate-ssh-keys
Aktualizace existujícího clusteru AKS, aby se zapnulo šifrování KMS etcd pro soukromý trezor klíčů.
Povolte KMS v privátním trezoru klíčů v existujícím clusteru pomocí příkazu
az aks updates parametry--enable-azure-keyvault-kms,--azure-keyvault-kms-key-id,--azure-keyvault-kms-key-vault-network-accessa--azure-keyvault-kms-key-vault-resource-id.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-azure-keyvault-kms \ --azure-keyvault-kms-key-id $KEY_ID \ --azure-keyvault-kms-key-vault-network-access "Private" \ --azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_IDAktualizujte všechny tajné kódy
kubectl get secretspomocí příkazu, abyste zajistili, že dříve vytvořené tajné kódy už nejsou šifrované. U větších clusterů můžete chtít rozdělit tajemství podle oboru názvů nebo vytvořit skript pro aktualizaci. Pokud předchozí příkaz pro aktualizaci Služby správy klíčů selže, spusťte následující příkaz, aby se zabránilo neočekávanému stavu modulu plug-in Služby správy klíčů.kubectl get secrets --all-namespaces -o json | kubectl replace -f -Při spuštění příkazu je následující chyba bezpečná pro ignorování:
The object has been modified; please apply your changes to the latest version and try again.
Obnovení existujících klíčů v soukromém trezoru klíčů
Po změně ID klíče (včetně změny názvu klíče nebo verze klíče) můžete stávající klíče v trezoru privátních klíčů otočit.
Varování
Nezapomeňte aktualizovat všechny tajné kódy po obměně klíčů. Pokud neaktualizujete všechny tajné kódy, jsou tajné kódy nepřístupné, pokud dříve vytvořené klíče neexistují nebo už nefungují.
Po otočení klíče je předchozí klíč (klíč1) stále uložený v mezipaměti a neměl by být odstraněn. Pokud chcete předchozí klíč (klíč1) okamžitě odstranit, musíte klíč otočit dvakrát. Klíč2 a klíč3 se pak uloží do mezipaměti a klíč1 se dá odstranit, aniž by to mělo vliv na existující cluster.
Po rotaci verze klíče Služby správy klíčů s novým keyId zkontrolujte securityProfile.azureKeyVaultKms.keyId v json prostředku AKS. Ujistěte se, že se používá nová verze klíče.
Otočení existujících klíčů v úložišti klíčů pomocí příkazu
az aks updates parametry--enable-azure-keyvault-kms,--azure-keyvault-kms-key-id,--azure-keyvault-kms-key-vault-network-accessa--azure-keyvault-kms-key-vault-resource-id.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-azure-keyvault-kms \ --azure-keyvault-kms-key-id $NEW_KEY_ID \ --azure-keyvault-kms-key-vault-network-access "Private" \ --azure-keyvault-kms-key-vault-resource-id $KEY_VAULT_RESOURCE_IDAktualizujte všechny tajné kódy
kubectl get secretspomocí příkazu, abyste zajistili, že dříve vytvořené tajné kódy už nejsou šifrované. U větších clusterů můžete chtít rozdělit tajemství podle oboru názvů nebo vytvořit skript pro aktualizaci. Pokud předchozí příkaz pro aktualizaci Služby správy klíčů selže, spusťte následující příkaz, aby se zabránilo neočekávanému stavu modulu plug-in Služby správy klíčů.kubectl get secrets --all-namespaces -o json | kubectl replace -f -Při spuštění příkazu je následující chyba bezpečná pro ignorování:
The object has been modified; please apply your changes to the latest version and try again.
Zakázání Služby správy klíčů v clusteru AKS
Před vypnutím Služby správy klíčů pomocí příkazu ověřte, že je služba Správy klíčů v clusteru povolená
az aks list.az aks list --query "[].{Name:name, KmsEnabled:securityProfile.azureKeyVaultKms.enabled, KeyId:securityProfile.azureKeyVaultKms.keyId}" -o tablePo potvrzení můžete Službu správy klíčů zakázat pomocí příkazu
az aks updates parametrem--disable-azure-keyvault-kms.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --disable-azure-keyvault-kmsAktualizujte všechny tajné kódy
kubectl get secretspomocí příkazu, abyste zajistili, že dříve vytvořené tajné kódy už nejsou šifrované. U větších clusterů můžete chtít rozdělit tajemství podle oboru názvů nebo vytvořit skript pro aktualizaci. Pokud předchozí příkaz pro aktualizaci Služby správy klíčů selže, spusťte následující příkaz, aby se zabránilo neočekávanému stavu modulu plug-in Služby správy klíčů.kubectl get secrets --all-namespaces -o json | kubectl replace -f -Při spuštění příkazu je následující chyba bezpečná pro ignorování:
The object has been modified; please apply your changes to the latest version and try again.
Další kroky
Další informace o používání Služby správy klíčů s AKS najdete v následujících článcích:
- Povolení šifrování dat Služby správy klíčů v AKS – nové prostředí Služby správy klíčů s využitím klíčů spravovaných platformou a automatické obměny klíčů
- Koncepty šifrování neaktivních uložených dat pro AKS
- Aktualizujte režim trezoru klíčů pro cluster Azure Kubernetes Service (AKS) s KMS šifrováním etcd.
- Migrace na KmS v2 pro šifrování etcd ve službě Azure Kubernetes Service (AKS)
- Sledování šifrování etcd KMS ve službě Azure Kubernetes Service (AKS)