Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Kubernetes Service'te (AKS) Kubernetes gizli dizileri için Anahtar Yönetimi Hizmeti (KMS) veri şifrelemesini etkinleştirme adımları gösterilmektedir. KMS şifrelemesi, Azure Key Vault anahtarlarını kullanarak etcd'de depolanan Kubernetes gizli dizilerini şifreler.
AKS iki anahtar yönetimi seçeneğini destekler:
- Platform tarafından yönetilen anahtarlar (PMK):AKS, şifreleme anahtarlarını otomatik olarak oluşturur ve yönetir. Bu seçenek, otomatik anahtar döndürme ile en basit kurulumu sağlar.
- Müşteri tarafından yönetilen anahtarlar (CMK):Kendi Azure Key Vault ve şifreleme anahtarlarınızı oluşturup yönetirsiniz. Bu seçenek, anahtar yaşam döngüsü üzerinde tam denetim sağlar ve müşteri tarafından yönetilen anahtarları zorunlu hale getiren uyumluluk gereksinimlerini karşılar.
Şifreleme kavramları ve anahtar seçenekleri hakkında daha fazla bilgi için AKS için beklemede veri şifreleme kavramları bölümüne bakın.
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Önkoşullar
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- Bu makale, Azure CLI'nın 2.73.0 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanıyorsanız en son sürüm zaten orada yüklüdür.
- Azure CLI uzantısı sürüm
aks-previewveya üzeri gerekir.- Eğer
aks-previewuzantısına henüz sahip değilseniz,az extension addkomutunu kullanarak yükleyin.az extension add --name aks-preview - Uzantıya
aks-previewzaten sahipseniz, komutunu kullanarak en son sürüme sahip olduğunuzdan emin olmak için uzantıyı güncelleştirinaz extension update.az extension update --name aks-preview
- Eğer
-
kubectlCLI aracı yüklü.
Özellik bayrağını kaydetme
KMS veri şifrelemesini platform tarafından yönetilen anahtarlarla kullanmak için özellik bayrağını KMSPMKPreview aboneliğinize kaydedin.
komutunu kullanarak özellik bayrağını
az feature registerkaydedin.az feature register --namespace Microsoft.ContainerService --name KMSPMKPreviewkomutunu kullanarak
az feature showkayıt durumunu doğrulayın. Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.az feature show --namespace Microsoft.ContainerService --name KMSPMKPreviewDurum Kayıtlı olarak gösterildiğinde komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin
az provider register.az provider register --namespace Microsoft.ContainerService
Ortam değişkenlerini ayarlama
Dağıtımınız için ortam değişkenlerini ayarlayın. Yer tutucu değerlerini kendi değerlerinizle değiştirin.
# 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 tarafından yönetilen anahtar şifrelemesini etkinleştirme
Platform tarafından yönetilen anahtarlarla AKS, Azure Key Vault ve şifreleme anahtarlarını otomatik olarak oluşturur ve yönetir. Anahtar döndürme, platform tarafından otomatik olarak işlenir.
Platform tarafından yönetilen anahtarlarla yeni bir AKS kümesi oluşturma
Platform tarafından yönetilen anahtarları kullanarak KMS şifrelemesi ile yeni bir AKS kümesi oluşturun.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--generate-ssh-keys
Mevcut bir kümede platform tarafından yönetilen anahtarları etkinleştirme
Mevcut aks kümesinde platform tarafından yönetilen anahtarlarla KMS şifrelemesini etkinleştirin.
Uyarı
Kümenin Kubernetes sürüm 1.33 veya üzerini çalıştırıyor olması gerekir.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled
KMS yapılandırmasını doğrulama
KMS şifrelemesini etkinleştirdikten sonra yapılandırmayı doğrulayın.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
Çıkış KMS yapılandırmasını içerir:
{
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Müşteri yönetimli anahtar şifrelemesini gizli anahtar kasasıyla etkinleştirme
Gelişmiş güvenlik için, genel ağ erişiminin devre dışı bırakıldığı bir özel anahtar kasası kullanabilirsiniz. AKS, güvenilir hizmetler güvenlik duvarı istisnası aracılığıyla özel anahtar kasasına erişir. Bu bölümde, müşteri tarafından yönetilen anahtarların özel bir anahtar kasasıyla nasıl yapılandırılacağı gösterilmektedir.
Güvenilen hizmetlerin erişimine sahip bir anahtar kasası ve anahtar oluşturun
Uyarı
Bu bölümde başlangıçta genel ağ erişimine sahip bir anahtar kasası oluşturma ve ardından güvenilen hizmetlerle güvenlik duvarını atlama özelliğini etkinleştirme gösterilmektedir. Bu yaklaşım yalnızca açıklayıcı amaçlar içindir. Üretim ortamlarında, başlangıçtan itibaren anahtar kasanızı özel olarak oluşturup yönetmeniz gerekir. Özel anahtar kasalarını yönetme yönergeleri için bkz. Azure Key Vault ağ güvenliği.
Azure RBAC'nin etkinleştirildiği bir anahtar kasası oluşturun.
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)Anahtar oluşturmak için kendinize Key Vault Şifreleme Yetkilisi rolünü atayın.
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_IDAnahtar kasasında bir anahtar oluşturun.
encryptvedecryptanahtar işlemlerinin etkinleştirildiğinden emin olun.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|/[^/]*$||')Anahtar kasası güvenlik duvarını güvenilir hizmetleri aşma ile etkinleştirin.
az keyvault update \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --default-action Deny \ --bypass AzureServices--default-action Denyparametresi genel ağ erişimini engeller ve--bypass AzureServicesparametresi güvenilen Azure hizmetlerinin (AKS dahil) anahtar kasasına erişmesine izin verir.
Kullanıcının atadığı yönetilen kimliği oluşturun
Küme için kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
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)Gerekli rolleri yönetilen kimliğe atayın.
# 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
Müşteri tarafından yönetilen anahtarlarla yeni bir AKS kümesi oluşturma (özel)
Özel anahtar kasasıyla müşteri tarafından yönetilen anahtarları kullanarak KMS (Anahtar Yönetim Hizmeti) şifrelemesi ile yeni bir AKS kümesi oluşturun.
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
Mevcut bir kümede müşteri tarafından yönetilen anahtarları etkinleştirme (özel)
Mevcut AKS kümesinde özel bir anahtar kasası kullanarak müşteri tarafından yönetilen anahtarlarla KMS şifrelemesini etkinleştirin.
Uyarı
Kümenin Kubernetes sürüm 1.33 veya üzerini çalıştırıyor olması gerekir.
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 yapılandırmasını doğrulama
KMS şifrelemesini etkinleştirdikten sonra yapılandırmayı doğrulayın.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
Çıkış KMS yapılandırmasını içerir:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Private",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Açık anahtar kasasıyla müşteri tarafından yönetilen anahtar şifrelemesini etkinleştirme
Müşteri tarafından yönetilen anahtarlarla kendi Azure Key Vault ve şifreleme anahtarlarınızı oluşturup yönetirsiniz. Bu bölümde, müşteri tarafından yönetilen anahtarların ortak anahtar kasasıyla nasıl yapılandırılır gösterilmektedir.
Anahtar kasası ve anahtar oluştur
Azure RBAC'nin etkinleştirildiği bir anahtar kasası oluşturun.
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)Anahtar oluşturmak için kendinize Key Vault Şifreleme Yetkilisi rolünü atayın.
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_IDAnahtar kasasında bir anahtar oluşturun.
encryptvedecryptanahtar işlemlerinin etkinleştirildiğinden emin olun.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|/[^/]*$||')
Kullanıcının atadığı yönetilen kimliği oluşturun
Küme için kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
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)Gerekli rolleri yönetilen kimliğe atayın.
# 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
Müşteri tarafından yönetilen anahtarlarla yeni bir AKS kümesi oluşturma
Müşteri tarafından yönetilen anahtarları kullanarak KMS şifrelemesi ile yeni bir AKS kümesi oluşturun.
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
Mevcut bir kümede müşteri tarafından yönetilen anahtarları etkinleştirme
Mevcut aks kümesinde müşteri tarafından yönetilen anahtarlarla KMS şifrelemesini etkinleştirin.
Uyarı
Kümenin Kubernetes sürüm 1.33 veya üzerini çalıştırıyor olması gerekir.
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 yapılandırmasını doğrulama
KMS şifrelemesini etkinleştirdikten sonra yapılandırmayı doğrulayın.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
Çıkış KMS yapılandırmasını içerir:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Public",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
Anahtar yönetimi seçenekleri arasında geçiş yapma
Platform tarafından yönetilen anahtarlar ile müşteri tarafından yönetilen anahtarlar arasında geçiş yapabilirsiniz.
Platform tarafından yönetilen anahtarlardan müşteri tarafından yönetilen anahtarlara geçiş
Platform tarafından yönetilen anahtarlardan müşteri tarafından yönetilen anahtarlara geçiş yapmak için önce müşteri tarafından yönetilen anahtarlar bölümünde açıklandığı gibi anahtar kasasını, anahtarı ve yönetilen kimliği ayarlayın, ardından güncelleştirme komutunu çalıştırın:
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
Müşteri tarafından yönetilen anahtarlardan platform tarafından yönetilen anahtarlara geçiş
Müşteri tarafından yönetilen anahtarlardan platform tarafından yönetilen anahtarlara geçiş yapmak için:
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--disable-azure-keyvault-kms
Anahtar döndürme
KMS veri şifrelemesi ile anahtar döndürme, anahtar yönetimi seçeneğinize bağlı olarak farklı şekilde işlenir:
- Platform tarafından yönetilen anahtarlar: Anahtar döndürme otomatiktir. Eylem gerekmez.
- Müşteri tarafından yönetilen anahtarlar: Azure Key Vault'ta anahtar sürümünü döndürdüğünüzde, KMS denetleyicisi döndürmeyi düzenli aralıklarla algılar (6 saatte bir) ve yeni anahtar sürümünü kullanır.
Uyarı
Eski KMS deneyiminden farklı olarak, bu yeni uygulamayla anahtar döndürmeden sonra gizli dizileri el ile yeniden şifrelemeniz gerekmez. Platform bunu otomatik olarak işler.