إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح لك هذه المقالة كيفية تفعيل تشفير بيانات خدمة إدارة المفاتيح (KMS) لأسرار Kubernetes في خدمة Azure Kubernetes (AKS). تشفير KMS يشفر أسرار Kubernetes المخزنة في etcd باستخدام مفاتيح Azure Key Vault.
يدعم AKS خيارين رئيسيين للإدارة فقط:
- مفاتيح المنصة المدارة (PMK): تقوم AKS تلقائيا بإنشاء وإدارة مفاتيح التشفير. يوفر هذا الخيار أبسط إعداد مع تدوير تلقائي للمفاتيح.
- مفاتيح إدارة العميل (CMK): تقوم بإنشاء وإدارة خزنة مفاتيح Azure ومفاتيح التشفير الخاصة بك. يوفر هذا الخيار تحكما كاملا في دورة حياة المفتاح ويلبي متطلبات الامتثال التي تفرض المفاتيح المدارة من قبل العملاء.
لمزيد من المعلومات حول مفاهيم التشفير وخيارات المفاتيح، راجع مفاهيم تشفير البيانات عند السكون ل AKS.
Important
تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:
Prerequisites
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تتطلب هذه المقالة الإصدار 2.73.0 أو أحدث من واجهة الأزرور. إذا كنت تستخدم Azure Cloud Shell، فإن أحدث إصدار مثبت بالفعل هناك.
- تحتاج إلى
aks-previewإصدار إضافة Azure CLI 19.0.0b13 أو أحدث.- إذا لم يكن لديك
aks-previewالملحق بالفعل، فقم بتثبيته باستخدامaz extension addالأمر .az extension add --name aks-preview - إذا كان لديك
aks-previewالملحق بالفعل، فقم بتحديثه للتأكد من أن لديك أحدث إصدار باستخدامaz extension updateالأمر .az extension update --name aks-preview
- إذا لم يكن لديك
-
kubectlأداة CLI مثبتة.
تسجيل علامة الميزة
لاستخدام تشفير بيانات KMS مع مفاتيح تدار من المنصة، سجل علامة KMSPMKPreview الميزة في اشتراكك.
سجل علم الميزة باستخدام
az feature registerالأمر.az feature register --namespace Microsoft.ContainerService --name KMSPMKPreviewتحقق من حالة التسجيل باستخدام
az feature showالأمر . يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل.az feature show --namespace Microsoft.ContainerService --name KMSPMKPreviewعندما تظهر الحالة مسجلة، قم بتحديث تسجيل مزود موارد Microsoft.ContainerService باستخدام
az provider registerالأمر.az provider register --namespace Microsoft.ContainerService
قم بتعيين متغيرات البيئة
قم بإعداد متغيرات البيئة لنشرك. استبدل القيم المؤقتة بقيمك الخاصة.
# 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
تمكين تشفير المفاتيح المدارة على المنصة
مع المفاتيح المدارة على المنصة، تقوم AKS تلقائيا بإنشاء وإدارة خزنة مفاتيح Azure ومفاتيح التشفير. يتم التحكم تلقائيا في تدوير المفاتيح بواسطة المنصة.
أنشئ عنقود AKS جديد باستخدام مفاتيح مدارة على المنصة
أنشئ عنقود AKS جديد مع تشفير KMS باستخدام مفاتيح تدار من المنصة.
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kubernetes-version 1.33.0 \
--kms-infrastructure-encryption Enabled \
--generate-ssh-keys
تمكين المفاتيح المدارة على المنصة على مجموعة موجودة
تمكين تشفير KMS باستخدام مفاتيح مدارة على المنصة على مجموعة AKS موجودة.
ملاحظة
يجب أن يكون العنقود يعمل بإصدار Kubernetes 1.33 أو أحدث.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled
تحقق من تكوين KMS
بعد تفعيل تشفير KMS، تحقق من الإعدادات.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
يشمل الإخراج تكوين KMS:
{
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
تمكين تشفير المفاتيح المدارة من قبل العميل باستخدام خزنة المفاتيح الخاصة
لتعزيز الأمان، يمكنك استخدام خزنة مفاتيح خاصة تعطيل الوصول إلى الشبكة العامة. يصل AKS إلى خزنة المفاتيح الخاصة من خلال استثناء جدار الحماية الخاص بالخدمات الموثوقة. يوضح هذا القسم كيفية تكوين المفاتيح التي يديرها العميل مع خزنة مفاتيح خاصة.
أنشئ خزنة مفاتيح ومفتاح مع وصول للخدمات الموثوقة
ملاحظة
يوضح هذا القسم إنشاء خزنة مفاتيح مع وصول الشبكة العامة في البداية، ثم تمكين الجدار الناري عبر تجاوز الخدمات الموثوقة. هذا النهج لأغراض توضيحية فقط. في بيئات الإنتاج، يجب أن تنشئ وتدير خزنة المفاتيح الخاصة بك من البداية. للحصول على إرشادات حول إدارة خزائن المفاتيح الخاصة، راجع Azure Key Vault لأمن الشبكة.
إنشاء مخزن مفاتيح مع Azure RBAC enabled.
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)خصص لنفسك دور مسؤول العملات الرقمية في خزنة المفاتيح لإنشاء مفتاح.
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_IDأنشئ مفتاحا في خزنة المفاتيح. تأكد
encryptمنdecryptتمكين العمليات الرئيسية.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|/[^/]*$||')فعل جدار الحماية الخاص بمخزن المفاتيح مع تجاوز الخدمات الموثوقة.
az keyvault update \ --name $KEY_VAULT_NAME \ --resource-group $RESOURCE_GROUP \ --default-action Deny \ --bypass AzureServicesيمنع المعامل
--default-action Denyالوصول إلى الشبكة العامة، ويسمح هذا المعامل--bypass AzureServicesلخدمات Azure الموثوقة (بما في ذلك AKS) بالوصول إلى خزنة المفاتيح.
إنشاء هوية مُدارة يعينها المستخدم
أنشئ هوية مدارة معينة من قبل المستخدم للمجموعة.
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)تعيين الأدوار المطلوبة للهوية المدارة.
# 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
أنشئ عنقود AKS جديد باستخدام مفاتيح يديرها العميل (خاص)
أنشئ عنقود AKS جديد مع تشفير KMS باستخدام مفاتيح يديرها العميل مع خزنة مفاتيح خاصة.
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
تمكين المفاتيح المدارة من قبل العميل على مجموعة موجودة (خاصة)
تمكين تشفير KMS باستخدام مفاتيح تديرها العملاء باستخدام خزنة مفاتيح خاصة على عنقود AKS موجود.
ملاحظة
يجب أن يكون العنقود يعمل بإصدار Kubernetes 1.33 أو أحدث.
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
بعد تفعيل تشفير KMS، تحقق من الإعدادات.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
يشمل الإخراج تكوين KMS:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Private",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
تمكين تشفير المفاتيح المدارة من قبل العميل باستخدام خزنة المفاتيح العامة
مع المفاتيح التي يديرها العميل، تقوم بإنشاء وإدارة خزنة مفاتيح Azure ومفاتيح التشفير الخاصة بك. يوضح هذا القسم كيفية تكوين المفاتيح التي يديرها العميل مع خزنة المفاتيح العامة.
أنشئ خزنة مفاتيح ومفتاح
إنشاء مخزن مفاتيح مع Azure RBAC enabled.
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)خصص لنفسك دور مسؤول العملات الرقمية في خزنة المفاتيح لإنشاء مفتاح.
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_IDأنشئ مفتاحا في خزنة المفاتيح. تأكد
encryptمنdecryptتمكين العمليات الرئيسية.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|/[^/]*$||')
إنشاء هوية مُدارة يعينها المستخدم
أنشئ هوية مدارة معينة من قبل المستخدم للمجموعة.
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)تعيين الأدوار المطلوبة للهوية المدارة.
# 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
أنشئ عنقود AKS جديد باستخدام مفاتيح يديرها العميل
أنشئ عنقود AKS جديد مع تشفير KMS باستخدام مفاتيح يديرها العميل.
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
تمكين المفاتيح المدارة من قبل العميل على عنقود موجود
تمكين تشفير KMS باستخدام مفاتيح يديرها العميل على مجموعة AKS موجودة.
ملاحظة
يجب أن يكون العنقود يعمل بإصدار Kubernetes 1.33 أو أحدث.
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
بعد تفعيل تشفير KMS، تحقق من الإعدادات.
az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query 'securityProfile'
يشمل الإخراج تكوين KMS:
{
"azureKeyVaultKms": {
"enabled": true,
"keyId": "https://<key-vault-name>.vault.azure.net/keys/<key-name>",
"keyVaultNetworkAccess": "Public",
"keyVaultResourceId": "<key-vault-resource-id>"
},
"kubernetesResourceObjectEncryptionProfile": {
"infrastructureEncryption": "Enabled"
}
}
التنقل بين خيارات إدارة المفاتيح
يمكنك التنقل بين المفاتيح المدارة على المنصة والمفاتيح التي يديرها العملاء.
الانتقال من المفاتيح المدارة على المنصة إلى المفاتيح التي يديرها العميل
للانتقال من المفاتيح المدارة على المنصة إلى المفاتيح التي يديرها العميل، قم أولا بإعداد خزنة المفاتيح، والمفتاح، والهوية المدارة كما هو موضح في قسم المفاتيح المدارة من قبل العميل، ثم قم بتشغيل أمر التحديث:
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
الانتقال من المفاتيح التي يديرها العميل إلى مفاتيح تدار على المنصة
للانتقال من المفاتيح التي يديرها العملاء إلى المفاتيح المدارة على المنصة:
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--kms-infrastructure-encryption Enabled \
--disable-azure-keyvault-kms
دوران المفتاح
مع تشفير بيانات KMS، يتم التعامل مع تدوير المفاتيح بشكل مختلف حسب خيار إدارة المفاتيح لديك:
- مفاتيح تدار من المنصة: تدوير المفاتيح تلقائي. لا توجد أية إجراءات مطلوبة.
- مفاتيح يديرها العميل: عند تدوير نسخة المفتاح في Azure Key Vault، تكتشف وحدة تحكم KMS التدوير بشكل دوري (كل 6 ساعات) وتستخدم النسخة الجديدة من المفتاح.
ملاحظة
على عكس تجربة KMS القديمة، مع هذا التطبيق الجديد لا تحتاج إلى إعادة تشفير الأسرار يدويا بعد تدوير المفاتيح. المنصة تتعامل مع هذا تلقائيا.