حماية موارد Azure Cosmos DB باستخدام التأمينات

ينطبق على: NoSQL MongoDB كاساندرا العفريت جدول

كمسؤول، قد تحتاج إلى تأمين حساب Azure Cosmos DB أو قاعدة بيانات أو حاوية. تمنع الأقفال المستخدمين الآخرين في مؤسستك من حذف أو تعديل الموارد الهامة عن طريق الخطأ. يمكنك تعيين مستوى التأمين إلى CanNotDelete أو ReadOnly.

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

المتطلبات الأساسية

كيف يتم تطبيق الأقفال

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

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

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

إدارة الأقفال

لا تعمل أقفال الموارد مع التغييرات التي أجراها المستخدمون الذين يصلون إلى Azure Cosmos DB باستخدام مفاتيح الحساب ما لم يتم تأمين حساب Azure Cosmos DB أولا عن طريق تمكين الخاصية disableKeyBasedMetadataWriteAccess . تأكد من أن هذه الخاصية لا تكسر التطبيقات الموجودة التي تجري تغييرات على الموارد باستخدام أي SDK أو مدخل Azure أو أدوات جهة خارجية. يؤدي تمكين هذه الخاصية إلى قطع التطبيقات التي تتصل عبر مفاتيح الحساب لتعديل الموارد. يمكن أن تتضمن هذه التعديلات تغيير معدل النقل وتحديث نهج الفهرس وما إلى ذلك.

$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"

أولا، قم بتحديث الحساب لمنع التغييرات بواسطة أي شيء يتصل عبر مفاتيح الحساب.

$parameters = @{
    Name = $ACCOUNT_NAME
    ResourceGroupName = $RESOURCE_GROUP_NAME
    DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters

إنشاء تأمين حذف على مورد حساب Azure Cosmos DB وجميع الموارد التابعة.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

قالب

عند تطبيق تأمين على مورد قاعدة بيانات Azure Cosmos استخدم Microsoft.Authorization/locks مورد Azure Resource Manager (ARM).

{
  "type": "Microsoft.Authorization/locks",
  "apiVersion": "2017-04-01",
  "name": "cosmoslock",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
  ],
  "properties": {
    "level": "CanNotDelete",
    "notes": "Do not delete Azure Cosmos DB account."
  },
  "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}

العينات

إدارة تأمين الموارد لـ Azure Cosmos DB:

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