تكوين التحكم في الوصول المستند إلى الدور باستخدام معرف Microsoft Entra لحساب Azure Cosmos DB الخاص بك

ينطبق على: NoSQL

إشعار

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

يعرض Azure Cosmos DB نظاما مدمجا للتحكم في الوصول استنادا إلى الدور يتيح لك:

  • مصادقة طلبات البيانات باستخدام هوية Microsoft Entra.
  • تفويض طلبات البيانات لديك باستخدام نموذج إذن دقيق يستند إلى الدور.

المفاهيم

يستند التحكم في الوصول المستند إلى دور مستوى بيانات Azure Cosmos DB إلى المفاهيم التي توجد عادة في أنظمة التحكم في الوصول الأخرى المستندة إلى الأدوار مثل التحكم في الوصول المستند إلى الدور في Azure:

  • يتكون نموذج الإذن من مجموعة من الإجراءات؛ وتعين كل من هذه الإجراءات إلى عملية أو عدة عمليات في قاعدة البيانات. تتضمن بعض الأمثلة على الإجراءات قراءة عنصر أو كتابة عنصر أو تنفيذ استعلام.
  • يقوم مستخدمو Azure Cosmos DB بإنشاء تعريفات الأدوار التي تحتوي على قائمة بالإجراءات المسموح بها.
  • يتم تعيين تعريفات الأدوار لهويات Microsoft Entra محددة من خلال تعيينات الأدوار. يحدد تعيين الدور أيضا النطاق الذي ينطبق عليه تعريف الدور؛ حاليا، ثلاثة نطاقات هي حاليا:
    • حساب Azure Cosmos DB،
    • قاعدة بيانات Azure Cosmos DB،
    • حاوية Azure Cosmos DB.

Diagram of common role-based access control concepts including role definitions, role assignments, and principals.

نموذج الأذن

هام

يغطي نموذج الإذن هذا عمليات قاعدة البيانات التي تتضمن قراءة وكتابة البيانات فقط. ولا يغطي أي نوع من العمليات الإدارية على موارد الإدارة، بما في ذلك:

  • إنشاء/استبدال/حذف قاعدة بيانات
  • إنشاء/استبدال/حذف حاوية
  • قراءة/استبدال معدل نقل الحاوية
  • إنشاء/استبدال/حذف/قراءة إجراءات مخزنة
  • إنشاء/استبدال/حذف/قراءة مشغّلات
  • إنشاء/استبدال/حذف/قراءة وظائف معرفة بواسطة مستخدم

لا يمكنك استخدام أي وحدة بيانات Azure Cosmos DB SDK لمصادقة عمليات الإدارة باستخدام هوية Microsoft Entra. بدلا من ذلك، يجب عليك استخدام التحكم في الوصول المستند إلى دور Azure من خلال أحد الخيارات التالية:

تعتبر قاعدة بيانات القراءة وحاوية القراءة طلبات بيانات تعريف. يمكن منح الوصول إلى هذه العمليات كما هو مذكور في القسم التالي.

يسرد هذا الجدول جميع الإجراءات التي كشفها نموذج الإذن.

الاسم عملية (عمليات) قاعدة البيانات المناظرة
Microsoft.DocumentDB/databaseAccounts/readMetadata قراءة بيانات تعريف الحساب. راجع طلبات بيانات التعريف للحصول على التفاصيل.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create إنشاء صنف جديد.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read قراءة عنصر فردي بواسطة معرفه ومفتاح التقسيم (قراءة نقطة).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace استبدال عنصر موجود.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert "Upsert" عنصر. تنشئ هذه العملية عنصرا إذا لم يكن موجودا بالفعل، أو لاستبدال العنصر إذا كان موجودا.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete حذف عنصر.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery تنفيذ استعلام SQL.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed اقرأ من موجز تغيير الحاوية. تنفيذ استعلامات SQL باستخدام SDKs.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure تنفيذ إجراء مُخزّن.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts إدارة التعارضات لحسابات المنطقة متعددة الكتابة (أي، سرد العناصر وحذفها من موجز التعارض).

إشعار

عند تنفيذ الاستعلامات من خلال SDKs، تكون الأذونات Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery و Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed مطلوبة.

يتم دعم أحرف البدل في كل من مستويات الحاويات والعناصر:

  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

طلبات بيانات تعريفية

تصدر Azure Cosmos DB SDKs طلبات بيانات التعريف للقراءة فقط أثناء التهيئة ولخدمة طلبات بيانات محددة. تجلب هذه الطلبات تفاصيل تكوين مختلفة مثل:

  • التكوين العمومي لحسابك، والذي يتضمن مناطق Azure المتوفر بها الحساب.
  • مفتاح التقسيم الخاص بالحاويات أو نهج الفهرسة الخاص بها.
  • قائمة الأقسام الفعلية التي تشكّل الحاوية وعناوينها.

ولا تحضر أيّاً من البيانات التي قمت بتخزينها في حسابك.

لضمان أفضل شفافية لنموذج الأذونات لدينا، يتم تغطية طلبات بيانات التعريف هذه بشكل صريح من خلال Microsoft.DocumentDB/databaseAccounts/readMetadata الإجراء. يجب السماح بهذا الإجراء في كل موقف حيث يتم الوصول إلى حساب Azure Cosmos DB الخاص بك من خلال أحد عِدد تطوير برامجAzure Cosmos DB. يمكن تعيينها (من خلال تعيين دور) على أي مستوى في التدرج الهرمي لـAzure Cosmos DB (أي الحساب أو قاعدة البيانات أو الحاوية).

تعتمد طلبات بيانات التعريف الفعلية المسموح بها من قِبَل Microsoft.DocumentDB/databaseAccounts/readMetadata الإجراء على النطاق الذي تم تعيين الإجراء إليه:

النطاق الطلبات المسموح بها من قِبَل الإجراء
العميل • سرد قواعد البيانات ضمن الحساب
• لكل قاعدة بيانات ضمن الحساب، الإجراءات المسموح بها في نطاق قاعدة البيانات
قاعدة البيانات • قراءة بيانات تعريف قاعدة البيانات
• سرد الحاويات ضمن قاعدة البيانات
• لكل حاوية ضمن قاعدة البيانات، الإجراءات المسموح بها في نطاق الحاوية
الحاوية • قراءة بيانات تعريف الحاوية
• سرد الأقسام الفعلية ضمن الحاوية
• حل عنوان كل قسم مادي

هام

لا يتم تضمين معدل النقل في بيانات التعريف لهذا الإجراء.

تعريفات الدور المدمجة

يَعرض Azure Cosmos DB تعريفين مضمنين للأدوار:

هام

يشير مصطلح تعريفات الدور هنا إلى تعريفات الدور الخاصة ب Azure Cosmos DB. تختلف هذه عن تعريفات دور التحكم في الوصول المستندة إلى الدور في Azure.

البطاقة/ رقم البطاقة الاسم الإجراءات المضمنة
00000000-0000-0000-0000-000000000001 قارئ بيانات Cosmos DB المدمج Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
00000000-0000-0000-0000-000000000002 مساهم بيانات Cosmos DB المدمج Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

إنشاء تعريفات دور مخصصة

عند إنشاء تعريف دور مخصص، يجب عليك توفير:

  • اسم حسابك في Azure Cosmos DB.
  • مجموعة الموارد التي تحتوي على حسابك.
  • نوع تعريف الدور: CustomRole.
  • اسم تعريف الدور.
  • قائمة بالإجراءات التي تريد أن يسمح بها الدور.
  • نطاق (نطاقات) واحد أو عدة نطاقات يمكن تعيين تعريف الدور فيها؛ النطاقات المدعومة هي:
    • / (مستوى الحساب)،
    • /dbs/<database-name> (مستوى قاعدة البيانات)،
    • /dbs/<database-name>/colls/<container-name> (مستوى الحاوية).

إشعار

تتوفر العمليات الموضحة في:

باستخدام Azure PowerShell

إنشاء دور يسمى MyReadOnlyRole يحتوي فقط على إجراءات القراءة:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadOnlyRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed') `
    -AssignableScope "/"

إنشاء دور يسمى MyReadWriteRole يحتوي على جميع الإجراءات:

New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadWriteRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*') `
    -AssignableScope "/"

سرد تعريفات الدور التي أنشأتها لإحضار معرفاتها:

Get-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName
RoleName         : MyReadWriteRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

RoleName         : MyReadOnlyRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

استخدام Azure CLI

إنشاء دور يسمى MyReadOnlyRole يحتوي فقط على إجراءات القراءة في ملف يسمى role-definition-ro.json:

{
    "RoleName": "MyReadOnlyRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ]
    }]
}
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-ro.json

إنشاء دور يسمى MyReadWriteRole يحتوي على كافة الإجراءات في ملف يسمى role-definition-rw.json:

{
    "RoleName": "MyReadWriteRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ]
    }]
}
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-rw.json

سرد تعريفات الدور التي أنشأتها لإحضار معرفاتها:

az cosmosdb sql role definition list --account-name $accountName --resource-group $resourceGroupName
[
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadWriteRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  },
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadOnlyRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  }
]

استخدام قوالب Azure Resource Manager

للحصول على مرجع وأمثلة لاستخدام قوالب Azure Resource Manager لإنشاء تعريفات الأدوار، راجع Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions.

إنشاء تعيينات الأدوار

يمكنك إقران تعريفات الأدوار المضمنة أو المخصصة بهويات Microsoft Entra. عند إنشاء تعيين دور، يجب عليك توفير:

  • اسم حسابك في Azure Cosmos DB.

  • مجموعة الموارد التي تحتوي على حسابك.

  • معرف تعريف الدور المطلوب تعيينه.

  • معرف الهوية الأساسي للهوية التي يجب تعيين تعريف الدور إليها.

  • نطاق تعيين الدور؛ النطاقات المدعومة هي:

    • / (مستوى الحساب)
    • /dbs/<database-name> (مستوى قاعدة البيانات)
    • /dbs/<database-name>/colls/<container-name> (مستوى الحاوية)

    لابد من تطابق النطاق مع أحد نطاقات تعريف الدور القابلة للتعيين أو أن يكون منظارا فرعيا.

إشعار

إذا كنت ترغب في إنشاء تعيين دور لكيان خدمة، فتأكد من استخدام معرف الكائن الخاص به كما هو موجود في قسم تطبيقات المؤسسة في جزء مدخل Microsoft Entra ID.

إشعار

تتوفر العمليات الموضحة في:

باستخدام Azure PowerShell

تعيين دور إلى هوية:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
$readOnlyRoleDefinitionId = "<roleDefinitionId>" # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
$principalId = "<aadPrincipalId>"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -RoleDefinitionId $readOnlyRoleDefinitionId `
    -Scope "/" `
    -PrincipalId $principalId

استخدام Azure CLI

تعيين دور إلى هوية:

resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId

استخدام قوالب Bicep/Azure Resource Manager

لتعيين مضمن باستخدام قالب Bicep:

resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = {
  name: guid(<roleDefinitionId>, <aadPrincipalId>, <databaseAccountResourceId>)
  parent: databaseAccount
  properties:{
    principalId: <aadPrincipalId>
    roleDefinitionId: '/${subscription().id}/resourceGroups/<databaseAccountResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>'
    scope: <databaseAccountResourceId>
  }
}

للحصول على مرجع وأمثلة لاستخدام قوالب Azure Resource Manager لإنشاء تعيينات الأدوار، راجع Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments.

تهيئة SDK باستخدام معرف Microsoft Entra

لاستخدام التحكم في الوصول المستند إلى دور Azure Cosmos DB في التطبيق الخاص بك، يجب عليك تحديث الطريقة التي تهيئ بها Azure Cosmos DB SDK. بدلاً من تمرير المفتاح الأساسي لحسابك، يجب عليك تمرير مثيل من فئة TokenCredential. يوفر هذا المثيل Azure Cosmos DB SDK بالسياق المطلوب لإحضار رمز Microsoft Entra المميز نيابة عن الهوية التي ترغب في استخدامها.

الطريقة التي تقوم من خلالها بإنشاء مثيل TokenCredential خارج نطاق هذه المقالة. هناك العديد من الطرق لإنشاء مثل هذا المثيل اعتمادا على نوع هوية Microsoft Entra التي تريد استخدامها (المستخدم الأساسي، كيان الخدمة، المجموعة وما إلى ذلك). والأهم من ذلك، يجب أن يتم حل TokenCredential المثيل الخاص بك إلى الهوية (المعرف الأساسي) التي قمت بتعيين أدوارك إليها. يمكنك العثور على أمثلة لإنشاء فئة TokenCredential:

تستخدم الأمثلة التالية كيان خدمة مع مثيل ClientSecretCredential .

في .NET

عنصر التحكم في الوصول المستند إلى دور Azure Cosmos DB مدعوم حاليا في .NET SDK V3.

TokenCredential servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
CosmosClient client = new CosmosClient("<account-endpoint>", servicePrincipal);

في Java

يتم حاليا دعم التحكم في الوصول المستند إلى دور Azure Cosmos DB في Java SDK V4.

TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
    .authorityHost("https://login.microsoftonline.com")
    .tenantId("<azure-ad-tenant-id>")
    .clientId("<client-application-id>")
    .clientSecret("<client-application-secret>")
    .build();
CosmosAsyncClient Client = new CosmosClientBuilder()
    .endpoint("<account-endpoint>")
    .credential(ServicePrincipal)
    .build();

في JavaScript

يتم حاليا دعم التحكم في الوصول المستند إلى دور Azure Cosmos DB في JavaScript SDK V3.

const servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
const client = new CosmosClient({
    endpoint: "<account-endpoint>",
    aadCredentials: servicePrincipal
});

في لغة بايثون

يتم دعم التحكم في الوصول المستند إلى دور Azure Cosmos DB في إصدارات Python SDK 4.3.0b4 والإصدارات الأحدث.

aad_credentials = ClientSecretCredential(
    tenant_id="<azure-ad-tenant-id>",
    client_id="<client-application-id>",
    client_secret="<client-application-secret>")
client = CosmosClient("<account-endpoint>", aad_credentials)

مصادقة الطلبات على واجهة برمجة تطبيقات REST

عند إنشاء عنوان تخويل واجهة برمجة تطبيقات REST، قم بتعيين معلمة النوع إلى معرف Microsoft Entra وتوقيع التجزئة (sig) إلى رمز OAuth المميز كما هو موضح في المثال التالي:

type=aad&ver=1.0&sig=<token-from-oauth>

استخدام مستكشف البيانات

إشعار

لا يدعم مستكشف البيانات المكشوف في مدخل Microsoft Azure التحكم في الوصول المستند إلى الدور في Azure Cosmos DB حتى الآن. لاستخدام هوية Microsoft Entra عند استكشاف بياناتك، يجب عليك استخدام مستكشف Azure Cosmos DB بدلا من ذلك.

عند الوصول إلى مستكشف DB Cosmos Azure باستخدام معلمة ?feature.enableAadDataPlane=true استعلام محددة وتسجيل الدخول، يتم استخدام المنطق التالي للوصول إلى بياناتك:

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

تدقيق طلبات البيانات

يتم زيادة سجلات التشخيص بمعلومات الهوية والتخويل لكل عملية بيانات عند استخدام التحكم في الوصول المستند إلى الدور في Azure Cosmos DB. يتيح لك هذا التعزيز إجراء تدقيق مفصل واسترداد هوية Microsoft Entra المستخدمة لكل طلب بيانات يتم إرساله إلى حساب Azure Cosmos DB الخاص بك.

تتدفق هذه المعلومات الإضافية في فئة سجل DataPlaneRequests وتتكون من عمودين إضافيين:

  • aadPrincipalId_g يظهر المعرف الأساسي لهوية Microsoft Entra التي تم استخدامها لمصادقة الطلب.
  • aadAppliedRoleAssignmentId_g يظهر تعيين الدور الذي تم تكريمه عند الإذن بالطلب.

فرض التحكم في الوصول المستند إلى الدور كطريقة المصادقة الوحيدة

في الحالات التي تريد فيها إجبار العملاء على الاتصال ب Azure Cosmos DB من خلال التحكم في الوصول المستند إلى الدور حصريا، يمكنك تعطيل المفاتيح الأساسية/الثانوية للحساب. عند القيام بذلك، يتم رفض أي طلب وارد باستخدام مفتاح أساسي/ثانوي أو رمز مميز للمورد بشكل نشط.

استخدام قوالب Azure Resource Manager

عند إنشاء أو تحديث حساب Azure Cosmos DB باستخدام قوالب Azure Resource Manager، قم بتعيين الخاصية disableLocalAuth إلى true:

"resources": [
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "disableLocalAuth": true,
            // ...
        },
        // ...
    },
    // ...
 ]

الحدود

  • يمكنك إنشاء ما يصل إلى 100 تعريف دور و2,000 تعيين دور لكل حساب Azure Cosmos DB.
  • يمكنك فقط تعيين تعريفات الأدوار لهويات Microsoft Entra التي تنتمي إلى نفس مستأجر Microsoft Entra مثل حساب Azure Cosmos DB الخاص بك.
  • تحليل مجموعة Microsoft Entra غير مدعوم حاليا للهويات التي تنتمي إلى أكثر من 200 مجموعة.
  • يتم تمرير الرمز المميز ل Microsoft Entra حاليا كعنوان مع كل طلب فردي تم إرساله إلى خدمة Azure Cosmos DB، ما يزيد من حجم الحمولة الإجمالي.

الأسئلة الشائعة

يتضمن هذا القسم الأسئلة المتداولة حول التحكم في الوصول المستند إلى الدور وAzure Cosmos DB.

ما هي واجهات برمجة تطبيقات Azure Cosmos DB التي تدعم التحكم في الوصول المستند إلى الدور على مستوى البيانات؟

اعتبارا من الآن، يتم دعم واجهة برمجة تطبيقات NoSQL فقط.

هل من الممكن إدارة تعريفات الأدوار وتعيينات الأدوار من مدخل Azure؟

دعم مدخل Azure لإدارة الأدوار غير متوفر حتى الآن.

ما هي SDKs في Azure Cosmos DB API ل NoSQL التي تدعم التحكم في الوصول المستند إلى الدور؟

يتم دعم حزم تطوير البرامج.NET V3وJava V4وJavaScript V3وPython V4.3+حالياً.

هل يتم تحديث الرمز المميز ل Microsoft Entra تلقائيا بواسطة Azure Cosmos DB SDKs عند انتهاء صلاحيته؟

نعم.

هل من الممكن تعطيل استخدام مفاتيح الحساب الأساسية/الثانوية عند استخدام التحكم في الوصول المستند إلى الدور؟

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

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