تشفير بيانات التوزيع
عند تشغيل موارد مثيلات Azure Container (ACI) في السحابة، تقوم خدمة ACI بتجميع البيانات المتعلقة بالحاويات الخاصة بك والاحتفاظ بها. يقوم ACI تلقائيّاً بتشفير هذه البيانات عند استمرارها في السحابة. يحمي هذا التشفير بياناتك للمساعدة في تلبية التزامات الأمان والامتثال لمؤسستك. يمنحك ACI أيضاً خيار تشفير هذه البيانات بمفتاحك الخاص، ما يمنحك تحكماً أكبر في البيانات المتعلقة بعمليات توزيع ACI.
حول تشفير بيانات ACI
يتم تشفير البيانات الموجودة في ACI وفك تشفيرها باستخدام تشفير 256 بت AES. يتم تمكينه لجميع عمليات توزيع ACI، ولا تحتاج إلى تعديل التوزيع أو الحاويات للاستفادة من هذا التشفير. يتضمن هذا بيانات التعريف حول التوزيع، ومتغيرات البيئة، والمفاتيح التي يتم تمريرها إلى الحاويات الخاصة بك، والسجلات التي استمرت بعد إيقاف الحاويات الخاصة بك حتى تتمكن من رؤيتها. لا يؤثر التشفير على أداء مجموعة الحاويات الخاصة بك، ولا توجد تكلفة إضافية للتشفير.
يمكنك الاعتماد على المفاتيح التي تديرها Microsoft لتشفير بيانات الحاوية الخاصة بك، أو يمكنك إدارة التشفير باستخدام المفاتيح الخاصة بك. يقارن الجدول التالي بين هذه الخيارات:
المفاتيح المُدارة من Microsoft | المفاتيح التي يديرها العميل | |
---|---|---|
Encryption/decryption operations | Azure | Azure |
Key storage | متجر مفاتيح Microsoft | Azure Key Vault |
Key rotation responsibility | Microsoft | العميل |
Key access | Microsoft فقط | Microsoft، العميل |
تستعرض هذه المقالة تدفقين لتشفير البيانات باستخدام مفتاح يديره العميل:
- تشفير البيانات باستخدام مفتاح يديره العميل مخزن في Azure Key Vault
- تشفير البيانات باستخدام مفتاح يديره العميل مخزن في Azure Key Vault محمية بالشبكة مع تمكين الخدمات الموثوق بها.
تشفير البيانات باستخدام مفتاح يديره العميل مخزن في Azure Key Vault
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدماً أمر az login. لإنهاء عملية المصادقة، التزم بالخطوات المعروضة في وحدتك الطرفية. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
إنشاء مبدأ الخدمة لـ ACI
تتمثل الخطوة الأولى في التأكد من أن Azure tenant لديه مدير خدمة معين لمنح الأذونات لخدمة مثيلات Azure Container.
هام
من أجل تشغيل الأمر التالي وإنشاء مدير خدمة بنجاح، تأكد من أن لديك أذونات لإنشاء أساسيات الخدمة في المستأجر الخاص بك.
سيقوم أمر CLI التالي بإعداد ACI SP في بيئة Azure الخاصة بك:
az ad sp create --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
يجب أن يُظهر لك الإخراج من تشغيل هذا الأمر مبدأ خدمة تم إعداده باستخدام "displayName": "Azure Container Instance Service."
في حالة عدم قدرتك على إنشاء مدير الخدمة بنجاح:
- تأكد من أن لديك أذونات للقيام بذلك في المستأجر الخاص بك
- تحقق لمعرفة ما إذا كان مدير الخدمة موجوداً بالفعل في المستأجر الخاص بك للتوزيع إلى ACI. يمكنك القيام بذلك عن طريق تشغيل
az ad sp show --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9
واستخدام كيان الخدمة هذا بدلاً من ذلك
قم بإنشاء مورد Key Vault
إنشاء Azure Key Vault باستخدام مدخل Microsoft Azure،Azure CLI، أو Azure PowerShell.
بالنسبة لخصائص خزينتك الرئيسية، استخدم الإرشادات التالية:
- الاسم: A مطلوب اسم فريد.
- Subscription: اختر اشتراكاً.
- ضمن مجموعة الموارد، إما أن تختار مجموعة موارد موجودة، أو أنشئ مجموعة موارد جديدة، وأدخل اسم مجموعة موارد.
- في القائمة المنسدلة Location، اختر موقعاً.
- يمكنك ترك الخيارات الأخرى لقيمتها الافتراضية أو الاختيار بناءً على المتطلبات الإضافية.
هام
عند استخدام المفاتيح المُدارة بواسطة العميل لتشفير قالب توزيع ACI، يوصى بتعيين الخاصيتين التاليتين في خزنة المفاتيح، الحذف الناعم وعدم التطهير. لا يتم تمكين هذه الخصائص افتراضيّاً، ولكن يمكن تمكينها باستخدام PowerShell أو Azure CLI في مخزن مفاتيح جديد أو موجود.
قم بإنشاء مفتاح جديد
بمخزون إنشاء مخزن المفاتيح، انتقل إلى المورد في مدخل Microsoft Azure. في قائمة التنقل اليسرى من المورد، ضمن "Settings"، انقر فوق Keys. في طريقة عرض "المفاتيح"، انقر على "إنشاء / استيراد" لإنشاء مفتاح جديد. استخدم أي اسم فريد لهذا المفتاح، وأي تفضيلات أخرى بناءً على متطلباتك.
تعيين نُهج الوصول
قم بإنشاء نُهج وصول جديدة للسماح لخدمة ACI بالوصول إلى مفتاحك.
- بمخزون إنشاء المفتاح، ارجع مرة أخرى إلى شفرة مورد خزنة المفاتيح، ضمن "Settings"، انقر فوق Access Policies.
- في صفحة "Access Policies" لمخزنك الرئيسي، انقر فوق Add Access Policy.
- عيّن Key Permissions لتضمين Get وUnwrap Key
- بالنسبة إلى Select Principal حدد Azure Container Instance Service
- انقر فوق Add في الأسفل
يجب أن تظهر نُهج الوصول الآن في نُهج الوصول الخاصة بخزينة المفاتيح.
قم بتعديل قالب توزيع JSON الخاص بك
هام
يتوفر تشفير بيانات التوزيع باستخدام مفتاح يديره العميل في أحدث إصدار من واجهة برمجة التطبيقات (2019-12-01) والذي يتم طرحه حالياً. حدد إصدار API هذا في قالب التوزيع الخاص بك. إذا كانت لديك أي مشكلات تتعلق بهذا الأمر، فيرجى التواصل مع دعم Azure.
بمخزون إعداد مفتاح خزنة المفاتيح ونُهج الوصول، أضف الخصائص التالية إلى قالب توزيع ACI. تعرف على المزيد حول توزيع موارد ACI باستخدام قالب في برنامج تعليمي: قم بتوزيع مجموعة متعددة الحاويات باستخدام قالب Azure Resource Manager.
- ضمن
resources
, قم بتعيينapiVersion
إلى2019-12-01
. - ضمن قسم خصائص مجموعة الحاوية لقالب التوزيع، أضف
encryptionProperties
، والذي يحتوي على القيم التالية:vaultBaseUrl
: اسم DNS لمخزنك الرئيسي الذي يمكن العثور عليه في شفرة النظرة العامة لمورد المخزن الرئيسي في PortalkeyName
: اسم المفتاح الذي تم إنشاؤه سابقاًkeyVersion
: الإصدار الحالي من المفتاح. يمكن العثور على هذا من خلال النقر على المفتاح نفسه (ضمن "المفاتيح" في قسم "الإعدادات" بمورد المخزن الرئيسي)
- ضمن خصائص مجموعة الحاوية، أضف خاصية
sku
property بالقيمةStandard
. الخاصيةsku
مطلوبة في إصدار API 2019-12-01.
يعرض مقتطف القالب التالي هذه الخصائص الإضافية لتشفير بيانات التوزيع:
[...]
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"encryptionProperties": {
"vaultBaseUrl": "https://example.vault.azure.net",
"keyName": "acikey",
"keyVersion": "xxxxxxxxxxxxxxxx"
},
"sku": "Standard",
"containers": {
[...]
}
}
}
]
فيما يلي نموذج كامل، مقتبس من القالب الموجود في برنامج تعليمي: توزيع مجموعة متعددة الحاويات باستخدام قالب Azure Resource Manager.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"encryptionProperties": {
"vaultBaseUrl": "https://example.vault.azure.net",
"keyName": "acikey",
"keyVersion": "xxxxxxxxxxxxxxxx"
},
"sku": "Standard",
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
},
{
"protocol": "tcp",
"port": "8080"
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
توزيع مواردك
إذا أنشأت ملف النموذج وعدّلته على سطح المكتب، فيمكنك تحميله إلى دليل Cloud Shell عن طريق سحب الملف إليه.
أنشئ مجموعة موارد باستخدام الأمر az group create.
az group create --name myResourceGroup --location eastus
قم بتوزيع القالب باستخدام الأمر az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file deployment-template.json
في غضون ثوانٍ قليلة، من المفترض أن تتلقى استجابة أولية من Azure. بمخزون اكتمال التوزيع، سيتم تشفير جميع البيانات المتعلقة به بواسطة خدمة ACI بالمفتاح الذي قدمته.
تشفير البيانات باستخدام مفتاح يديره العميل في Key Vault Azure المحمية بالشبكة مع تمكين الخدمات الموثوق بها
قم بإنشاء مورد Key Vault
إنشاء Azure Key Vault باستخدام مدخل Microsoft Azure،Azure CLI، أو Azure PowerShell. للبدء، لا تطبق أي قيود على الشبكة حتى نتمكن من إضافة المفاتيح الضرورية إلى المخزن. في الخطوات اللاحقة، سنضيف قيود على الشبكة ونمكن الخدمات الموثوق بها.
بالنسبة لخصائص خزينتك الرئيسية، استخدم الإرشادات التالية:
- الاسم: A مطلوب اسم فريد.
- Subscription: اختر اشتراكاً.
- ضمن مجموعة الموارد، إما أن تختار مجموعة موارد موجودة، أو أنشئ مجموعة موارد جديدة، وأدخل اسم مجموعة موارد.
- في القائمة المنسدلة Location، اختر موقعاً.
- يمكنك ترك الخيارات الأخرى لقيمتها الافتراضية أو الاختيار بناءً على المتطلبات الإضافية.
هام
عند استخدام المفاتيح المُدارة بواسطة العميل لتشفير قالب توزيع ACI، يوصى بتعيين الخاصيتين التاليتين في خزنة المفاتيح، الحذف الناعم وعدم التطهير. لا يتم تمكين هذه الخصائص افتراضيّاً، ولكن يمكن تمكينها باستخدام PowerShell أو Azure CLI في مخزن مفاتيح جديد أو موجود.
قم بإنشاء مفتاح جديد
بمخزون إنشاء مخزن المفاتيح، انتقل إلى المورد في مدخل Microsoft Azure. في قائمة التنقل اليسرى من المورد، ضمن "Settings"، انقر فوق Keys. في طريقة عرض "المفاتيح"، انقر على "إنشاء / استيراد" لإنشاء مفتاح جديد. استخدم أي اسم فريد لهذا المفتاح، وأي تفضيلات أخرى بناءً على متطلباتك. تأكد من التقاط اسم المفتاح وإصداره للخطوات اللاحقة.
إنشاء هوية مدارة معينة من قبل المستخدم لمجموعة الحاوية
قم بإنشاء هوية في اشتراكك باستخدام الأمر إنشاء هوية من الألف إلى الياء. من الممكن استخدام نفس مجموعة الموارد المستخدمة لإنشاء مخزن رئيسي، أو استخدام مجموعة أخرى.
az identity create \
--resource-group myResourceGroup \
--name myACIId
لاستخدام الهوية في الخطوات التالية، قم باستخدام الأمر"az إظهار الهوية"لتخزين معرف الخدمة الأساسي للهوية، ومعرف المورد في المتغيرات.
# Get service principal ID of the user-assigned identity
spID=$(az identity show \
--resource-group myResourceGroup \
--name myACIId \
--query principalId --output tsv)
تعيين نُهج الوصول
إنشاء نهج وصول جديد للسماح للهوية المعينة من قبل المستخدم بالوصول إلى مفتاحك وإلغاء تشفيره لأغراض التشفير.
az keyvault set-policy \
--name mykeyvault \
--resource-group myResourceGroup \
--object-id $spID \
--key-permissions get unwrapKey
تعديل أذونات شبكة Azure Key Vault
إعداد الأوامر التالية جدار حماية Azure ل Azure Key Vault والسماح لخدمات Azure الموثوق بها مثل الوصول إلى ACI.
az keyvault update \
--name mykeyvault \
--resource-group myResourceGroup \
--default-action Deny
az keyvault update \
--name mykeyvault \
--resource-group myResourceGroup \
--bypass AzureServices
قم بتعديل قالب توزيع JSON الخاص بك
هام
يتوفر تشفير بيانات النشر باستخدام مفتاح يديره العميل في إصدار واجهة برمجة التطبيقات 2022-09-01 أو أحدث. يتوفر إصدار واجهة برمجة التطبيقات 2022-09-01 فقط عبر ARM أو REST. إذا كانت لديك أي مشكلات تتعلق بهذا الأمر، فيرجى التواصل مع دعم Azure. بمخزون إعداد مفتاح خزنة المفاتيح ونُهج الوصول، أضف الخصائص التالية إلى قالب توزيع ACI. تعرف على المزيد حول توزيع موارد ACI باستخدام قالب في برنامج تعليمي: قم بتوزيع مجموعة متعددة الحاويات باستخدام قالب Azure Resource Manager.
- ضمن
resources
, قم بتعيينapiVersion
إلى2022-09-01
. - ضمن قسم خصائص مجموعة الحاوية لقالب التوزيع، أضف
encryptionProperties
، والذي يحتوي على القيم التالية:vaultBaseUrl
: اسم DNS لمخزن المفاتيح الخاص بك. يمكن العثور على هذا في جزء النظرة العامة لمورد مخزن المفاتيح في المدخلkeyName
: اسم المفتاح الذي تم إنشاؤه سابقاًkeyVersion
: الإصدار الحالي من المفتاح. يمكن العثور على هذا من خلال النقر على المفتاح نفسه (ضمن "المفاتيح" في قسم "الإعدادات" بمورد المخزن الرئيسي)identity
: هذا هو مورد URI لمثيل الهوية المدارة الذي تم إنشاؤه مسبقا
- ضمن خصائص مجموعة الحاوية، أضف خاصية
sku
property بالقيمةStandard
.sku
الخاصية مطلوبة في إصدار واجهة برمجة التطبيقات 2022-09-01. - ضمن الموارد، أضف
identity
العنصر المطلوب لاستخدام الهوية المدارة مع ACI، والذي يحتوي على القيم التالية:type
: نوع الهوية المستخدمة (إما المعينة من قبل المستخدم أو المعينة من قبل النظام). سيتم تعيين هذه الحالة إلى "UserAssigned"userAssignedIdentities
: resourceURI لنفس الهوية المعينة من قبل المستخدم المستخدمة أعلاه فيencryptionProperties
الكائن.
يعرض مقتطف القالب التالي هذه الخصائص الإضافية لتشفير بيانات التوزيع:
[...]
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId": {}
}
},
"properties": {
"encryptionProperties": {
"vaultBaseUrl": "https://example.vault.azure.net",
"keyName": "acikey",
"keyVersion": "xxxxxxxxxxxxxxxx",
"identity": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId"
},
"sku": "Standard",
"containers": {
[...]
}
}
}
]
فيما يلي نموذج كامل، مقتبس من القالب الموجود في برنامج تعليمي: توزيع مجموعة متعددة الحاويات باستخدام قالب Azure Resource Manager.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2022-09-01",
"location": "[resourceGroup().location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId": {}
}
},
"properties": {
"encryptionProperties": {
"vaultBaseUrl": "https://example.vault.azure.net",
"keyName": "acikey",
"keyVersion": "xxxxxxxxxxxxxxxx",
"identity": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACIId"
},
"sku": "Standard",
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
},
{
"protocol": "tcp",
"port": "8080"
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
توزيع مواردك
إذا أنشأت ملف النموذج وعدّلته على سطح المكتب، فيمكنك تحميله إلى دليل Cloud Shell عن طريق سحب الملف إليه.
أنشئ مجموعة موارد باستخدام الأمر az group create.
az group create --name myResourceGroup --location eastus
قم بتوزيع القالب باستخدام الأمر az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file deployment-template.json
في غضون ثوانٍ قليلة، من المفترض أن تتلقى استجابة أولية من Azure. بمخزون اكتمال التوزيع، سيتم تشفير جميع البيانات المتعلقة به بواسطة خدمة ACI بالمفتاح الذي قدمته.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ