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

ينطبق على: قاعدة بيانات Azure لـ PostgreSQL - خادم واحد

هام

قاعدة بيانات Azure ل PostgreSQL - خادم واحد على مسار التقاعد. نوصي بشدة بالترقية إلى Azure Database for PostgreSQL - Flexible Server. لمزيد من المعلومات حول الترحيل إلى قاعدة بيانات Azure ل PostgreSQL - خادم مرن، راجع ما يحدث لقاعدة بيانات Azure لخادم PostgreSQL الفردي؟.

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

تعيين مستخدم مسؤول Microsoft Entra

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

لتعيين مسؤول Microsoft Entra (يمكنك استخدام مستخدم أو مجموعة)، يرجى اتباع الخطوات التالية

  1. في مدخل Microsoft Azure، حدد مثيل Azure Database for PostgreSQL الذي تريد تمكينه لمعرف Microsoft Entra.
  2. ضمن الإعدادات، حدد مسؤول Active Directory:

تعيين مسؤول Microsoft Entra

  1. حدد مستخدم Microsoft Entra صالحا في مستأجر العميل ليكون مسؤول Microsoft Entra.

هام

عند تعيين المسؤول، تتم إضافة مستخدم جديد إلى قاعدة البيانات الخاصة بـ Azure لخادم PostgreSQL بأذونات مسؤول كاملة. سيكون لمستخدم Microsoft Entra Admin في قاعدة بيانات Azure ل PostgreSQL الدور azure_ad_admin. يمكن إنشاء مسؤول Microsoft Entra واحد فقط لكل خادم PostgreSQL وسيتم استبدال تحديد مسؤول آخر بمسؤول Microsoft Entra الموجود الذي تم تكوينه للخادم. يمكنك تحديد مجموعة Microsoft Entra بدلا من مستخدم فردي ليكون لديك العديد من المسؤولين.

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

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

يلخص الرسم التخطيطي عالي المستوى التالي سير عمل استخدام مصادقة Microsoft Entra مع قاعدة بيانات Azure ل PostgreSQL:

تدفق المصادقة

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

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

  • سطر أوامر psql (استخدم متغير PGPASSWORD لتمرير الرمز المميز، قم بمراجعة الخطوة 3 لمزيد من المعلومات)
  • Azure Data Studio (عن طريق استخدام ملحق PostgreSQL)
  • العملاء الآخرون القائمون على libpq (على سبيل المثال، إطارات عمل التطبيق الأكثر شهرة وORMs)
  • PgAdmin (قم بإلغاء تحديد الاتصال الآن عند إنشاء الخادم. قم بمراجعة الخطوة 4 لمزيد من المعلومات)

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

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

يمكنك المتابعة في Azure Cloud Shell أو Azure VM أو على الجهاز المحلي الخاص بك. تأكد من تثبيت واجهة سطر الأوامر الخاصة بـ Azure.

المصادقة باستخدام معرف Microsoft Entra كمستخدم واحد

الخطوة 1: قم بتسجيل الدخول إلى اشتراك Azure الخاص بالمستخدم

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

az login

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

الخطوة 2: استرداد الرمز المميز للوصول إلى Microsoft Entra

استدعاء أداة Azure CLI للحصول على رمز وصول مميز للمستخدم المصادق عليه من Microsoft Entra من الخطوة 1 للوصول إلى قاعدة بيانات Azure ل PostgreSQL.

مثال (Cloud عام):

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

يجب تحديد قيمة المورد الوارد أعلاه تمامًا كما هو موضح. بالنسبة إلى شبكات النظير الأخرى، يمكن البحث عن قيمة المورد باستخدام:

az cloud show

بالنسبة إلى الإصدار 2.0.71 من Azure CLI والإصدارات الأحدث، يمكن تحديد الأمر في الإصدار التالي الأكثر ملاءمة لكافة السحابة:

az account get-access-token --resource-type oss-rdbms

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

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

الرمز المميز عبارة عن سلسلة Base 64 التي تشفر كافة المعلومات حول المستخدم المصادق عليه، والتي تستهدف قاعدة البيانات الخاصة بـ Azure لخدمة PostgreSQL.

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

عند الاتصال، تحتاج إلى استخدام الرمز المميز للوصول باعتباره رمز وصول مستخدم PostgreSQL.

عند استخدام psql عميل سطر الأوامر، يجب تمرير الرمز المميز للوصول عبر PGPASSWORD متغير البيئة، نظرا لأن الرمز المميز للوصول يتجاوز طول رمز الوصول الذي يمكن أن psql يُقبل مباشرة:

مثال على النافذة:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

مثال بشأن Linux/macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

يمكنك الآن بدء اتصال بقاعدة البيانات الخاضة بـ Azure لـ PostgreSQL كما تفعل عادةً:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com@mydb dbname=postgres sslmode=require"

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

للاتصال باستخدام رمز Microsoft Entra المميز مع pgAdmin، تحتاج إلى اتباع الخطوات التالية:

  1. قم بإلغاء تحديد خيار الاتصال الآن عند تنفيذ عملية إنشاء الخادم.
  2. أدخل تفاصيل الخادم الخاص بك في علامة تبويب الاتصال واحفظها.
  3. من قائمة المتصفح، حدد الاتصال بقاعدة بيانات Azure لخادم PostgreSQL
  4. أدخل رمز الوصول والرمز المميز لـ AD عند مطالبتك بذلك.

اعتبارات هامة عند الاتصال:

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

تتم الآن المصادقة على قاعدة بيانات Azure لخادم PostgreSQL باستخدام مصادقة Microsoft Entra.

المصادقة باستخدام معرف Microsoft Entra كعضو في المجموعة

الخطوة 1: إنشاء مجموعات Microsoft Entra في قاعدة بيانات Azure ل PostgreSQL

لتمكين مجموعة Microsoft Entra للوصول إلى قاعدة البيانات الخاصة بك، استخدم نفس الآلية للمستخدمين، ولكن بدلا من ذلك حدد اسم المجموعة:

مثال:

CREATE USER <new_user> IN ROLE azure_ad_user;

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

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

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

az login

الخطوة 3: استرداد الرمز المميز للوصول إلى Microsoft Entra

استدعاء أداة Azure CLI للحصول على رمز مميز للوصول لمستخدم Microsoft Entra المصادق عليه من الخطوة 2 للوصول إلى قاعدة بيانات Azure ل PostgreSQL.

مثال (Cloud عام):

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

يجب تحديد قيمة المورد الوارد أعلاه تمامًا كما هو موضح. بالنسبة إلى شبكات النظير الأخرى، يمكن البحث عن قيمة المورد باستخدام:

az cloud show

بالنسبة إلى الإصدار 2.0.71 من Azure CLI والإصدارات الأحدث، يمكن تحديد الأمر في الإصدار التالي الأكثر ملاءمة لكافة السحابة:

az account get-access-token --resource-type oss-rdbms

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

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

الخطوة 4: استخدام الرمز المميز كرمز وصول لتسجيل الدخول باستخدام psql أو PgAdmin (راجع الخطوات الواردة أعلاه لاتصال المستخدم)

اعتبارات مهمة عند إجراء الاتصال بالاعتبار أنك عضو في المجموعة:

  • groupname@mydb هو اسم مجموعة Microsoft Entra التي تحاول الاتصال بها ك
  • قم دائما بإلحاق اسم الخادم باسم المستخدم/المجموعة Microsoft Entra (على سبيل المثال. @mydb)
  • تأكد من استخدام طريقة كتابة اسم مجموعة Microsoft Entra بالضبط.
  • أسماء المستخدمين والمجموعة في Microsoft Entra حساسة لحالة الأحرف
  • عند إجراء الاتصال كمجموعة، استخدم فقط اسم المجموعة (على سبيل المثال GroupName @ mydb) وليس الاسم المستعار لعضو المجموعة.
  • إذا كان الاسم يحتوي على مسافات، يجب استخدم/ قبل كل مسافة لتجنبها.
  • صلاحية رمز الوصول تتراوح ما بين 5 دقائق إلى 60 دقيقة. نوصيك بالحصول على رمز الوصول قبل بدء عملية تسجيل الدخول إلى قاعدة البيانات الخاصة بـ Azure لـ PostgreSQL.

تمت مصادقتك الآن على خادم PostgreSQL باستخدام مصادقة Microsoft Entra.

إنشاء مستخدمي Microsoft Entra في قاعدة بيانات Azure ل PostgreSQL

لإضافة مستخدم Microsoft Entra إلى قاعدة بيانات Azure لقاعدة بيانات PostgreSQL، قم بتنفيذ الخطوات التالية بعد الاتصال (راجع القسم اللاحق حول كيفية الاتصال):

  1. تأكد أولا من أن مستخدم <user>@yourtenant.onmicrosoft.com Microsoft Entra هو مستخدم صالح في مستأجر Microsoft Entra.
  2. سجل الدخول إلى قاعدة بيانات Azure لمثيل PostgreSQL كمستخدم مسؤول Microsoft Entra.
  3. أنشئ دورًا<user>@yourtenant.onmicrosoft.com في قاعدة البيانات الخاصة بـ Azure لـ PostgreSQL.
  4. جعل<user>@yourtenant.onmicrosoft.comعضو في الدور الخاص بـ azure_ad_user. يجب منح هذا فقط لمستخدمي Microsoft Entra.

مثال:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

إشعار

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

التحقق من صحة الرمز المميز

تضمن مصادقة Microsoft Entra في قاعدة بيانات Azure ل PostgreSQL وجود المستخدم في خادم PostgreSQL، وتتحقق من صحة الرمز المميز عن طريق التحقق من صحة محتويات الرمز المميز. تنفيذ خطوات التحقق من صحة الرمز المميز التالية:

  • تم توقيع الرمز المميز بواسطة معرف Microsoft Entra ولم يتم العبث به
  • تم إصدار الرمز المميز بواسطة معرف Microsoft Entra للمستأجر المقترن بالخادم
  • الرمز المميز لم تنته صلاحيته
  • الرمز المميز خاص بقاعدة البيانات الخاصة بـ Azure لمورد PostgreSQL (وليس مورد Azure آخر)

ترحيل مستخدمي PostgreSQL الحاليين إلى المصادقة المستندة إلى معرف Microsoft Entra

يمكنك تمكين مصادقة Microsoft Entra للمستخدمين الحاليين. هناك حالتان للنظر فيهما:

الحالة 1: يتطابق اسم مستخدم PostgreSQL مع الاسم الأساسي لمستخدم Microsoft Entra

في الحالة غير المحتملة التي يتطابق فيها المستخدمون الحاليون بالفعل مع أسماء مستخدمي Microsoft Entra، يمكنك منح azure_ad_user الدور لهم لتمكينهم من مصادقة Microsoft Entra:

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

سيتمكنون الآن من تسجيل الدخول باستخدام بيانات اعتماد Microsoft Entra بدلا من استخدام كلمة مرور مستخدم PostgreSQL المكونة مسبقا.

الحالة 2: اسم مستخدم PostgreSQL مختلف عن الاسم الأساسي لمستخدم Microsoft Entra

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

GRANT azure_ad_user TO <new_user>;

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

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