الوصول الآمن إلى البيانات في Azure Cosmos DB

ينطبق على: NoSQL

توفر هذه المقالة نظرة عامة حول التحكم في الوصول إلى البيانات في Azure Cosmos DB.

يوفر Azure Cosmos DB ثلاث طرق للتحكم في الوصول إلى بياناتك.

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

مفاتيح أساسية/ثانوية

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

لمشاهدة مفاتيح حسابك، في القائمة اليمنى حدد Keys. بعد ذلك، حدد أيقونة عرض على يمين كل مفتاح. حدد الزر Copy لنسخ المفتاح المحدد. يمكنك إخفاؤها بعد ذلك عن طريق تحديد نفس الأيقونة لكل مفتاح، والتي تحدث الأيقونة إلى زر إخفاء .

Screenshot of the View account key for Azure Cosmos DB.

تدوير المفتاح وتجديده

إشعار

يصف القسم التالي خطوات تدوير وإعادة إنشاء المفاتيح لواجهة برمجة التطبيقات ل NoSQL. إذا كنت تستخدم واجهة برمجة تطبيقات مختلفة، فشاهد API ل MongoDB أو API ل Cassandra أو API ل Gremlin أو API لأقسام Table .

لمراقبة حسابك للحصول على التحديثات الرئيسية وإعادة إنشاء المفاتيح، راجع مراقبة حساب Azure Cosmos DB الخاص بك للحصول على التحديثات الرئيسية وإعادة إنشاء المفتاح.

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

  1. انتقل إلى حساب Azure Cosmos DB في مدخل Microsoft Azure.

  2. حدد Keys في القائمة اليسرى ثم حدد Regenerate Secondary Key من علامة الحذف على يمين المفتاح الثانوي.

    Screenshot that shows the Azure portal showing how to regenerate the secondary key.

  3. تحقق أن المفتاح الثانوي الجديد يعمل باستمرار وفق حساب Azure Cosmos DB الخاص بك. يمكن أن يستغرق إعادة إنشاء المفتاح في أي مكان من دقيقة واحدة إلى عدة ساعات اعتمادا على حجم حساب Azure Cosmos DB.

  4. استبدل مفتاحك الأساسي بالمفتاح الثانوي في تطبيقك.

  5. ارجع إلى مدخل Azure وشغّل إعادة إنشاء المفتاح الأساسي.

    Screenshot that shows the Azure portal showing how to regenerate the primary key.

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

يوضح نموذج التعليمات البرمجية التالي كيفية استخدام نقطة نهاية حساب Azure Cosmos DB والمفتاح الأساسي لإنشاء CosmosClientمثيل :

// Read the Azure Cosmos DB endpointUrl and authorization keys from config.
// These values are available from the Azure portal on the Azure Cosmos DB account blade under "Keys".
// Keep these values in a safe and secure location. Together they provide Administrative access to your Azure Cosmos DB account.

private static readonly string endpointUrl = ConfigurationManager.AppSettings["EndPointUrl"];
private static readonly string authorizationKey = ConfigurationManager.AppSettings["AuthorizationKey"];

CosmosClient client = new CosmosClient(endpointUrl, authorizationKey);

التحكم في الوصول استناداً إلى الدور

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

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

Azure Cosmos DB RBAC هي الطريقة المثالية للتحكم في الوصول في المواقف التي:

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

لمعرفة المزيد حول Azure Cosmos DB RBAC، راجع تكوين التحكم في الوصول المستند إلى الدور لحساب Azure Cosmos DB الخاص بك.

للحصول على معلومات ونموذج التعليمات البرمجية لتكوين RBAC ل Azure Cosmos DB ل MongoDB، راجع تكوين التحكم في الوصول المستند إلى الدور ل Azure Cosmos DB ل MongoDB.

الرموز المميزة للمورد

توفر الرموز المميزة للموارد الوصول إلى موارد التطبيق داخل قاعدة بيانات. الرموز المميزة للمورد:

  • توفير الوصول إلى حاويات ومفاتيح أقسام ومستندات ومرفقات معينة.
  • يتم إنشاؤها عندما يتم منح مستخدمأذونات تفصيلية لمورد معين.
  • تتم إعادة إنشائها عندما يتم التصرف بناء على مورد إذن بواسطة استدعاء POST أو GET أو PUT.
  • استخدم رمزاً مميزاً لمورد التجزئة تم إنشاؤه خصيصاً للمستخدم والمورد والإذن.
  • مُلزماً بفترة صلاحية قابلة للتخصيص. النطاق الزمني الصالح الافتراضي هو ساعة واحدة. ومع ذلك، قد يتم تحديد مدة بقاء الرمز المميز بشكل صريح، بحد أقصى 24 ساعة.
  • توفير بديل آمن لإعطاء المفتاح الأساسي.
  • تمكين العملاء من قراءة الموارد وكتابتها وحذفها في حساب Azure Cosmos DB وفقا للأذونات التي تم منحها لهم.

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

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

فيما يلي نمط تصميم نموذجي حيث يمكن طلب الرموز المميزة للمورد وإنشاءها وتسليمها للعملاء:

  1. تم إعداد خدمة متوسطة المستوى لخدمة تطبيق الهاتف المحمول لمشاركة صور المستخدم.

  2. تمتلك خدمة الطبقة المتوسطة المفتاح الأساسي لحساب Azure Cosmos DB.

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

  4. عند تسجيل الدخول، يحدد تطبيق الصور هوية المستخدم مع خدمة الطبقة المتوسطة. آلية إنشاء الهوية هذه متروكة تماماً للتطبيق.

  5. بعد تأسيس الهوية، تطلب الخدمة متوسطة المستوى أذونات استنادا إلى الهوية.

  6. ترسل خدمة الطبقة المتوسطة رمزاً مميزاً للمورد مرة أخرى إلى تطبيق الهاتف.

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

  8. عند انتهاء صلاحية الرمز المميز للمورد، تتلقى الطلبات اللاحقة استثناء غير مصرح به 401. عند هذه النقطة، يعيد تطبيق الهاتف إنشاء الهوية ويطلب رمزا مميزا جديدا للمورد.

    Screenshot that shows an Azure Cosmos DB resource tokens workflow.

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

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

المستخدمين

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

// Create a user.
Database database = client.GetDatabase("SalesDatabase");
User user = await database.CreateUserAsync("User 1");

إشعار

كل مستخدم Azure Cosmos DB لديه ReadAsync() أسلوب يمكنك استخدامه لاسترداد قائمة الأذونات المقترنة بالمستخدم.

الأذونات

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

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

إشعار

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

إذا قمت بتمكين السجلات التشخيصية لطلبات مستوى البيانات، فسيتم تسجيل الخاصيتين التاليتين المناظرتين للإذن:

  • resourceTokenPermissionId: تشير هذه الخاصية إلى معرف إذن رمز المورد المميز الذي حددته.

  • resourceTokenPermissionMode: تشير هذه الخاصية إلى وضع الإذن الذي قمت بتعيينه عند إنشاء رمز المورد المميز. يمكن أن يحتوي وضع الأذونات على قيم مثل الكل أو القراءة.

نموذج التعليمات البرمجية لإنشاء إذن

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

// Create a permission on a container and specific partition key value
Container container = client.GetContainer("SalesDatabase", "OrdersContainer");
await user.CreatePermissionAsync(
    new PermissionProperties(
        id: "permissionUser1Orders", 
        permissionMode: PermissionMode.All, 
        container: container,
        resourcePartitionKey: new PartitionKey("012345")));

نموذج التعليمات البرمجية لقراءة إذن للمستخدم

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

// Read a permission, create user client session.
Permission permission = await user.GetPermission("permissionUser1Orders").ReadAsync();

CosmosClient client = new CosmosClient(accountEndpoint: "MyEndpoint", authKeyOrResourceToken: permission.Resource.Token);

الاختلافات بين RBAC والرموز المميزة للموارد

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

إضافة مستخدمين وتعيين أدوار

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

  1. افتح مدخل Microsoft Azure وحدد حساب Azure Cosmos DB الخاص بك.

  2. حدد Access control (IAM).

  3. يرجى النقر فوق "إضافة" >"إضافة تعيين دور" لفتح صفحة إضافة تعيين الدور.

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

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

    Screenshot that shows the Add role assignment page in the Azure portal.

يمكن للكيان الآن قراءة موارد Azure Cosmos DB.

حذف بيانات المستخدم أو تصديرها

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

توفر كل واجهة برمجة تطبيقات متعددة النماذج (SQL أو MongoDB أو Gremlin أو Cassandra أو Table) حزم SDK بلغات مختلفة تحتوي على أساليب للبحث عن البيانات وحذفها استنادا إلى التقييمات المخصصة. يمكنك أيضا تمكين ميزة مدة البقاء (TTL) لحذف البيانات تلقائيا بعد فترة محددة، دون تكبد أي تكلفة إضافية.

إشعار

للحصول على معلومات حول عرض البيانات الشخصية أو حذفها، راجع طلبات موضوع بيانات Azure للقانون العام لحماية البيانات (GDPR). لمزيد من المعلومات حول القانون العام لحماية البيانات (GDPR)، راجع قسم القانون العام لحماية البيانات (GDPR) في مركز توثيق Microsoft وقسم القانون العام لحماية البيانات (GDPR) لمدخل Service Trust.

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