اقرأ باللغة الإنجليزية

مشاركة عبر


تأمين موارد Azure لحماية بنيتك الأساسية

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

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

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

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

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

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

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

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

يجب أن يتطابق معرف المورد للمورد المؤمن مع التنسيق التالي:

JSON
/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 المحددة لحساب التخزين أو حاوية البيانات (حاوية البيانات الثنائية الكبيرة أو قائمة الانتظار).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

لقطة شاشة لمدخل Azure مع تحديد مثيل Azure Databricks.

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

لقطة شاشة تعرض رابط مجموعة الموارد المدارة في مدخل Microsoft Azure.

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

لقطة شاشة لمدخل Azure مع خيار حذف للخدمة المحددة.

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

مدخل Azure

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

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

    تحديد القفل.

    ملاحظة

    لا يمكنك إضافة تأمين لمجموعات الإدارة.

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

    إضافة قفل.

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

    تعيين قفل.

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

    حذف القفل.

قالب

عند استخدام قالب Resource Manager (قالب ARM) أو ملف Bicep لنشر تأمين، تحتاج إلى فهم كيفية عمل نطاق النشر ونطاق التأمين معا. لتطبيق تأمين في نطاق النشر، مثل عند تأمين مجموعة موارد أو اشتراك، لا تقم بتعيين خاصية النطاق. عند تأمين مورد ضمن نطاق النشر، قم بتعيين خاصية النطاق على التأمين.

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

JSON
{
  "$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."
      }
    }
  ]
}

لإنشاء مجموعة موارد وتأمينها، انشر القالب السابق على مستوى الاشتراك.

JSON
{
  "$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": {}
}

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

يظهر المثال التالي قالبًا ينشئ خطة خدمة تطبيق وموقع ويب وتأمين على موقع الويب. يتم تعيين نطاق القفل على موقع الويب.

JSON
{
  "$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 الأمر .

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

Azure PowerShell
New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

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

Azure PowerShell
New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup

للحصول على معلومات حول تأمين، استخدم Get-AzResourceLock. للحصول على كافة التأمينات في اشتراكك، استخدم:

Azure PowerShell
Get-AzResourceLock

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

Azure PowerShell
Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

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

Azure PowerShell
Get-AzResourceLock -ResourceGroupName exampleresourcegroup

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

Azure PowerShell
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId

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

Azure PowerShell
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId

Azure CLI

لتأمين الموارد المنشورة باستخدام Azure CLI، استخدم az lock create الأمر .

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

Azure CLI
az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites

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

Azure CLI
az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup

للحصول على معلومات حول تأمين، استخدم az lock list. للحصول على كافة التأمينات في اشتراكك، استخدم:

Azure CLI
az lock list

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

Azure CLI
az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""

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

Azure CLI
az lock list --resource-group exampleresourcegroup

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

Azure CLI
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

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

Azure CLI
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 الأمر .

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

Python
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"
    }
)

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

Python
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.

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

Python
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}")

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

Python
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}")

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

Python
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}")

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

Python
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"
)

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

Python
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 إنشاء أقفال وحذفها واسترداد معلومات بشأن الأقفال الموجودة.

لإنشاء قفل، قم بتشغيل:

HTTP
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}

قد يكون النطاق اشتراكاً أو مجموعة موارد أو مورداً. اسم القفل هو كل ما تريد تسميته. بالنسبة لإصدار API، استخدم 2016-09-01.

في الطلب، قم بتضمين عنصر JSON الذي يحدد خصائص القفل.

JSON
{
  "properties": {
  "level": "CanNotDelete",
  "notes": "Optional text notes."
  }
}

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

ملاحظة: أنشأ المؤلف هذه المقالة بمساعدة الذكاء الاصطناعي. معرفة المزيد