Přidání šifrování Služba správy klíčů atd. do clusteru Azure Kubernetes Service

V tomto článku se dozvíte, jak zapnout šifrování neaktivních uložených kódů služby Azure Kubernetes Service (AKS) v úložišti klíč-hodnota atd. pomocí služby Azure Key Vault a modulu plug-in Služba správy klíčů (KMS). 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í neaktivních uložených tajných kódů, které jsou uložené v atd..
  • 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

Upozorňující

Od 15. září 2024 už není Konnectivity podporována pro trezory privátních klíčů pro nová předplatná nebo předplatná, která tuto konfiguraci ještě nepoužila. Pro předplatná, která tuto konfiguraci aktuálně používají nebo ji používali za posledních 60 dnů, bude podpora pokračovat, dokud AKS verze 1.30 nedosáhne konce životnosti podpory komunity.

Služba správy klíčů podporuje konnectivity nebo integraci virtuální sítě s rozhraním API Server (Preview) pro trezory veřejných klíčů.

Služba Správy klíčů podporuje integraci virtuální sítě serveru API (Preview) pro privátní i veřejné trezory klíčů.

Můžete použít kubectl get po -n kube-system k ověření výsledků a zobrazení, že je spuštěný pod agenta konnectivity. 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 -g -n příkazu ověřit, že enableVnetIntegration je nastavení nastavené na true.

Omezení

Při integraci šifrování Služby správy klíčů s AKS platí následující omezení:

  • Odstranění klíče, trezoru klíčů nebo přidružené identity se nepodporuje.
  • Šifrování Služby správy klíčů atd. 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.
  • Azure Key Vault s nastavením brány firewall "Povolit veřejný přístup z konkrétních virtuálních sítí a IP adres" nebo "zakázat veřejný přístup" není podporovaný, protože blokuje provoz z modulu plug-in Služby správy klíčů do trezoru klíčů.
  • Maximální počet tajných kódů podporovaných clusterem, který má zapnutou službu Správy klíčů, 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 je cluster zapnutý a má trezor privátních klíčů, musí použít tunel integrace virtuální sítě s rozhraním API Server (Preview). Konnectivity se nepodporuje.
  • 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 vypne a stane se neobnovitelným.
  • Po vypnutí Služby správy klíčů nemůžete zničit klíče. Zničení klíčů způsobí, že server rozhraní API přestane fungovat.

Služba správy klíčů podporuje veřejný trezor klíčů nebo privátní trezor klíčů.

Zapnutí Služby správy klíčů pro veřejný trezor klíčů

Následující části popisují, jak zapnout Službu správy klíčů pro veřejný trezor klíčů.

Vytvoření veřejného trezoru klíčů a klíče

Upozorňující

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 téma Správa obnovení služby Azure Key Vault s využitím obnovitelného odstranění a ochrany před vymazáním.

Vytvoření trezoru klíčů a klíče pro veřejný trezor klíčů mimo RBAC

Slouží az keyvault create k vytvoření trezoru klíčů bez použití řízení přístupu na základě role v Azure (Azure RBAC):

az keyvault create --name MyKeyVault --resource-group MyResourceGroup

Slouží az keyvault key create k vytvoření klíče:

az keyvault key create --name MyKeyName --vault-name MyKeyVault

Slouží az keyvault key show k exportu ID klíče:

export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID

Tento příklad ukládá ID klíče do KEY_ID.

Vytvoření trezoru klíčů a klíče pro veřejný trezor klíčů RBAC

Slouží az keyvault create k vytvoření trezoru klíčů pomocí Azure RBAC:

export KEYVAULT_RESOURCE_ID=$(az keyvault create --name MyKeyVault --resource-group MyResourceGroup  --enable-rbac-authorization true --query id -o tsv)

Přiřaďte si oprávnění k 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 $KEYVAULT_RESOURCE_ID

Slouží az keyvault key create k vytvoření klíče:

az keyvault key create --name MyKeyName --vault-name MyKeyVault

Slouží az keyvault key show k exportu ID klíče:

export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID

Tento příklad ukládá ID klíče do KEY_ID.

Vytvoření spravované identity přiřazené uživatelem pro veřejný trezor klíčů

Slouží az identity create k vytvoření spravované identity přiřazené uživatelem:

az identity create --name MyIdentity --resource-group MyResourceGroup

Slouží az identity show k získání ID objektu identity:

IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID

Předchozí příklad ukládá hodnotu ID objektu identity v IDENTITY_OBJECT_ID.

Slouží az identity show k získání ID prostředku identity:

IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID

Tento příklad ukládá hodnotu ID prostředku identity do 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 šifrovaná oprávnění k trezoru privátních klíčů.

Přiřazení oprávnění pro veřejný trezor klíčů mimo RBAC

Pokud váš trezor klíčů není nastavený --enable-rbac-authorization, můžete použít az keyvault set-policy k vytvoření zásad trezoru klíčů Azure.

az keyvault set-policy --name MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID

Přiřazení oprávnění pro veřejný trezor klíčů RBAC

Pokud je váš trezor klíčů nastavený na --enable-rbac-authorization, přiřaďte roli uživatele kryptografických služeb Key Vault, aby bylo možné 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 $KEYVAULT_RESOURCE_ID

Vytvoření clusteru AKS s veřejným trezorem klíčů a zapnutím šifrování Služby správy klíčů atd.

Pokud chcete zapnout šifrování Služby správy klíčů atd., vytvořte cluster AKS pomocí příkazu az aks create . Můžete použít --enable-azure-keyvault-kmsparametr , --azure-keyvault-kms-key-vault-network-accessa --azure-keyvault-kms-key-id parametry s az aks create.

az aks create \
    --name myAKSCluster \
    --resource-group MyResourceGroup \
    --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

Aktualizace existujícího clusteru AKS, aby se zapnulo šifrování Služby správy klíčů atd. pro veřejný trezor klíčů

Pokud chcete zapnout šifrování Služby správy klíčů atd.u existujícího clusteru, použijte příkaz az aks update . Můžete použít --enable-azure-keyvault-kmsparametr , --azure-keyvault-kms-key-vault-network-accessa --azure-keyvault-kms-key-id parametry s az-aks-update.

az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-vault-network-access "Public" --azure-keyvault-kms-key-id $KEY_ID

Pomocí následujícího příkazu aktualizujte všechny tajné kódy. Pokud tento příkaz nespusíte, tajné kódy vytvořené dříve se už nebudou šifrovat. U větších clusterů můžete chtít rozdělit tajné kódy podle oboru názvů nebo vytvořit aktualizační skript.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Obměna existujících klíčů ve veřejném trezoru klíčů

Po změně ID klíče (včetně změny názvu klíče nebo verze klíče) můžete použít příkaz az aks update . K obměně stávajících klíčů ve službě --enable-azure-keyvault-kmsKmS můžete použít parametry , --azure-keyvault-kms-key-vault-network-accessa --azure-keyvault-kms-key-id parametry az-aks-update .

Upozorňující

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í.

Služba správy klíčů používá současně 2 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šenou platnost.

az aks update --name myAKSCluster --resource-group MyResourceGroup  --enable-azure-keyvault-kms --azure-keyvault-kms-key-vault-network-access "Public" --azure-keyvault-kms-key-id $NEW_KEY_ID 

Pomocí následujícího příkazu aktualizujte všechny tajné kódy. Pokud tento příkaz nespusíte, tajné kódy vytvořené dříve se stále šifrují pomocí předchozího klíče. U větších clusterů můžete chtít rozdělit tajné kódy podle oboru názvů nebo vytvořit aktualizační skript.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Zapnutí Služby správy klíčů pro privátní trezor 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. Trezor klíčů přidá připojení privátního koncového bodu ke clusteru AKS.

Upozorňující

Služba Správy klíčů podporuje pouze integraci virtuální sítě serveru API (Preview) pro trezor privátních klíčů.

Vytvoření privátního trezoru klíčů a klíče

Upozorňující

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 téma Správa obnovení služby Azure Key Vault s využitím obnovitelného odstranění a ochrany před vymazáním.

Slouží az keyvault create k vytvoření privátního trezoru klíčů:

az keyvault create --name MyKeyVault --resource-group MyResourceGroup --public-network-access Disabled

Slouží az keyvault key create k vytvoření klíče:

az keyvault key create --name MyKeyName --vault-name MyKeyVault

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.

Vytvoření spravované identity přiřazené uživatelem pro privátní trezor klíčů

Slouží az identity create k vytvoření spravované identity přiřazené uživatelem:

az identity create --name MyIdentity --resource-group MyResourceGroup

Slouží az identity show k získání ID objektu identity:

IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID

Předchozí příklad ukládá hodnotu ID objektu identity v IDENTITY_OBJECT_ID.

Slouží az identity show k získání ID prostředku identity:

IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID

Tento příklad ukládá hodnotu ID prostředku identity do 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 dešifrovací a šifrovaná oprávnění k trezoru privátních klíčů.

Přiřazení oprávnění k privátnímu trezoru klíčů mimo RBAC

Poznámka:

Když používáte privátní trezor klíčů, AKS nemůže ověřit oprávnění identity. Před povolením Služby správy klíčů ověřte, že identita má udělené oprávnění pro přístup k trezoru klíčů.

Pokud váš trezor klíčů není nastavený --enable-rbac-authorization, můžete použít az keyvault set-policy k vytvoření zásad trezoru klíčů v Azure:

az keyvault set-policy --name MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID

Přiřazení oprávnění pro privátní trezor klíčů RBAC

Pokud je váš trezor klíčů nastavený pomocí --enable-rbac-authorizationrole Azure RBAC, která zahrnuje 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 $KEYVAULT_RESOURCE_ID

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.

az role assignment create --role "Key Vault Contributor" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID

Vytvoření clusteru AKS s privátním trezorem klíčů a zapnutím šifrování Služby správy klíčů atd.

Pokud chcete zapnout šifrování Služby správy klíčů atd., vytvořte cluster AKS pomocí příkazu az aks create . Můžete použít parametr --enable-azure-keyvault-kms, --azure-keyvault-kms-key-id, --azure-keyvault-kms-key-vault-network-accessa --azure-keyvault-kms-key-vault-resource-id parametry s az-aks-create.

az aks create \
    --name myAKSCluster \
    --resource-group MyResourceGroup \
    --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 $KEYVAULT_RESOURCE_ID \
    --generate-ssh-keys

Aktualizace existujícího clusteru AKS, aby se zapnulo šifrování Služby správy klíčů atd. pro trezor privátních klíčů

Pokud chcete zapnout šifrování Služby správy klíčů atd. u existujícího clusteru, který má trezor privátních klíčů, použijte příkaz az aks update . Můžete použít parametr --enable-azure-keyvault-kms, --azure-keyvault-kms-key-id, --azure-keyvault-kms-key-vault-network-accessa --azure-keyvault-kms-key-vault-resource-id parametry s az-aks-update.

az aks update --name myAKSCluster --resource-group MyResourceGroup --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 $KEYVAULT_RESOURCE_ID

Pomocí následujícího příkazu aktualizujte všechny tajné kódy. Pokud tento příkaz nespusíte, tajné kódy vytvořené dříve nejsou šifrované. U větších clusterů můžete chtít rozdělit tajné kódy podle oboru názvů nebo vytvořit aktualizační skript.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Obměna existujících klíčů v privátním trezoru klíčů

Po změně ID klíče (včetně názvu klíče a verze klíče) můžete použít příkaz az aks update . Ke otočení stávajících klíčů Služby správy klíčů můžete použít --enable-azure-keyvault-kmsparametry , --azure-keyvault-kms-key-id--azure-keyvault-kms-key-vault-network-accessa --azure-keyvault-kms-key-vault-resource-id parametryaz-aks-update.

Upozorňující

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.

az aks update --name myAKSCluster --resource-group MyResourceGroup  --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $NewKEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID

Pomocí následujícího příkazu aktualizujte všechny tajné kódy. Pokud neaktualizujete všechny tajné kódy, tajné kódy, které byly vytvořeny dříve, se zašifrují pomocí předchozího klíče. U větších clusterů můžete chtít rozdělit tajné kódy podle oboru názvů nebo vytvořit aktualizační skript.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Aktualizace režimu trezoru klíčů

Poznámka:

Pokud chcete změnit jiný trezor klíčů s jiným režimem (bez ohledu na to, jestli je veřejný nebo soukromý), můžete spustit az aks update přímo. Pokud chcete změnit režim připojeného trezoru klíčů, musíte nejdřív vypnout Službu správy klíčů a pak ho znovu zapnout pomocí nových ID trezoru klíčů.

Následující části popisují migraci připojeného veřejného trezoru klíčů do privátního režimu. Tyto kroky je také možné použít k migraci z privátního na veřejný.

Vypnutí Služby správy klíčů v clusteru

Vypněte Službu správy klíčů v existujícím clusteru a uvolněte trezor klíčů:

az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms

Pomocí následujícího příkazu aktualizujte všechny tajné kódy. Pokud tento příkaz nespusíte, tajné kódy vytvořené dříve se stále šifrují pomocí předchozího klíče. U větších clusterů můžete chtít rozdělit tajné kódy podle oboru názvů nebo vytvořit aktualizační skript.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Změna režimu trezoru klíčů

Aktualizujte trezor klíčů z veřejného na privátní:

az keyvault update --name MyKeyVault --resource-group MyResourceGroup --public-network-access Disabled

Pokud chcete migrovat z privátní na veřejnou sadu --public-network-access Enabled v příkazu výše.

Zapnutí Služby správy klíčů pro cluster pomocí aktualizovaného trezoru klíčů

Zapněte Službu správy klíčů pomocí aktualizovaného privátního trezoru klíčů:

az aks update --name myAKSCluster --resource-group MyResourceGroup  --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $NewKEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID

Po nastavení Služby správy klíčů můžete zapnout nastavení diagnostiky trezoru klíčů a zkontrolovat protokoly šifrování.

Vypnutí Služby správy klíčů

Před vypnutím Služby správy klíčů můžete pomocí následujícího příkazu Azure CLI zkontrolovat, jestli je Služba správy klíčů zapnutá:

az aks list --query "[].{Name:name, KmsEnabled:securityProfile.azureKeyVaultKms.enabled, KeyId:securityProfile.azureKeyVaultKms.keyId}" -o table

Pokud výsledky potvrdí, že je Služba správy klíčů zapnutá, spuštěním následujícího příkazu vypněte Službu správy klíčů v clusteru:

az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms

Pomocí následujícího příkazu aktualizujte všechny tajné kódy. Pokud tento příkaz nespusíte, tajné kódy vytvořené dříve se stále šifrují pomocí předchozího klíče a oprávnění k šifrování a dešifrování trezoru klíčů se stále vyžadují. U větších clusterů můžete chtít rozdělit tajné kódy podle oboru názvů nebo vytvořit aktualizační skript.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Podpora Služby správy klíčů v2

Od AKS verze 1.27 se zapnutím funkce Služby správy klíčů nakonfiguruje Služba správy klíčů verze 2. U Služby správy klíčů v2 nejste omezeni na 2 000 tajných kódů, které podporují starší verze. Další informace najdete v tématu Vylepšení Služby správy klíčů v2.

Migrace na Službu správy klíčů v2

Pokud je vaše verze clusteru starší než 1.27 a už jste zapnuli Službu správy klíčů, upgrade na cluster verze 1.27 nebo novější se zablokuje. Pomocí následujících kroků proveďte migraci na Službu správy klíčů v2:

  1. Vypněte Službu správy klíčů v clusteru.
  2. Proveďte migraci úložiště.
  3. Upgradujte cluster na verzi 1.27 nebo novější.
  4. Zapněte Službu správy klíčů v clusteru.
  5. Proveďte migraci úložiště.

Vypnutí Služby správy klíčů pro migraci úložiště

Pokud chcete Službu správy klíčů vypnout v existujícím clusteru, použijte az aks update příkaz s argumentem --disable-azure-keyvault-kms :

az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms

Migrace úložiště

Pokud chcete aktualizovat všechny tajné kódy, použijte kubectl get secrets příkaz s argumentem --all-namespaces :

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Upgrade clusteru AKS

Pokud chcete upgradovat cluster AKS, použijte az aks upgrade příkaz. Nastavte verzi na 1.27.x nebo novější pomocí argumentu --kubernetes-version .

az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version <AKS version>

Tady je příklad:

az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.27.1

Zapnutí Služby správy klíčů po migraci úložiště

Pokud chcete tajné kódy zašifrovat, můžete v clusteru znovu zapnout funkci Služby správy klíčů. Potom cluster AKS používá Službu správy klíčů v2. Pokud nechcete migrovat na Službu správy klíčů verze 2, můžete vytvořit nový cluster, který má zapnutou verzi 1.27 nebo novější.

Migrace úložiště pro Službu správy klíčů v2

Pokud chcete znovu zašifrovat všechny tajné kódy ve službě KmS v2, použijte kubectl get secrets příkaz s argumentem --all-namespaces :

kubectl get secrets --all-namespaces -o json | kubectl replace -f -