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íčů (Služba správy klíčů). Modul plug-in Služba správy klíčů 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žití Služba správy klíčů naleznete v tématu Šifrování tajných dat v klidovém stavu.

Požadavky

Upozorňující

Služba správy klíčů podporuje Konnectivity nebo Integrace virtuální sítě API Serveru (Preview)

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 Služba správy klíčů atd. s AKS platí následující omezení:

  • Odstranění klíče, trezoru klíčů nebo přidružené identity se nepodporuje.
  • Služba správy klíčů šifrování 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.
  • Služba Azure Key Vault s bránou firewall umožňující veřejný přístup není podporovaná, protože blokuje provoz z modulu plug-in Služba správy klíčů do trezoru klíčů.
  • Maximální počet tajných kódů podporovaných clusterem, který má Služba správy klíčů zapnutý, je 2 000. Je ale důležité si uvědomit, že Služba správy klíčů v2 toto omezení neomezuje 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žba správy klíčů a pak ho znovu zapnout.
  • Pokud je cluster Služba správy klíčů zapnutý, má privátní trezor klíčů a nepoužívá tunel integrace virtuální sítě API Serveru, nemůžete ho zastavit a spustit.
  • 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žba 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žba správy klíčů pro veřejný trezor klíčů

Následující části popisují, jak zapnout Služba 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žba správy klíčů atd.

Pokud chcete zapnout šifrování Služba 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

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

Pokud chcete zapnout šifrování Služba správy klíčů atd. pro existující cluster, 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 . Pomocí parametrů a --azure-keyvault-kms-key-vault-network-access--azure-keyvault-kms-key-id parametrů az-aks-update můžete --enable-azure-keyvault-kmsv Služba správy klíčů otočit existující klíče.

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-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žba správy klíčů pro privátní trezor klíčů

Pokud zapnete Služba správy klíčů pro privátní trezor 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.

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

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žba 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žba správy klíčů atd.

Pokud chcete zapnout šifrování Služba správy klíčů atd. pro privátní trezor klíčů, 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

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

Pokud chcete zapnout šifrování Služba správy klíčů atd. u existujícího clusteru s privátním trezorem 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žba 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žba 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.

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

Vypněte Služba 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

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

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

Zapněte Služba 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žba správy klíčů můžete zapnout nastavení diagnostiky trezoru klíčů a zkontrolovat protokoly šifrování.

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

Před vypnutím Služba 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í, Služba správy klíčů zapnuté, vypněte Služba správy klíčů v clusteru spuštěním následujícího příkazu:

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žba správy klíčů v2

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

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

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

  1. Vypněte Služba 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žba správy klíčů v clusteru.
  5. Proveďte migraci úložiště.

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

Pokud chcete vypnout Služba správy klíčů 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žba správy klíčů po migraci úložiště

Opětovným zapnutím funkce Služba správy klíčů v clusteru zašifrujete tajné kódy. Potom cluster AKS používá Služba správy klíčů v2. Pokud nechcete migrovat na Služba správy klíčů v2, můžete vytvořit nový cluster verze 1.27 nebo novější s Služba správy klíčů zapnutým.

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

Pokud chcete znovu zašifrovat všechny tajné kódy v Služba správy klíčů v2, použijte kubectl get secrets příkaz s argumentem--all-namespaces:

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