الأمان في Azure Database for PostgreSQL - Flexible Server

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

تتوفر طبقات متعددة من الأمان للمساعدة في حماية البيانات على Azure Database for PostgreSQL - مثيل الخادم المرن. توضح هذه المقالة خيارات الأمان هذه.

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

حماية المعلومات وتشفيرها

قاعدة بيانات Azure ل PostgreSQL - يقوم الخادم المرن بتشفير البيانات بطريقتين:

  • البيانات المتنقلة: قاعدة بيانات Azure ل PostgreSQL - يقوم الخادم المرن بتشفير البيانات أثناء النقل باستخدام طبقة مآخذ التوصيل الآمنة وأمان طبقة النقل (SSL/TLS). يتم فرض التشفير بشكل افتراضي. لمزيد من المعلومات التفصيلية حول أمان الاتصال مع SSL\TLS، راجع هذه الوثائق. للحصول على أمان أفضل، قد تختار تمكين مصادقة SCRAM في قاعدة بيانات Azure ل PostgreSQL - الخادم المرن.

    على الرغم من أنه غير مستحسن للغاية، إذا لزم الأمر، بسبب عدم توافق العميل القديم، لديك خيار لتعطيل TLS\SSL للاتصالات بقاعدة بيانات Azure ل PostgreSQL - الخادم المرن عن طريق تحديث معلمة require_secure_transport الخادم إلى إيقاف التشغيل. يمكنك أيضا تعيين إصدار TLS عن طريق تعيين ssl_max_protocol_version معلمات الخادم.

  • البيانات الثابتة: لتشفير التخزين، تستخدم قاعدة بيانات Azure ل PostgreSQL - الخادم المرن وحدة التشفير التي تم التحقق من صحتها FIPS 140-2. يتم تشفير البيانات على القرص، بما في ذلك النسخ الاحتياطية والملفات المؤقتة التي تم إنشاؤها أثناء تشغيل الاستعلامات.

    تستخدم الخدمة تشفير AES 256 بت المضمن في تشفير تخزين Azure، ويتم إدارة المفاتيح من قبل النظام. وهذا يشبه تقنيات التشفير الأخرى الثابتة، مثل تشفير البيانات الشفاف في قواعد بيانات SQL Server أو Oracle. يتم تشغيل تشفير التخزين دائماً ولا يمكن تعطيله.

أمن الشبكة

عند تشغيل Azure Database for PostgreSQL - Flexible Server، لديك خياران رئيسيان لشبكة الاتصال:

  • الوصول الخاص: يمكنك نشر الخادم في شبكة Azure الظاهرية. تساعد شبكات Azure الظاهرية على توفير اتصال شبكة خاص وآمن. يمكن للموارد في شبكة ظاهرية الاتصال من خلال عناوين IP الخاصة. لمزيد من المعلومات، راجع نظرة عامة على شبكة الاتصال لـ Azure Database for PostgreSQL - Flexible Server.

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

  • الوصول العام: يمكن الوصول إلى الخادم من خلال نقطة نهاية عامة. نقطة النهاية العامة عنوان DNS عام قابل للحل. يتم تأمين الوصول إليه من خلال جدار حماية يحظر جميع الاتصالات بشكل افتراضي.

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

دعم Microsoft Defender for Cloud

يكتشف Microsoft Defender لقواعد البيانات الارتباطية مفتوحة المصدر الأنشطة الشاذة التي تشير إلى محاولات غير عادية وربما ضارة للوصول إلى قواعد البيانات أو استغلالها. يوفر Defender for Cloud تنبيهات أمان حول الأنشطة الشاذة بحيث يمكنك اكتشاف التهديدات المحتملة والاستجابة لها عند حدوثها. عند تمكين هذه الخطة، يوفر Defender for Cloud تنبيهات عندما يكتشف الوصول غير المألوف إلى قاعدة البيانات وأنماط الاستعلام وأنشطة قاعدة البيانات المشبوهة.

تظهر هذه التنبيهات في صفحة تنبيهات الأمان في Defender for Cloud وتتضمن:

  • تفاصيل النشاط المشبوه الذي أثارها
  • تكتيك MITRE ATT CK المرتبط
  • الإجراءات الموصى بها لكيفية التحقيق في التهديد والتخفيف من حدته
  • خيارات لمتابعة تحقيقاتك باستخدام Microsoft Sentinel

Microsoft Defender for Cloud وهجمات القوة الغاشمة

هجوم القوة الغاشمة هو من بين أساليب القرصنة الأكثر شيوعا وناجحة إلى حد ما، على الرغم من كونها أقل أساليب القرصنة تطورا. النظرية وراء مثل هذا الهجوم هي أنه إذا كنت تأخذ عددا لا نهائي من المحاولات لتخمين كلمة مرور، فأنت ملزم بأن تكون على حق في نهاية المطاف. عندما يكتشف Microsoft Defender for Cloud هجوم القوة الغاشمة، فإنه يشغل تنبيها لتوعيةك بوقوع هجوم بقوة غاشمة. كما يمكن فصل هجوم القوة الغاشمة البسيطة من هجوم القوة الغاشمة على مستخدم صالح أو هجوم ناجح بقوة غاشمة.

للحصول على تنبيهات من خطة Microsoft Defender، ستحتاج أولا إلى تمكينها كما هو موضح في القسم التالي.

تمكين الأمان المحسن باستخدام Microsoft Defender for Cloud

  1. من مدخل Microsoft Azure، انتقل إلى قائمة الأمان في الجزء الأيمن
  2. اختر Microsoft Defender for Cloud
  3. حدد تمكين في الجزء الأيمن.

لقطة شاشة لمدخل Azure توضح كيفية تمكين Cloud Defender.

إشعار

إذا كانت لديك ميزة "قواعد البيانات الارتباطية مفتوحة المصدر" ممكنة في خطة Microsoft Defender، فستلاحظ أن Microsoft Defender يتم تمكينه تلقائيا بشكل افتراضي لمورد خادم Azure Database for PostgreSQL المرن.

إدارة الوصول

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

يتم إنشاء مثيل Azure Database for PostgreSQL - Flexible Server مع الأدوار الافتراضية الثلاثة المعرفة. يمكنك مشاهدة هذه الأدوار عن طريق تشغيل الأمر :

SELECT rolname FROM pg_roles;

يتم سرد الأدوار أدناه:

  • azure_pg_admin
  • azuresu
  • دور المسؤول

أثناء إنشاء قاعدة بيانات Azure لمثيل PostgreSQL - Flexible Server، فإنك توفر بيانات اعتماد لدور مسؤول. يمكن استخدام دور المسؤول هذا لإنشاء المزيد من أدوار PostgreSQL.

على سبيل المثال، يمكننا أدناه إنشاء مثال للمستخدم/الدور يسمى "demouser"


 CREATE USER demouser PASSWORD password123;

يجب ألا يستخدم التطبيق دور المسؤول مطلقا.

في بيئات PaaS المستندة إلى السحابة، يتم تقييد الوصول إلى قاعدة بيانات Azure ل PostgreSQL - يقتصر حساب المستخدم الفائق للخادم المرن على التحكم في عمليات المستوى فقط من قبل مشغلي السحابة. لذلك، azure_pg_admin يوجد الحساب كحساب مستخدم فائقة الزائفة. دور المسؤول الخاص بك هو عضو في azure_pg_admin الدور.
ومع ذلك، فإن حساب مسؤول الخادم ليس جزءا من azuresu الدور، الذي يحتوي على امتيازات المستخدم الفائق ويستخدم لتنفيذ عمليات وحدة التحكم. نظرا لأن هذه الخدمة هي خدمة PaaS مدارة، فإن Microsoft فقط هي جزء من دور المستخدم الفائق.

يمكنك تدقيق قائمة الأدوار في الخادم بشكل دوري. على سبيل المثال، يمكنك الاتصال باستخدام psql العميل والاستعلام عن pg_roles الجدول ، الذي يسرد جميع الأدوار جنبا إلى جنب مع امتيازات مثل إنشاء أدوار إضافية وإنشاء قواعد بيانات والنسخ المتماثل وما إلى ذلك.


select * from pg_roles where rolname='demouser';
-[ RECORD 1 ]--+---------
rolname        | demouser
rolsuper       | f
rolinherit     | t
rolcreaterole  | f
rolcreatedb    | f
rolcanlogin    | f
rolreplication | f
rolconnlimit   | -1
rolpassword    | ********
rolvaliduntil  |
rolbypassrls   | f
rolconfig      |
oid            | 24827

من المهم ملاحظة أن عدد أذونات المستخدم الفائق فقط، مثل إنشاء بعض القوالب الضمنية، غير متوفرة مع قاعدة بيانات Azure ل PostgreSQL - الخادم المرن، نظرا azure_pg_admin لأن الدور لا يتوافق مع أذونات دور المستخدم الفائق PostgreSQL.

تسجيل التدقيق في قاعدة بيانات Azure ل PostgreSQL - يتوفر الخادم المرن أيضا مع قاعدة بيانات Azure ل PostgreSQL - الخادم المرن لتتبع النشاط في قواعد البيانات الخاصة بك.

التحكم في الوصول إلى المخطط

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

  • لمنع مستخدمي قاعدة بيانات التطبيق من إنشاء كائنات في المخطط العام، قم بإبطال إنشاء امتيازات للمخطط public من public الدور.

    REVOKE CREATE ON SCHEMA public FROM PUBLIC;
    
  • بعد ذلك، قم بإنشاء قاعدة بيانات جديدة.

    CREATE DATABASE Test_db;
    
  • إبطال كافة الامتيازات من المخطط PUBLIC على قاعدة البيانات الجديدة هذه.

    REVOKE ALL ON DATABASE Test_db FROM PUBLIC;
    
  • إنشاء دور مخصص لمستخدمي application db

    CREATE ROLE Test_db_user;
    
  • امنح مستخدمي قاعدة البيانات الذين لديهم هذا الدور القدرة على الاتصال بقاعدة البيانات.

    GRANT CONNECT ON DATABASE Test_db TO Test_db_user;
    GRANT ALL PRIVILEGES ON DATABASE Test_db TO Test_db_user;
    
  • إنشاء مستخدم قاعدة بيانات

    CREATE USER user1 PASSWORD 'Password_to_change'
    
  • تعيين دور، مع الاتصال وتحديد الامتيازات للمستخدم

    GRANT Test_db_user TO user1;
    

في هذا المثال، يمكن للمستخدم 1 الاتصال ولديه جميع الامتيازات في قاعدة بيانات الاختبار الخاصة بنا Test_db، ولكن ليس أي قاعدة بيانات أخرى على الخادم. من المستحسن أكثر من ذلك، بدلا من منح هذا المستخدم\الدور ALL PRIVILEGES على قاعدة البيانات هذه وكائناتها، لتوفير أذونات أكثر انتقائية، مثل SELECT،INSERT،EXECUTE، إلخ. لمزيد من المعلومات حول الامتيازات في قواعد بيانات PostgreSQL، راجع الأمرين GRANT و REVOKE في مستندات PostgreSQL.

تغييرات PostgreSQL 16 مع الأمان المستند إلى الدور

في دور قاعدة بيانات PostgreSQL يمكن أن يكون له العديد من السمات التي تحدد امتيازاته. إحدى هذه السمات هي سمة CREATEROLE، وهي مهمة لإدارة قاعدة بيانات PostgreSQL للمستخدمين والأدوار. في PostgreSQL 16 تم إدخال تغييرات كبيرة على هذه السمة. في PostgreSQL 16، لم يعد لدى المستخدمين الذين لديهم سمة CREATEROLE القدرة على تسليم العضوية في أي دور لأي شخص؛ بدلا من ذلك، مثل المستخدمين الآخرين، دون هذه السمة، يمكنهم فقط تسليم العضويات في الأدوار التي يمتلكونها ADMIN OPTION. أيضا، في PostgreSQL 16، لا تزال سمة CREATEROLE تسمح لغير الخاضعين للإشراف بالقدرة على توفير مستخدمين جدد، ومع ذلك يمكنهم إسقاط المستخدمين الذين أنشأوا أنفسهم فقط. ستؤدي محاولات إسقاط المستخدمين، التي لم يتم إنشاؤها بواسطة المستخدم باستخدام سمة CREATEROLE ، إلى حدوث خطأ.

كما قدم PostgreSQL 16 أدوارا مضمنة جديدة ومحسنة. يسمح دور pg_use_reserved_connections الجديد في PostgreSQL 16 باستخدام فتحات الاتصال المحجوزة عبر reserved_connections. يسمح دور pg_create_subscription للمستخدمين المتميزين بإنشاء اشتراكات.

أمان مستوى الصف

أمان مستوى الصف (RLS) هو ميزة أمان Azure Database for PostgreSQL - Flexible Server التي تسمح لمسؤولي قاعدة البيانات بتحديد النهج للتحكم في كيفية عرض صفوف معينة من البيانات وتشغيلها لأحد الأدوار أو أكثر. أمان مستوى الصف هو عامل تصفية إضافي يمكنك تطبيقه على جدول قاعدة بيانات Azure Database for PostgreSQL - Flexible Server. عندما يحاول مستخدم تنفيذ إجراء على جدول، يتم تطبيق عامل التصفية هذا قبل معايير الاستعلام أو التصفية الأخرى، ويتم تضييق البيانات أو رفضها وفقا لنهج الأمان الخاص بك. يمكنك إنشاء نهج أمان على مستوى الصف لأوامر معينة مثل SELECT وINSERT و UPDATE وDELETE، وتحديدها لكافة الأوامر. تتضمن حالات الاستخدام لأمان مستوى الصف تطبيقات متوافقة مع PCI والبيئات المصنفة والتطبيقات المشتركة للاستضافة / المستأجرين.

يمكن فقط للمستخدمين الذين لديهم SET ROW SECURITY حقوق تطبيق حقوق أمان الصف على جدول. قد يقوم مالك الجدول بتعيين أمان الصف على جدول. مثل OVERRIDE ROW SECURITY هذا هو حق ضمني حاليا. لا يتجاوز الأمان على مستوى الصف الأذونات الموجودة GRANT ، بل يضيف مستوى تحكم دقيقا. على سبيل المثال، الإعداد ROW SECURITY FOR SELECT للسماح لمستخدم معين بإعطاء صفوف لن يمنح هذا المستخدم حق الوصول إلا إذا كان لدى المستخدم أيضا SELECT امتيازات في العمود أو الجدول المعني.

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

CREATE TABLE accounts (manager text, company text, contact_email text);

ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;

CREATE POLICY account_managers ON accounts TO managers
    USING (manager = current_user);

تضيف WITH CHECK عبارة USING ضمنيا عبارة ، مما يضمن أن أعضاء دور المدير لا يمكنهم تنفيذ SELECTDELETEأو أو UPDATE عمليات على صفوف تنتمي إلى مديري آخرين، ولا INSERT يمكنهم إنشاء صفوف جديدة تنتمي إلى مدير آخر. يمكنك إسقاط نهج أمان صف باستخدام أمر DROP POLICY، كما في مثاله:



DROP POLICY account_managers ON accounts;

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

ALTER TABLE accounts DISABLE ROW LEVEL SECURITY;

تجاوز أمان مستوى الصف

يحتوي PostgreSQL على أذونات BYPASSRLS وNBYPASSRLS، والتي يمكن تعيينها لدور؛ يتم تعيين NOBYPASSRLS بشكل افتراضي. مع الخوادم التي تم توفيرها حديثا في قاعدة بيانات Azure ل PostgreSQL - يتم تنفيذ خادم مرن يتجاوز امتياز أمان مستوى الصف (BYPASSRLS) كما يلي:

  • بالنسبة لخوادم Postgres 16 والإصدارات الأحدث، نتبع سلوك PostgreSQL 16 القياسي. يسمح لك المستخدمون غير الإداريين الذين تم إنشاؤهم بواسطة دور مسؤول azure_pg_admin بإنشاء أدوار باستخدام سمة\امتياز BYPASSRLS حسب الضرورة.
  • بالنسبة إلى Postgres 15 والخوادم التي تم إصدارها أدناه. ، يمكنك استخدام azure_pg_admin المستخدم للقيام بالمهام الإدارية التي تتطلب امتياز BYPASSRLS، ولكن لا يمكنك إنشاء مستخدمين غير مسؤولين بامتياز BypassRLS، نظرا لعدم وجود امتيازات المستخدم الفائق لدور المسؤول، كما هو شائع في خدمات PaaS PostgreSQL المستندة إلى السحابة.

تحديث كلمات المرور

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

استخدام SCRAM

تعمل آلية مصادقة استجابة التحدي الملح (SCRAM) بشكل كبير على تحسين أمان مصادقة المستخدم المستندة إلى كلمة المرور من خلال إضافة العديد من ميزات الأمان الرئيسية التي تمنع هجمات طاولة قوس قزح، والهجمات الدخيلة، وهجمات كلمات المرور المخزنة، مع إضافة دعم لخوارزميات التجزئة المتعددة وكلمات المرور التي تحتوي على أحرف غير ASCII.

في مصادقة SCRAM، يشارك العميل في القيام بعمل التشفير من أجل تقديم إثبات الهوية. وبالتالي فإن مصادقة SCRAM تزيل بعض تكلفة الحساب لعملائها، والتي تكون في معظم الحالات خوادم التطبيقات. اعتماد SCRAM، بالإضافة إلى خوارزمية تجزئة أقوى، لذلك يوفر أيضا الحماية من هجمات رفض الخدمة الموزعة (DDoS) ضد PostgreSQL، من خلال منع التحميل الزائد لوحدة المعالجة المركزية للخادم لحساب تجزئة كلمة المرور.

إذا كان برنامج تشغيل العميل يدعم SCRAM ، يمكنك إعداد الوصول إلى قاعدة بيانات Azure ل PostgreSQL - خادم مرن باستخدام SCRAM مقابل scram-sha-256 الافتراضي md5.

إعادة تعيين كلمة مرور المسؤول

اتبع الدليل الإرشادي لإعادة تعيين كلمة مرور المسؤول.

تحديث كلمة مرور مستخدم قاعدة البيانات

يمكنك استخدام أدوات العميل لتحديث كلمات مرور مستخدم قاعدة البيانات.
على سبيل المثال،

ALTER ROLE demouser PASSWORD 'Password123!';
ALTER ROLE