مشاركة عبر


مصادقة SCRAM في قاعدة بيانات Azure ل PostgreSQL

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

Note

للوصول إلى مثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL باستخدام طريقة المصادقة SCRAM، تحتاج مكتبات العميل إلى دعم SCRAM. ارجع إلى قائمة برامج التشغيل التي تدعم SCRAM.

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

تكوين مصادقة SCRAM

  1. قم بتغيير password_encryption إلى SCRAM-SHA-256. حاليا ، تدعم قاعدة بيانات Azure ل PostgreSQL SCRAM فقط باستخدام SHA-256.

    لقطة شاشة لصفحة التشفير ل SCRAM.

  2. اسمح ب SCRAM-SHA-256 كطريقة المصادقة.

    لقطة شاشة للمصادقة التي تم الوصول إليها بواسطة SCRAM.

    Important

    يمكنك اختيار فرض مصادقة SCRAM فقط عن طريق تحديد أسلوب SCRAM-SHA-256 فقط. من خلال القيام بذلك، يمكن للمستخدمين الذين لديهم مصادقة MD5 الاتصال بالخادم لفترة أطول. وبالتالي، قبل فرض SCRAM، أن يكون لديك كل من MD5 و SCRAM-SHA-256 كطرق مصادقة حتى تقوم بتحديث جميع كلمات مرور المستخدم إلى SCRAM-SHA-256. يمكنك التحقق من نوع المصادقة للمستخدمين باستخدام الاستعلام المذكور في الخطوة #7.

  3. احفظ التغييرات. هذه خصائص ديناميكية ولا تتطلب إعادة تشغيل الخادم.

  4. من عميل الخادم المرن لقاعدة بيانات Azure ل PostgreSQL، اتصل بقاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL. على سبيل المثال

    psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=<password> sslmode=require"
    
    psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.6)
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
  5. تحقق من تشفير كلمة المرور.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. يمكنك بعد ذلك تحديث كلمة المرور للمستخدمين.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. يمكنك التحقق من أنواع مصادقة المستخدم باستخدام azure_roles_authtype() الوظيفة.

    postgres=> SELECT * from azure_roles_authtype();
             rolename          | authtype
    ---------------------------+-----------
    azuresu                   | NOLOGIN
    pg_monitor                | NOLOGIN
    pg_read_all_settings      | NOLOGIN
    pg_read_all_stats         | NOLOGIN
    pg_stat_scan_tables       | NOLOGIN
    pg_read_server_files      | NOLOGIN
    pg_write_server_files     | NOLOGIN
    pg_execute_server_program | NOLOGIN
    pg_signal_backend         | NOLOGIN
    replication               | NOLOGIN
    myDemoUser                | SCRAM-256
    azure_pg_admin            | NOLOGIN
    srtest                    | SCRAM-256
    sr_md5                    | MD5
    (14 rows)
    
  8. يمكنك بعد ذلك الاتصال من العميل الذي يدعم مصادقة SCRAM بالخادم الخاص بك.

    يتم دعم مصادقة SCRAM أيضا عند الاتصال ب PgBouncer المدار المدمج.