تأمين الموارد لمنع حدوث تغييرات غير متوقعة
كمسؤول، يمكنك تأمين اشتراك أو مجموعة موارد أو مورد لمنع المستخدمين الآخرين في مؤسستك من حذف الموارد الهامة أو تعديلها بطريق الخطأ. يتجاوز التأمين أي أذونات قد تكون لدى المستخدم.
يمكنك تعيين مستوى التأمين إلى CanNotDelete أو ReadOnly. في المدخل، تسمى عمليات التأمين Delete وRead-onlyعلى التوالي.
- CanNotDelete يعني أنه لا يزال بإمكان المستخدمين المعتمدين قراءة المورد وتعديله، لكن لا يمكنهم حذف المورد.
- ReadOnly يعني أن الأشخاص المعتمدين يمكنهم قراءة مورد، ولكن لا يمكنهم حذف المورد أو تحديثه. تطبيق هذا التأمين مشابه لتقييد كافة المستخدمين المعتمدين إلى الأذونات الممنوحة من قِبل دور القارئ.
بخلاف التحكم في الوصول استناداً إلى الدور، يمكنك استخدام عميات تأمين الإدارة لتطبيق قيود على جميع المستخدمين والأدوار. للتعرف على أذونات الإعداد للمستخدمين والأدوار، راجع التحكم في الوصول استناداً إلى الدور من Azure (Azure RBAC).
ميراث التأمين
عندما تقوم بتطبيق قفل على نطاق رئيسي، فإن جميع الموارد داخل هذا النطاق ترث نفس القفل. حتى الموارد التي تضيفها لاحقاً ترث التأمين من الأصل. القفل الأكثر تقييداً في التوريث له الأسبقية.
إذا كان لديك تأمين حذف على مورد وحاولت حذف مجموعة الموارد الخاصة به، فسيتم حظر عملية الحذف بأكملها. حتى إذا لم يتم تأمين مجموعة الموارد أو الموارد الأخرى في مجموعة الموارد، فلن يحدث الحذف. ليس لديك حذف جزئي.
عند إلغاء اشتراك Azure، يتم إلغاء تنشيط الموارد في البداية ولكن لا يتم حذفها. لا يمنع تأمين المورد إلغاء الاشتراك. بعد فترة انتظار، يتم حذف الموارد نهائياً. لا يمنع تأمين المورد الحذف الدائم للموارد.
فهم نطاق التأمينات
ملاحظة
من المهم أن نفهم أن التأمينات لا تنطبق على جميع أنواع العمليات. يمكن تقسيم عمليات Azure إلى فئتين - وحدة التحكم ومستوى البيانات. لا ينطبق التأمين إلا على عمليات وحدة التحكم.
عمليات وحدة التحكم هي عمليات يتم إرسالها إلى https://management.azure.com. عمليات وحدة البيانات هي عمليات يتم إرسالها إلى مثيل الخدمة، مثل https://myaccount.blob.core.windows.net/. لمزيد من المعلومات، راجع وحدة تحكم Azure ووحدة البيانات. لاكتشاف العمليات التي تستخدم عنوان URL الخاص بوحدة التحكم، راجع واجهة برمجة تطبيقات Azure REST.
يعني هذا التمييز تأمين منع التغييرات إلى مورد، ولكن لا تقيد كيفية أداء الموارد وظائفها الخاصة. على سبيل المثال، تأمين ReadOnly على خادم منطقي لقاعدة بيانات SQL يمنعك من حذف أو تعديل الخادم. لا يمنعك من إنشاء أو تحديث أو حذف البيانات في ذلك الخادم. يسمح بحركات البيانات لأنه لا يتم إرسال هذه العمليات إلى https://management.azure.com.
يتم وصف المزيد من الأمثلة على الاختلافات بين عمليات وحدة التحكم والبيانات في القسم التالي.
اعتبارات قبل تطبيق التأمين
تطبيق التأمين يمكن أن يؤدي إلى نتائج غير متوقعة لأن بعض العمليات التي لا تبدو لتعديل المورد تتطلب في الواقع الإجراءات التي تم حظرها بواسطة التأمين. التأمين سيمنع أي عملية من العمليات التي تتطلب طلب POST لواجهة برمجة التطبيقات الخاصة بـAzure Resource Manager. بعض الأمثلة الشائعة للعمليات التي يقوم التأمين بحظرها:
تأمين للقراءة فقط على حساب تخزين يمنع المستخدمين من سرد مفاتيح الحساب. تتم معالجة عملية Azure Storage List Keys من خلال طلب POST لحماية الوصول إلى مفاتيح الحساب، والتي توفر الوصول الكامل إلى البيانات في حساب التخزين. عند تكوين تأمين للقراءة فقط لحساب تخزين، يجب على المستخدمين الذين ليس لديهم مفاتيح الحساب استخدام بيانات اعتماد Microsoft Azure Active Directory للوصول إلى بيانات كائن ثنائي كبير الحجم أو قائمة الانتظار. يمنع تأمين للقراءة فقط أيضا تعيين أدوار RBAC Azure التي يتم تحديد نطاقها إلى حساب التخزين أو إلى حاوية بيانات (حاوية كائن ثنائي كبير الحجم أو قائمة انتظار).
لا يمنع التأمين عدم إمكانية الحذف على حساب تخزين البيانات الموجودة داخل هذا الحساب من الحذف أو التعديل. هذا النوع من التأمين لا يحمي إلا حساب التخزين نفسه من الحذف فقط. إذا كان الطلب يستخدم عمليات وحدة البيانات، فلن يحمي التأمين على حساب التخزين بيانات كائن ثنائي كبير الحجم أو قائمة الانتظار أو الجدول أو الملف داخل حساب التخزين هذا. ومع ذلك، إذا كان الطلب يستخدم عمليات وحدة التحكم، فإن التأمين سيحمي هذه الموارد.
على سبيل المثال، إذا كان الطلب يستخدم File Shares - Delete، وهي عملية وحدة التحكم، يتم رفض الحذف. إذا كان الطلب يستخدم Delete Share، وهي عملية وحدة البيانات، ينجح الحذف. نوصي باستخدام عمليات وحدة التحكم.
لا يمنع تأمين للقراءة فقط على حساب تخزين البيانات الموجودة داخل هذا الحساب من الحذف أو التعديل. يحمي هذا النوع من التأمين حساب التخزين نفسه من الحذف أو التعديل فقط، ولا يحمي كائن ثنائي كبير الحجم أو قائمة انتظار أو الجدول أو بيانات الملف داخل حساب التخزين هذا.
تأمين للقراءة فقط على مورد App Serviceيمنع Visual Studio Server Explorer من عرض الملفات للمورد لأن هذا التفاعل يتطلب الوصول للكتابة.
يمنعك تأمين للقراءة فقط على مجموعة موارد تحتوي على خطة App Service من توسيع حجم الخطة أو تصغيرها.
تأمين للقراءة فقط على مجموعة موارد التي تحتوي على جهاز ظاهري يمنع كافة المستخدمين من بدء تشغيل الجهاز الظاهري أو إعادة تشغيله. تتطلب هذه العمليات طلب POST.
يمنع تأمين للقراءة فقط على مجموعة موارد التي تحتوي على حساب الأتمتة جميع دفاتر التشغيل من بدء التشغيل. تتطلب هذه العمليات طلب POST.
يمنع تأمين عدم إمكانية الحذف على مجموعة موارد Azure Resource Manager من حذف عمليات النشر تلقائياً في المحفوظات. إذا وصلت إلى 800 عملية نشر في المحفوظات، ستفشل عمليات النشر.
تأمين عدم إمكانية الحذف على مجموعة الموارد الذي تم إنشاؤها بواسطة Azure Backup Service يؤدي إلى فشل النسخ الاحتياطية. تدعم الخدمة 18 نقطة استعادة كحد أقصى. عند التأمين خدمة النسخ الاحتياطي لا يمكنها تنظيف نقاط الاستعادة. لمزيد من المعلومات، راجع الأسئلة المتداولة حول نسخ أجهزة Azure الظاهرية نسخ احتياطية.
تأمين عدم إمكانية الحذف على مجموعة موارديمنع التعلم الآلي من Microsoft Azure من التحجيم التلقائي أنظمة مجموعة الحوسبة للتعلم الآلي من Microsoft Azure لإزالة العقد غير المستخدمة.
يمنع تأمين للقراءة فقط في مساحة عمل Log Analytics تمكين تحليلات سلوك المستخدم والكيان (UEBA).
تأمين للقراءة فقط على اشتراكيمنع Microsoft Azure Active Directoryvisor من العمل بشكل صحيح. لا يستطيع Advisor تخزين نتائج استعلاماته.
تأمين للقراءة فقط على Application Gateway يمنعك من الحصول على سلامة الخلفية من بوابة التطبيق. تستخدم هذه العملية POST، الذي تم حظره بواسطة تأمين للقراءة فقط.
يمنع تأمين القراءة فقط في مجموعة AKS جميع المستخدمين من الوصول إلى أي موارد مجموعة من قسم Kubernetes Resources في مجموعة AKS على يسار مدخل Microsoft Azure. تتطلب هذه العمليات طلب POST للمصادقة.
من يمكنه إنشاء أو حذف التأمينات
لإنشاء أو حذف تأمينات الإدارة، يجب أن يكون لديك حق الوصول إلى إجراءات Microsoft.Authorization/* أو Microsoft.Authorization/locks/*. من الأدوار المضمنة، يتم منح المالك ومسؤول الوصول للمستخدم فقط هذه الإجراءات.
التطبيقات المدارة والتأمينات
تستخدم بعض خدمات Azure، مثل Azure Databricks، التطبيقات المدارة لتنفيذ الخدمة. في تلك الحالة، تنشئ الخدمة مجموعتي موارد. تحتوي مجموعة موارد الأولى على نظرة عامة على الخدمة وهي غير مؤمنة. تحتوي مجموعة الموارد الأخرى على البنية الأساسية للخدمة وهي مؤمنة.
إذا حاولت حذف مجموعة موارد البنية الأساسية، تحصل على خطأ يفيد بأن مجموعة الموارد مؤمنة. إذا حاولت حذف التأمين لمجموعة موارد البنية الأساسية، تحصل على خطأ يفيد بأنه لا يمكن حذف التأمين لأن تطبيق نظام يملكه.
بدلاً من ذلك، حذف الخدمة، الذي يحذف أيضا مجموعة موارد البنية التحتية.
بالنسبة للتطبيقات المدارة، حدد الخدمة التي قمت بنشرها.

لاحظ أن الخدمة تتضمن ارتباط لمجموعة موارد مدارة. مجموعة الموارد هذه تحتفظ بالبنية التحتية وهي مؤمنة. لا يمكن حذفها مباشرة.

لحذف كل شيء له علاقة بالخدمة، بما في ذلك مجموعة موارد البنية الأساسية المؤمنة، حدد Delete للخدمة.

تكوين التأمينات
المدخل
في جزء إعدادات المورد، أو مجموعة الموارد، أو الاشتراك الذي ترغب في تأمينه، حدّد تأمينات.
لإضافة قفل، حدد Add. إذا كنت ترغب في إنشاء تأمين على مستوى الأصل، حدّد الأصل. يكتسب المورد المُحدد حالياً التأمين من الأصل. على سبيل المثال، يمكنك تأمين مجموعة الموارد لتطبيق التأمين على جميع الموارد الخاصة به.
إعطاء التأمين اسم ومستوى. يمكنك بشكل اختياري إضافة ملاحظات تصف التأمين.
لحذف التأمين، حدّد الزر الحذف.
قالب
عند استخدام قالب Azure Resource Manager (قالب ARM) أو ملف Bicep لنشر التأمين، يجب أن تكون على دراية بنطاق التأمين ونطاق النشر. لتطبيق تأمين في نطاق النشر، مثل تأمين مجموعة موارد أو اشتراك، لا تقم بتعيين خاصية النطاق. عند تأمين مورد ضمن نطاق التوزيع قم بتعيين خاصية النطاق.
يطبق القالب التالي تأميناً على مجموعة الموارد التي تم نشرها إليها. لاحظ أنه لا توجد خاصية نطاق على مورد التأمين لأن نطاق التأمين يطابق نطاق النشر. يتم نشر هذا القالب على مستوى مجموعة الموارد.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource group should not be deleted."
}
}
]
}
لإنشاء مجموعة موارد وتأمينه، قم بنشر القالب التالي على مستوى الاشتراك.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rgName": {
"type": "string"
},
"rgLocation": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('rgName')]",
"location": "[parameters('rgLocation')]",
"properties": {}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "lockDeployment",
"resourceGroup": "[parameters('rgName')]",
"dependsOn": [
"[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
],
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource group and its resources should not be deleted."
}
}
],
"outputs": {}
}
}
}
],
"outputs": {}
}
عند تطبيق تأمين على مورد ضمن مجموعة الموارد، أضف خاصية النطاق. تعيين نطاق لاسم المورد للتأمين.
يظهر المثال التالي قالباً ينشئ خطة خدمة تطبيق وموقع ويب وتأمين على موقع الويب. يتم تعيين نطاق التأمين إلى موقع الويب.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"hostingPlanName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"siteName": "[concat('ExampleSite', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2020-12-01",
"name": "[parameters('hostingPlanName')]",
"location": "[parameters('location')]",
"sku": {
"tier": "Free",
"name": "f1",
"capacity": 0
},
"properties": {
"targetWorkerCount": 1
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-12-01",
"name": "[variables('siteName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
],
"properties": {
"serverFarmId": "[parameters('hostingPlanName')]"
}
},
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "siteLock",
"scope": "[concat('Microsoft.Web/sites/', variables('siteName'))]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('siteName'))]"
],
"properties": {
"level": "CanNotDelete",
"notes": "Site should not be deleted."
}
}
]
}
Azure PowerShell
تأمين الموارد المنشورة من خلال Azure PowerShell باستخدام الأمر New-AzResourceLock.
لتأمين مورد، قم بتوفير اسم المورد ونوع المورد الخاص به واسم مجموعة الموارد الخاصة به.
New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
لتأمين مجموعة موارد، قم بتوفير اسم مجموعة الموارد.
New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup
للحصول على معلومات حول تأمين، استخدم Get-AzResourceLock. للحصول على كافة التأمينات في اشتراكك، استخدم:
Get-AzResourceLock
للحصول على كافة التأمينات لمورد، استخدم:
Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
للحصول على كافة التأمينات لمجموعة موارد، استخدم:
Get-AzResourceLock -ResourceGroupName exampleresourcegroup
لحذف تأمين لمورد، استخدم:
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId
لحذف تأمين لمجموعة الموارد، استخدم:
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId
Azure CLI
قمت بتأمين الموارد المنشورة من خلال Azure CLI باستخدام الأمر az lock create.
لتأمين مورد، قم بتوفير اسم المورد ونوع المورد الخاص به واسم مجموعة الموارد الخاصة به.
az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites
لتأمين مجموعة موارد، قم بتوفير اسم مجموعة الموارد.
az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup
للحصول على معلومات حول تأمين، استخدم az lock list. للحصول على كافة التأمينات في اشتراكك، استخدم:
az lock list
للحصول على كافة التأمينات لمورد، استخدم:
az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""
للحصول على كافة التأمينات لمجموعة موارد، استخدم:
az lock list --resource-group exampleresourcegroup
لحذف تأمين لمورد، استخدم:
lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --resource-type Microsoft.Web/sites --resource-name examplesite --output tsv --query id)
az lock delete --ids $lockid
لحذف تأمين لمجموعة الموارد، استخدم:
lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --output tsv --query id)
az lock delete --ids $lockid
REST API
يمكنك تأمين الموارد المنشورة باستخدام واجهة برمجة تطبيقات REST لتأمين الإدارة. تمكنك واجهة برمجة تطبيقات REST من إنشاء التأمينات وحذفها، واسترداد معلومات حول التأمينات الموجودة.
لإنشاء قفل، قم بتشغيل:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}
قد يكون النطاق اشتراكاً أو مجموعة موارد أو مورداً. قم بتسمية التأمين كما يحلو لك. للحصول على إصدار api، استخدم 2016-09-01.
في الطلب، تضمين عنصر JSON الذي يحدد خصائص التأمين.
{
"properties": {
"level": "CanNotDelete",
"notes": "Optional text notes."
}
}
الخطوات التالية
- للتعرف على تنظيم الموارد منطقياً، راجع استخدام العلامات لتنظيم مواردك.
- يمكنك تطبيق القيود والاصطلاحات عبر اشتراكك باستخدام نٌهج مخصصة. للحصول على مزيدٍ من المعلومات، راجع ما هو نهج Azure.
- للحصول على إرشادات حول كيفية استخدام المؤسسات لـ Resource Manager لإدارة الاشتراكات بفعالية، راجع Azure enterprise scaffold - إدارة الاشتراك الإلزامية.