استخدام معرف Microsoft Entra وأدوار PostgreSQL الأصلية للمصادقة مع Azure Cosmos DB ل PostgreSQL

ينطبق على: Azure Cosmos DB ل PostgreSQL (مدعوم بملحق قاعدة بيانات Citus إلى PostgreSQL)

في هذه المقالة، يمكنك تكوين أساليب المصادقة ل Azure Cosmos DB ل PostgreSQL. يمكنك إدارة مستخدمي مسؤول Microsoft Entra ID وأدوار PostgreSQL الأصلية للمصادقة باستخدام Azure Cosmos DB ل PostgreSQL. يمكنك أيضا معرفة كيفية استخدام رمز معرف Microsoft Entra المميز مع Azure Cosmos DB ل PostgreSQL.

يتم إنشاء Azure Cosmos DB لنظام مجموعة PostgreSQL مع دور PostgreSQL أصلي واحد مضمن يسمى 'citus'. يمكنك إضافة المزيد من أدوار PostgreSQL الأصلية بعد اكتمال توفير نظام المجموعة.

يمكنك أيضا تكوين مصادقة معرف Microsoft Entra (المعروف سابقا ب Azure Active Directory) ل Azure Cosmos DB ل PostgreSQL. يمكنك تمكين مصادقة معرف Microsoft Entra بالإضافة إلى أو بدلا من مصادقة PostgreSQL الأصلية على نظام المجموعة الخاص بك. يمكنك تغيير أساليب المصادقة الممكنة على نظام المجموعة في أي وقت بعد توفير نظام المجموعة. عند تمكين مصادقة معرف Microsoft Entra، يمكنك إضافة العديد من مستخدمي معرف Microsoft Entra إلى نظام مجموعة Azure Cosmos DB ل PostgreSQL وجعل أي منهم مسؤولين. يمكن أن يكون مستخدم Microsoft Entra ID مستخدما أو كيان خدمة.

اختيار أسلوب المصادقة

تحتاج إلى استخدام مدخل Microsoft Azure لتكوين أساليب المصادقة على نظام مجموعة Azure Cosmos DB ل PostgreSQL.

أكمل العناصر التالية على نظام مجموعة Azure Cosmos DB ل PostgreSQL لتمكين أو تعطيل مصادقة معرف Microsoft Entra ومصادقة PostgreSQL الأصلية.

  1. في صفحة نظام المجموعة، ضمن عنوان إدارة نظام المجموعة، اختر المصادقة لفتح خيارات إدارة المصادقة.
  2. في قسم أساليب المصادقة، اختر مصادقة PostgreSQL فقط، أو مصادقة معرف Microsoft Entra، أو مصادقة PostgreSQL ومعرف Microsoft Entra كطريقة مصادقة استنادا إلى متطلباتك.

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

تكوين مصادقة معرف Microsoft Entra

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

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

هام

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

  1. ابحث عن "معرف Microsoft Entra" في مدخل Microsoft Azure.
  2. افتح خدمة "معرف Microsoft Entra".
  3. في صفحة Overview لخدمة Microsoft Entra ID في قسم Overview ، ابحث عن معرف التطبيق 'b4fa09d8-5da5-4352-83d9-05c2a44cf431'.
  4. اختر تطبيق المؤسسة "Azure Cosmos DB for PostgreSQL AAD Authentication" في نتائج البحث.
  5. في Azure Cosmos DB لتطبيق مصادقة PostgreSQL AAD Enterprise ، اختر صفحة Properties .
  6. هل تريد تعيين ممكن للمستخدمين لتسجيل الدخول؟ إلى نعم وحفظ التغيير.

إشعار

يتطلب تحرير خصائص تطبيق المؤسسة مثل "تمكين المستخدمين من تسجيل الدخول" أذونات الممنوحة لدور له امتيازات لتحديث خصائص تطبيق المؤسسة. يجب أن يكون للأدوار، مثل مالك تطبيق المؤسسة، ترخيص "تحديث خصائص تطبيق المؤسسة". لمزيد من المعلومات، راجع أدوار Microsoft Entra الأقل امتيازا حسب المهمة - تطبيقات المؤسسة.

إضافة مسؤولي معرف Microsoft Entra إلى Azure Cosmos DB لنظام مجموعة PostgreSQL

لإضافة أدوار معرف Microsoft Entra أو إزالتها على نظام المجموعة، اتبع الخطوات التالية في صفحة المصادقة :

  1. في قسم Microsoft Entra ID authentication ، حدد Add Microsoft Entra ID admins.
  2. في لوحة Select Microsoft Entra ID Admins ، حدد مستخدم Microsoft Entra ID أو تطبيق مؤسسة صالحا واحدا أو أكثر في مستأجر AD الحالي ليكون مسؤول معرف Microsoft Entra على قاعدة بيانات Azure Cosmos DB لنظام مجموعة PostgreSQL.
  3. استخدم Select لتأكيد اختيارك.
  4. في صفحة المصادقة ، حدد حفظ في شريط الأدوات لحفظ التغييرات أو المتابعة مع إضافة أدوار PostgreSQL الأصلية.

تكوين مصادقة PostgreSQL الأصلية

لإضافة أدوار Postgres على نظام المجموعة، اتبع الخطوات التالية في صفحة المصادقة :

  1. في قسم مصادقة PostgreSQL، حدد إضافة دور PostgreSQL.
  2. أدخل اسم الدور وكلمة المرور. حدد حفظ.
  3. في صفحة المصادقة ، حدد حفظ في شريط الأدوات لحفظ التغييرات أو المتابعة مع إضافة مستخدمي مسؤول Microsoft Entra ID.

يتم إنشاء مستخدم PostgreSQL الأصلي على عقدة المنسق لنظام المجموعة، ونشره إلى جميع العقد العاملة. الأدوار التي تم إنشاؤها من خلال مدخل Microsoft Azure لها سمة LOGIN، ما يعني أنهم مستخدمون حقيقيون يمكنهم تسجيل الدخول إلى قاعدة البيانات.

الاتصال ب Azure Cosmos ل PostgreSQL باستخدام مصادقة معرف Microsoft Entra

يعمل تكامل Microsoft Entra ID مع أدوات عميل PostgreSQL القياسية مثل psql، والتي لا تعرف معرف Microsoft Entra وتدعم تحديد اسم المستخدم وكلمة المرور فقط عند الاتصال ب PostgreSQL. في مثل هذه الحالات، يتم تمرير الرمز المميز لمعرف Microsoft Entra ككلمة مرور.

قمنا باختبار العملاء التاليين:

  • سطر أوامر psql: استخدم PGPASSWORD المتغير لتمرير الرمز المميز.
  • عملاء آخرون يستندون إلى libpq: تتضمن الأمثلة أطر عمل التطبيقات الشائعة ومخططي الكائنات العلائقية (ORMs).
  • pgAdmin: مسح الاتصال الآن عند إنشاء الخادم.

استخدم الإجراءات التالية للمصادقة مع معرف Microsoft Entra كمستخدم Azure Cosmos DB لمستخدم PostgreSQL. يمكنك المتابعة في Azure Cloud Shell أو على جهاز Azure الظاهري أو على جهازك المحلي.

تسجيل الدخول إلى اشتراك Azure الخاص بالمستخدم

ابدأ بالمصادقة باستخدام معرف Microsoft Entra باستخدام Azure CLI. هذه الخطوة غير مطلوبة في Azure Cloud Shell.

az login

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

اسم حساب المستخدم الذي تستخدمه للمصادقة (على سبيل المثال، user@tenant.onmicrosoft.com) هو الاسم الذي سيتم إنشاء رمز الوصول المميز له في الخطوة التالية.

استرداد الرمز المميز للوصول إلى معرف Microsoft Entra

استخدم Azure CLI للحصول على رمز مميز للوصول لمستخدم Microsoft Entra ID المصادق عليه للوصول إلى Azure Cosmos ل PostgreSQL. إليك مثال:

az account get-access-token --resource https://token.postgres.cosmos.azure.com

بعد نجاح المصادقة، يقوم معرف Microsoft Entra بإرجاع رمز مميز للوصول لاشتراك Azure الحالي:

{
  "accessToken": "[TOKEN]",
  "expiresOn": "[expiration_date_and_time]",
  "subscription": "[subscription_id]",
  "tenant": "[tenant_id]",
  "tokenType": "Bearer"
}

الرمز المميز هو سلسلة Base64. يقوم بترميز جميع المعلومات حول المستخدم المصادق عليه ويقترن بخدمة Azure Cosmos DB لخدمة PostgreSQL. الرمز المميز صالح لمدة 5 دقائق على الأقل بحد أقصى 90 دقيقة. تحدد expiresOn وقت انتهاء صلاحية الرمز المميز الفعلي.

استخدام رمز مميز ككلمة مرور لتسجيل الدخول باستخدام psql العميل

عند الاتصال، من الأفضل استخدام الرمز المميز للوصول ككلمة مرور مستخدم PostgreSQL.

أثناء استخدام عميل سطر الأوامر psql، يجب تمرير رمز الوصول المميز من خلال PGPASSWORD متغير البيئة. والسبب هو أن الرمز المميز للوصول يتجاوز طول كلمة المرور التي يمكن أن يقبلها psql مباشرة.

فيما يلي مثال على Windows:

set PGPASSWORD=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'

فيما يلي مثال على Linux/macOS:

export PGPASSWORD=<TOKEN value from the previous step>

يمكنك أيضا دمج الخطوتين السابقتين معا باستخدام استبدال الأمر. يمكن تغليف استرداد الرمز المميز في متغير وتم تمريره مباشرة كقيمة لمتغير PGPASSWORD البيئة:

export PGPASSWORD=$(az account get-access-token --resource https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)

إشعار

تأكد من تعيين متغير PGPASSWORD إلى الرمز المميز للوصول إلى معرف Microsoft Entra لاشتراكك لمصادقة معرف Microsoft Entra. إذا كنت بحاجة إلى إجراء مصادقة دور Postgres من نفس الجلسة، يمكنك تعيين PGPASSWORD إلى كلمة مرور دور Postgres أو مسح قيمة المتغير PGPASSWORD لإدخال كلمة المرور بشكل تفاعلي. ستفشل المصادقة مع القيمة الخطأ في PGPASSWORD.

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

psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] sslmode=require"

استخدام رمز مميز ككلمة مرور لتسجيل الدخول باستخدام PgAdmin

للاتصال باستخدام رمز معرف Microsoft Entra المميز مع PgAdmin، اتبع الخطوات التالية:

  1. قم بإلغاء تحديد خيار الاتصال الآن عند إنشاء الخادم.
  2. أدخل تفاصيل الخادم في علامة التبويب اتصال واحفظها.
    1. تأكد من تحديد مستخدم معرف Microsoft Entra صالح في اسم المستخدم.
  3. من القائمة pgAdmin Object ، حدد Connect Server.
  4. أدخل كلمة مرور الرمز المميز لمعرف Microsoft Entra عند مطالبتك.

فيما يلي بعض الاعتبارات الأساسية عند الاتصال:

  • user@tenant.onmicrosoft.com هو اسم مستخدم معرف Microsoft Entra.
  • تأكد من استخدام الطريقة الدقيقة لتهجئة مستخدم Azure. أسماء المستخدمين والمجموعة لمعرف Microsoft Entra حساسة لحالة الأحرف.
  • إذا كان الاسم يحتوي على مسافات، فاستخدم مائلة عكسية (\) قبل كل مسافة للهروب منها.
  • صلاحية الرمز المميز للوصول من 5 دقائق إلى 90 دقيقة. يجب أن تحصل على الرمز المميز للوصول قبل بدء تسجيل الدخول إلى Azure Cosmos ل PostgreSQL.

تمت الآن مصادقتك على خادم Azure Cosmos for PostgreSQL من خلال مصادقة معرف Microsoft Entra.

إدارة أدوار PostgreSQL الأصلية

عند تمكين مصادقة PostgreSQL الأصلية على نظام المجموعة، يمكنك إضافة أدوار Postgres وحذفها بالإضافة إلى دور "citus" المضمن. يمكنك أيضا إعادة تعيين كلمة المرور وتعديل امتيازات Postgres للأدوار الأصلية.

كيفية حذف دور مستخدم PostgreSQL أصلي أو تغيير كلمة المرور الخاصة به

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

الدور citus مميز وليس من الممكن حذفه. ومع ذلك، citus سيتم تعطيل الدور، إذا تم تحديد أسلوب مصادقة "Microsoft Entra ID authentication only" لنظام المجموعة.

كيفية تعديل الامتيازات لأدوار المستخدم

تُستخدم أدوار المستخدم الجديدة بشكل شائع لتوفير الوصول لقاعدة البيانات بامتيازات مقيدة. لتعديل امتيازات المستخدم، قم باستخدام أوامر PostgreSQL القياسية، باستخدام أداة مثل PgAdmin أو psql. لمزيد من المعلومات، راجع الاتصال بمجموعة.

على سبيل المثال، للسماح ل PostgreSQL db_user بقراءة mytable، امنح الإذن:

GRANT SELECT ON mytable TO db_user;

لمنح نفس الأذونات لدور user@tenant.onmicrosoft.com معرف Microsoft Entra، استخدم الأمر التالي:

GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";

ينشر Azure Cosmos DB ل PostgreSQL عبارات GRANT أحادية الجدول من خلال المجموعة بأكملها، وتطبيقها على جميع العقد العاملة. كما أنه ينشر GRANTs على مستوى النظام (على سبيل المثال، لجميع الجداول في مخطط):

-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;

أو لدور معرف Microsoft Entra

-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";

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