Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan engedélyezheti a Kulcskezelési szolgáltatás (KMS) adattitkosítását a Kubernetes-titkos kulcsokhoz az Azure Kubernetes Service-ben (AKS). A KMS-titkosítás az Azure Key Vault-kulcsokkal titkosítja az etcd-ben tárolt Kubernetes-titkos kulcsokat.
Az AKS két kulcskezelési lehetőséget támogat:
- Platform által felügyelt kulcsok (PMK): Az AKS automatikusan létrehozza és kezeli a titkosítási kulcsokat. Ez a beállítás a legegyszerűbb beállítást biztosítja automatikus kulcsforgatással.
- Ügyfél által felügyelt kulcsok (CMK): Saját Azure Key Vault- és titkosítási kulcsokat hozhat létre és kezelhet. Ez a beállítás teljes körű vezérlést biztosít a kulcs életciklusa felett, és megfelel az ügyfél által felügyelt kulcsokat meghatalmaozó megfelelőségi követelményeknek.
További információ a titkosítási fogalmakról és a kulcsbeállításokról: Az AKS inaktív állapotban lévő adattitkosítási fogalmai.
Fontos
Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióihoz részleges támogatást nyújt az ügyfélszolgálat a tőle telhető legjobb módon. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: Az Azure Cloud Shell használatának első lépései.
Ha a CLI referencia parancsokat helyben szeretnéd futtatni, telepítsd az Azure CLI-t. Ha Windows vagy macOS rendszeren fut, fontolja meg az Azure CLI-t egy Docker-konténerben futtatni. További információkért lásd: Az Azure CLI használata Docker-konténerben.
Ha egy helyileg telepített verziót használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. Az azonosítási folyamat befejezéséhez kövesse a terminálján megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Hitelesítés az Azure-ba az Azure CLI használatával.
Amikor megjelenik a felszólítás, az első használatkor telepítse az Azure CLI bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
Futtasd a az version parancsot, hogy megtudd a telepített verziót és függő könyvtárakat. A legújabb verzióra való frissítéshez futtassa a az upgrade parancsot.
- Ez a cikk az Azure CLI 2.73.0-s vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
- Az Azure
aks-previewvagy újabb verziójára van szüksége.- Ha még nem rendelkezik a
aks-previewbővítményrel, telepítse aaz extension addparancs használatával.az extension add --name aks-preview - Ha már rendelkezik a
aks-previewbővítményrel, frissítse, hogy biztosan a legújabb verzióval rendelkezzen aaz extension updateparancs használatával.az extension update --name aks-preview
- Ha még nem rendelkezik a
-
kubectlA parancssori felület eszköz telepítve van.
A funkciójelző regisztrálása
Ha a KMS-adattitkosítást platform által felügyelt kulcsokkal szeretné használni, regisztrálja a KMSPMKPreview funkciójelzőt az előfizetésben.
Regisztrálja a funkciójelzőt a
az feature registerparanccsal.az feature register --namespace Microsoft.ContainerService --name KMSPMKPreviewEllenőrizze a regisztrációs állapotot a
az feature showparanccsal. Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.az feature show --namespace Microsoft.ContainerService --name KMSPMKPreviewHa az állapot a Regisztrált állapotot jeleníti meg, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a
az provider registerparanccsal.az provider register --namespace Microsoft.ContainerService
Környezeti változók beállítása
Környezeti változók beállítása az üzembe helyezéshez. Cserélje le a helyőrző értékeket a sajátjára.
# 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
Platform által felügyelt kulcstitkosítás engedélyezése
Platform által felügyelt kulcsokkal az AKS automatikusan létrehozza és kezeli az Azure Key Vaultot és a titkosítási kulcsokat. A kulcsforgatást a platform automatikusan kezeli.
Új AKS-fürt létrehozása platform által felügyelt kulcsokkal
Hozzon létre egy új AKS-fürtöt KMS-titkosítással a platform által felügyelt kulcsokat használva.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--generate-ssh-keys
Platform által felügyelt kulcsok engedélyezése meglévő fürtön
Engedélyezze a KMS-titkosítást platform által felügyelt kulcsokkal egy meglévő AKS-fürtön.
Megjegyzés:
A fürtnek a Kubernetes 1.33-es vagy újabb verzióját kell futtatnia.
Ha a az aks update parancs ReconcileAzureKeyVaultKmsError hibát ad vissza, futtassa a következő parancsot annak ellenőrzéséhez, hogy tud-e meglévő titkokat olvasni és írni:
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Ha ez a parancs meghiúsul (például a webhookot elutasítják, vagy az erőforrás nem található), javítsa ki a problémát, és futtassa újra a frissítési parancsot. Az "Objektum módosult" üzenet nem igényel műveletet – kezelje sikerként.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled
KMS-konfiguráció ellenőrzése
A KMS-titkosítás engedélyezése után ellenőrizze a konfigurációt.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
A kimenet tartalmazza a KMS-konfigurációt:
{
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Ügyfél által felügyelt kulcstitkosítás engedélyezése privát kulcstartóval
A fokozott biztonság érdekében használhat egy privát kulcstartót, amelynek nyilvános hálózati hozzáférése le van tiltva. Az AKS a megbízható szolgáltatások tűzfalkivételén keresztül fér hozzá a titkos kulcstartóhoz. Ez a szakasz bemutatja, hogyan konfigurálhatók az ügyfél által felügyelt kulcsok privát kulcstartóval.
Kulcstárhely és kulcs létrehozása megbízható szolgáltatások hozzáférésével
Megjegyzés:
Ez a szakasz bemutatja, hogyan hozhat létre kezdetben nyilvános hálózati hozzáféréssel rendelkező kulcstárat, majd engedélyezheti a tűzfalat megbízható szolgáltatások kihagyásával. Ez a megközelítés csak szemléltető célokat szolgál. Éles környezetben a kulcstárolót kezdetektől fogva privátként kell létrehozni és kezelni. A privát kulcstartók kezelésével kapcsolatos útmutatásért tekintse meg az Azure Key Vault hálózati biztonságát.
Hozzon létre egy kulcstárat, az Azure RBAC engedélyezésével.
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)Rendelje hozzá magát a Key Vault Crypto Officer szerephez, hogy létrehozhasson egy kulcsot.
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_IDHozzon létre egy kulcsot a kulcstárban. Győződjön meg arról, hogy
encryptdecrypta kulcsműveletek engedélyezve vannak.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|/[^/]*$||')Engedélyezze a Key Vault tűzfalát a megbízható szolgáltatások általi megkerüléssel.
az keyvault update \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --default-action Deny \ --bypass AzureServicesA
--default-action Denyparaméter blokkolja a nyilvános hálózati hozzáférést, és a paraméter lehetővé teszi, hogy megbízható--bypass AzureServicesAzure-szolgáltatások (beleértve az AKS-t) hozzáférjenek a kulcstartóhoz.
Felhasználó által hozzárendelt felügyelt identitás létrehozása
Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a fürthöz.
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)Rendelje hozzá a szükséges szerepköröket a felügyelt identitáshoz.
# 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
Privát új AKS cluster létrehozása ügyfél által kezelt kulcsokkal
Hozzon létre egy új AKS-fürtöt KMS-titkosítással, ügyfél által felügyelt kulcsok és egy privát kulcstároló használatával.
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
Ügyfél által felügyelt kulcsok engedélyezése meglévő fürtön (privát)
Engedélyezze a KMS-titkosítást ügyfél által felügyelt kulcsokkal egy meglévő AKS-fürt privát kulcstárolójának használatával.
Megjegyzés:
A fürtnek a Kubernetes 1.33-es vagy újabb verzióját kell futtatnia.
Ha a az aks update parancs ReconcileAzureKeyVaultKmsError hibát ad vissza, futtassa a következő parancsot annak ellenőrzéséhez, hogy tud-e meglévő titkokat olvasni és írni:
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Ha ez a parancs meghiúsul (például a webhookot elutasítják, vagy az erőforrás nem található), javítsa ki a problémát, és futtassa újra a frissítési parancsot. Az "Objektum módosult" üzenet nem igényel műveletet – kezelje sikerként.
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-konfiguráció ellenőrzése
A KMS-titkosítás engedélyezése után ellenőrizze a konfigurációt.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
A kimenet tartalmazza a KMS-konfigurációt:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Private",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Ügyfél által felügyelt kulcstitkosítás engedélyezése nyilvános kulcstartóval
Az ügyfél által kezelt kulcsokkal saját Azure Key Vault- és titkosítási kulcsokat hozhat létre és kezelhet. Ez a szakasz bemutatja, hogyan konfigurálhatók az ügyfél által felügyelt kulcsok nyilvános kulcstartóval.
Kulcstár és kulcs létrehozása
Hozzon létre egy kulcstárat, az Azure RBAC engedélyezésével.
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)Rendelje hozzá magát a Key Vault Crypto Officer szerephez, hogy létrehozhasson egy kulcsot.
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_IDHozzon létre egy kulcsot a kulcstárban. Győződjön meg arról, hogy
encryptdecrypta kulcsműveletek engedélyezve vannak.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|/[^/]*$||')
Felhasználó által hozzárendelt felügyelt identitás létrehozása
Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a fürthöz.
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)Rendelje hozzá a szükséges szerepköröket a felügyelt identitáshoz.
# 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
Új AKS-fürt létrehozása ügyfél által kezelt kulcsokkal
Hozzon létre egy új AKS fürtöt KMS titkosítással, ügyfél által kezelt kulcsokkal.
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
Ügyfél által felügyelt kulcsok engedélyezése meglévő fürtön
Engedélyezze a KMS-titkosítást ügyfél által felügyelt kulcsokkal egy meglévő AKS-fürtön.
Megjegyzés:
A fürtnek a Kubernetes 1.33-es vagy újabb verzióját kell futtatnia.
Ha a az aks update parancs ReconcileAzureKeyVaultKmsError hibát ad vissza, futtassa a következő parancsot annak ellenőrzéséhez, hogy a meglévő titkok olvashatók-e és írhatók-e:
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Ha ez a parancs meghiúsul (például a webhookot elutasítják, vagy az erőforrás nem található), javítsa ki a problémát, és futtassa újra a frissítési parancsot. Az "Objektum módosult" üzenet nem igényel műveletet – kezelje sikerként.
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-konfiguráció ellenőrzése
A KMS-titkosítás engedélyezése után ellenőrizze a konfigurációt.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
A kimenet tartalmazza a KMS-konfigurációt:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Public",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Migrálás a kulcskezelési beállítások között
A platform által felügyelt és az ügyfél által felügyelt kulcsok között migrálhat.
Migrálás platform által felügyelt kulcsról ügyfél által felügyelt kulcsra
A platform által felügyelt kulcsok és az ügyfél által felügyelt kulcsok közötti migráláshoz először állítsa be a kulcstartót, a kulcsot és a felügyelt identitást az ügyfél által felügyelt kulcsok szakaszban leírtak szerint, majd futtassa a frissítési parancsot:
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
Migrálás az ügyfél által felügyelt kulcsokból a platform által felügyelt kulcsok felé
Az ügyfél által felügyelt kulcsokból a platform által felügyelt kulcsok közötti migráláshoz:
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--disable-azure-keyvault-kms
Kulcsrotálás
A KMS-adattitkosítással a kulcsforgatás a kulcskezelési lehetőségtől függően eltérően történik:
- Platform által felügyelt kulcsok: A kulcsváltás automatikus. Nincs szükség műveletre.
- Ügyfél által kezelt kulcsok: Miután elforgatta a kulcsot az Azure Key Vaultban, a KMS rendszeresen észleli az új kulcsverziót. Várjon legalább hét napot az új kulcsverzió létrehozása és a régi törlése között.
Megjegyzés:
Az örökölt KMS-felülettel ellentétben ezzel az új implementációval nem kell manuálisan újra titkos kulcsokat titkosítani a kulcsváltás után. Ezt a platform automatikusan kezeli.
Ne törölje és ne állítsa lejártra a régi kulcsverziót közvetlenül az új létrehozása után.