قفل الموارد الخاصة بك لحماية البنية التحتية الخاصة بك

بصفتك مسؤولاً، يمكنك تأمين اشتراك Azure، أو مجموعة موارد، أو مورد لحمايتها من عمليات الحذف والتعديلات العرضية التي يقوم بها المستخدم. يتجاوز القفل أذونات المستخدم.

يمكنك تعيين أقفال تمنع عمليات الحذف أو التعديل. في المدخل، تسمى هذه الأقفال حذف وقراءة فقط. في سطر الأوامر، تُسمى هذه الأقفال CanNotDelete وReadOnly.

  • CanNotDelete تعني أن المستخدمين المصرّح لهم يمكنهم قراءة وتعديل أحد الموارد، لكن لا يمكنهم حذفه.
  • ReadOnly تعني أن المستخدمين المصرّح لهم يمكنهم قراءة مورد، لكن لا يمكنهم حذفه أو تحديثه. يشبه تطبيق هذا القفل تقييد جميع المستخدمين المصرّح لهم بالأذونات التي يوفرها دور الـReader.

بخلاف التحكم في الوصول استناداً إلى الدور(RBAC)، يمكنك استخدام عميات تأمين الإدارة لتطبيق قيود على جميع المستخدمين والأدوار. للتعرف على تعيين الأذونات للمستخدمين والأدوار، راجع Azure RBAC.

ميراث التأمين

عندما تقوم بتطبيق قفل على نطاق رئيسي، فإن جميع الموارد داخل هذا النطاق ترث نفس القفل. حتى الموارد التي تضيفها لاحقاً ترث نفس القفل الأصلي. القفل الأكثر تقييدًا في التوريث له الأسبقية.

موارد الملحق ترث عمليات التأمين من المورد الذي يتم تطبيقها عليه. على سبيل المثال، يعد Microsoft.Insights/diagnosticSettings هو نوع مورد ملحق. إذا قمت بتطبيق إعداد تشخيص على كائن ثنائي كبير الحجم للتخزين، وقمت بتأمين حساب التخزين، فلن تتمكن من حذف إعداد التشخيص. هذا التوريث منطقي لأن معرف المورد الكامل لإعداد التشخيص هو:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}/blobServices/default/providers/microsoft.insights/diagnosticSettings/{setting-name}"

الذي يطابق نطاق معرف المورد للمورد الذي تم تأمينه:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}

إذا كان لديك قفل Delete على مورد وحاولت حذف مجموعة الموارد الخاصة به، فإن الميزة تمنع عملية الحذف بأكملها. حتى إذا تم إلغاء تأمين مجموعة الموارد أو الموارد الأخرى في مجموعة الموارد، فلن يحدث الحذف. ليس لديك حذف جزئي.

عند cancel an Azure subscription:

  • لا يمنع قفل المورد إلغاء الاشتراك.
  • يحافظ Azure على مواردك عن طريق إلغاء تنشيطها بدلاً من حذفها على الفور.
  • لا يحذف Azure مواردك بشكل دائم إلا بعد فترة انتظار.

فهم نطاق التأمينات

إشعار

تنطبق الأقفال فقط على عمليات Azure بمستوى التحكم وليس عمليات مستوى البيانات.

تنتقل عمليات مستوى التحكم في Azure إلى https://management.azure.com. تنتقل عمليات مستوى بيانات Azure إلى مثيل الخدمة، مثل https://myaccount.blob.core.windows.net/. راجع مستوى التحكم في Azure ومستوى البيانات. لاكتشاف العمليات التي تستخدم عنوان URL الخاص بوحدة التحكم، راجع واجهة برمجة تطبيقات Azure REST.

يعني التمييز أن الأقفال تحمي المورد من التغييرات، لكنها لا تقيد كيفية أداء المورد لوظائفه. يعمل قفل ReadOnly، على سبيل المثال، على خادم منطقي لقاعدة بيانات SQL، يحميه من عمليات الحذف أو التعديل. يسمح لك بإنشاء أو تحديث أو حذف البيانات في قاعدة بيانات الخادم. تسمح عمليات مستوى البيانات بحركات البيانات. هذه الطلبات لا تذهب إلى https://management.azure.com.

اعتبارات قبل تطبيق أقفالك

يمكن أن يؤدي تطبيق الأقفال إلى نتائج غير متوقعة. تتطلب بعض العمليات، التي لا يبدو أنها تعدل مورداً، إجراءات محظورة. تمنع الأقفال طريقة POST من إرسال البيانات إلى Azure Resource Manager API. بعض الأمثلة الشائعة للعمليات المحظورة هي:

  • تأمين للقراءة فقط على حساب تخزين يمنع المستخدمين من سرد مفاتيح الحساب. يعالج طلب POST عملية مفاتيح قائمة تخزين Azure لحماية الوصول إلى مفاتيح الحساب. توفر مفاتيح الحساب وصولا كاملا إلى البيانات في حساب التخزين. عند تكوين تأمين للقراءة فقط لحساب تخزين، يحتاج المستخدمون الذين ليس لديهم مفاتيح الحساب إلى استخدام بيانات اعتماد Microsoft Entra للوصول إلى بيانات النقطة أو قائمة الانتظار. يمنع تأمين للقراءة فقط أيضا تعيين أدوار RBAC Azure التي يتم تحديد نطاقها إلى حساب التخزين أو إلى حاوية بيانات (حاوية كائن ثنائي كبير الحجم أو قائمة انتظار).

  • يحمي قفل القراءة فقط على حساب التخزين تعيينات RBAC المحددة لحساب التخزين أو حاوية البيانات (حاوية البيانات الثنائية الكبيرة أو قائمة الانتظار).

  • يمنع تأمين للقراءة فقط على حساب تخزين إنشاء حاوية كائن ثنائي كبير الحجم.

  • لا يمنع تأمين القراءة فقط أو التأمين الذي لا يمكن حذفه على حساب تخزين بياناته من الحذف أو التعديل. كما أنه لا يحمي البيانات في كائن ثنائي كبير الحجم أو قائمة انتظار أو جدول أو ملف.

  • تعرض واجهة برمجة تطبيقات حساب التخزين عمليات مستوى البيانات ولوحة التحكم. إذا كان الطلب يستخدم عمليات وحدة البيانات، فلن يحمي التأمين على حساب التخزين بيانات كائن ثنائي كبير الحجم أو قائمة الانتظار أو الجدول أو الملف داخل حساب التخزين هذا. إذا كان الطلب يستخدم control plane operations، فإن القفل يحمي هذه الموارد.

    على سبيل المثال، إذا كان الطلب يستخدم File Shares - Delete، وهي عملية مستوى التحكم، يفشل الحذف. إذا كان الطلب يستخدم Delete Share، وهي عملية وحدة البيانات، ينجح الحذف. نوصي باستخدام عملية مستوى التحكم.

  • يمنع تأمين القراءة فقط على مجموعة أمان الشبكة (NSG) إنشاء سجل تدفق NSG المقابل. لا يمنع التأمين الذي لا يمكن حذفه على مجموعة أمان الشبكة (NSG) إنشاء سجل تدفق NSG المقابل أو تعديله.

  • تأمين للقراءة فقط على مورد App Serviceيمنع Visual Studio Server Explorer من عرض الملفات للمورد لأن هذا التفاعل يتطلب الوصول للكتابة.

  • يمنعك قفل القراءة فقط في resource group الذي يحتوي على App Service plan من توسيع نطاق الخطة أو الخروج منها.

  • يمنع قفل القراءة فقط الموجود على resource group الذي يحتوي على virtual machine جميع المستخدمين من بدء تشغيل جهاز ظاهري أو إعادة تشغيله. تتطلب هذه العمليات طلب طريقة POST.

  • يمنعك تأمين القراءة فقط على مجموعة موارد من نقل الموارد الموجودة داخل مجموعة الموارد أو خارجها.

  • يمنع تأمين للقراءة فقط على مجموعة موارد التي تحتوي على حساب الأتمتة جميع دفاتر التشغيل من بدء التشغيل. تتطلب هذه العمليات طلب طريقة POST.

  • يمنع التأمين الذي لا يمكن حذفه على مورد أو مجموعة موارد حذف تعيينات Azure RBAC.

  • يمنع تأمين عدم إمكانية الحذف على مجموعة موارد Azure Resource Manager من حذف عمليات النشر تلقائيًا في المحفوظات. إذا وصلت إلى 800 عملية توزيع في السجل، فستفشل عمليات التوزيع الخاصة بك.

  • تأمين عدم إمكانية الحذف على مجموعة الموارد الذي تم إنشاؤها بواسطة Azure Backup Service يؤدي إلى فشل النسخ الاحتياطية. تدعم الخدمة 18 نقطة استعادة كحد أقصى. عند التأمين خدمة النسخ الاحتياطي لا يمكنها تنظيف نقاط الاستعادة. لمزيد من المعلومات، راجع الأسئلة المتداولة حول نسخ أجهزة Azure الظاهرية نسخ احتياطية.

  • لا يمكن حذف التأمين على مجموعة موارد تحتوي على مساحات عمل التعلم الآلي من Azure يمنع التحجيم التلقائي لمجموعات حساب التعلم الآلي من Azure من العمل بشكل صحيح. باستخدام التأمين، لا يمكن للتحجيم التلقائي إزالة العقد غير المستخدمة. يستهلك الحل الخاص بك موارد أكثر مما هو مطلوب لحمل العمل.

  • يمنع تأمين للقراءة فقط في مساحة عمل Log Analytics تمكين تحليلات سلوك المستخدم والكيان (UEBA).

  • لا يمنع التأمين الذي لا يمكن حذفه على مساحة عمل Log Analytics عمليات إزالة البيانات. بدلا من ذلك، قم بإزالة دور إزالة البيانات من المستخدم.

  • تأمين للقراءة فقط على اشتراكيمنع Azure Advisor من العمل بشكل صحيح. لا يستطيع Advisor تخزين نتائج استعلاماته.

  • تأمين للقراءة فقط على Application Gateway يمنعك من الحصول على سلامة الخلفية من بوابة التطبيق. تستخدم هذه العملية POST method، والتي يحظرها قفل للقراءة فقط.

  • يحد قفل القراءة فقط في مجموعة Azure Kubernetes Service (AKS) من كيفية الوصول إلى موارد المجموعة من خلال البوابة الإلكترونية. يمنعك قفل القراءة فقط من استخدام قسم موارد Kubernetes في مجموعة AKS في مدخل Microsoft Azure لاختيار مورد نظام مجموعة. تتطلب هذه العمليات طلب طريقة POST للمصادقة.

  • يمنع التأمين الذي لا يمكن حذفه على جهاز ظاهري محمي بواسطة Site Recovery إزالة ارتباطات موارد معينة متعلقة بـ Site Recovery بشكل صحيح عند إزالة الحماية أو تعطيل النسخ المتماثل. إذا كنت تخطط لحماية الجهاز الظاهري مرة أخرى لاحقا، فستحتاج إلى إزالة التأمين قبل تعطيل الحماية. إذا لم تقم بإزالة التأمين، فستحتاج إلى اتباع خطوات معينة لتنظيف الارتباطات القديمة قبل أن تتمكن من حماية الجهاز الظاهري. للحصول على مزيد من المعلومات، راجع استكشاف أخطاء النسخ المتماثل لـ Azure VM وإصلاحها.

من يمكنه إنشاء أو حذف التأمينات

لإنشاء أو حذف أقفال الإدارة، تحتاج إلى الوصول إلى إجراءات Microsoft.Authorization/* أو Microsoft.Authorization/locks/* . يتمتع المستخدمون المعينون إلى المالك وأدوار المستخدم Access مسؤول istrator بالوصول المطلوب. تمنح بعض الأدوار المضمنة المتخصصة هذا الوصول أيضا. يمكنك إنشاء دور مخصص بالأذونات المطلوبة.

التطبيقات المدارة والأقفال

تستخدم بعض خدمات Azure، مثل Azure Databricks، التطبيقات المدارة لتنفيذ الخدمة. في تلك الحالة، تنشئ الخدمة مجموعتي موارد. الأول عبارة عن مجموعة موارد غير مؤمّنة تحتوي على نظرة عامة على الخدمة. الآخر عبارة عن مجموعة موارد مؤمّنة تحتوي على البنية التحتية للخدمة.

إذا حاولت حذف مجموعة موارد البنية الأساسية، تحصل على خطأ يفيد بأن مجموعة الموارد مؤمنة. إذا حاولت حذف القفل لمجموعة موارد البنية التحتية، فستتلقى خطأ يفيد بأنه لا يمكن حذف القفل لأن أحد تطبيقات النظام يمتلكه.

بدلًا من ذلك، حذف الخدمة، الذي يحذف أيضا مجموعة موارد البنية التحتية.

بالنسبة للتطبيقات المدارة، حدد الخدمة التي قمت بنشرها.

Screenshot of the Azure portal with an instance of Azure Databricks selected.

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

Screenshot displaying the Managed Resource Group link in the Azure portal.

لحذف كل شيء للخدمة، بما في ذلك مجموعة موارد البنية التحتية المؤمّنة، اختر Delete للخدمة.

Screenshot of the Azure portal with the Delete option for the selected service.

تكوين التأمينات

المدخل

في لوحة التنقل اليسرى، اسم ميزة قفل الاشتراك هو Resource locks، بينما اسم ميزة تأمين مجموعة الموارد هو Locks.

  1. في جزء إعدادات المورد، أو مجموعة الموارد، أو الاشتراك الذي ترغب في تأمينه، حدّد تأمينات.

    Select lock.

  2. لإضافة تأمين، حدد إضافة. إذا كنت ترغب في إنشاء تأمين على مستوى الأصل، حدّد الأصل. يكتسب المورد المُحدد حاليًا التأمين من الأصل. على سبيل المثال، يمكنك تأمين مجموعة الموارد لتطبيق التأمين على جميع الموارد الخاصة به.

    Add lock.

  3. إعطاء التأمين اسم ومستوى. يمكنك بشكل اختياري إضافة ملاحظات تصف التأمين.

    Set lock.

  4. لحذف التأمين، حدّد الزر الحذف.

    Delete lock.

Template

عند استخدام قالب 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

Python

يمكنك تأمين الموارد المنشورة باستخدام Python باستخدام الأمر ManagementLockClient.management_locks.create_or_update_at_resource_group_level .

لتأمين مورد، قم بتوفير اسم المورد ونوع المورد الخاص به واسم مجموعة الموارد الخاصة به.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite",
    {
        "level": "CanNotDelete"
    }
)

لتأمين مجموعة موارد، قم بتوفير اسم مجموعة الموارد.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.create_or_update_at_resource_group_level(
    "exampleGroup",
    "lockGroup",
    {
        "level": "CanNotDelete"
    }
)

للحصول على معلومات حول جميع التأمينات في اشتراكك، استخدم ManagementLockClient.management_locks.get. للحصول على كافة التأمينات في اشتراكك، استخدم:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.list_at_subscription_level()

for lock in lock_result:
    print(f"Lock name: {lock.name}")
    print(f"Lock level: {lock.level}")
    print(f"Lock notes: {lock.notes}")

للحصول على تأمين لمورد، استخدم:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

print(f"Lock ID: {lock_result.id}")
print(f"Lock Name: {lock_result.name}")
print(f"Lock Level: {lock_result.level}")

للحصول على تأمين لمجموعة موارد، استخدم:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_result = lock_client.management_locks.get_at_resource_group_level(
    "exampleGroup",
    "lockGroup"
)

print(f"Lock ID: {lock_result.id}")
print(f"Lock Level: {lock_result.level}")

لحذف تأمين لمورد، استخدم:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

لحذف تأمين لمجموعة الموارد، استخدم:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient

credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

lock_client = ManagementLockClient(credential, subscription_id)

lock_client.management_locks.delete_at_resource_group_level("exampleGroup", "lockGroup")

واجهة برمجة تطبيقات REST

يمكنك تأمين الموارد المنشورة باستخدام واجهة برمجة تطبيقات 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."
  }
}

الخطوات التالية