يوضح هذا البرنامج التعليمي كيفية إعداد مستخدمين للقراءة فقط في PostgreSQL لـ Redash.
أول شيء تراه في وثائقنا هو نصيحة لتهيئة مصادر البيانات لمستخدمي القراءة فقط. نوصي بهذا لأننا قصدنا Redash لتصور البيانات. ليست مبنية على INSERT ، UPDATE أو DELETE الإجراءات .
نظرًا لأن Redash يدعم أكثر من 40 مصدرًا للبيانات وعددًا غير محدود من واجهات برمجة التطبيقات المستندة إلى JSON ، لا يمكن للتطبيق منع المستخدمين مباشرة من تشغيل استعلامات أخرى غير SELECT. من خلال القيام بذلك ، يمكنك حماية نفسك من مستخدمي Redash من تشغيل عبارات DDL الضارة من خلال تكوين مستخدمين للقراءة فقط على مستوى قاعدة البيانات.
تعد PostgreSQL أحد أكثر مصادر البيانات شيوعًا لدينا. تقدم هذه المقالة مثالاً على تكوين الوصول للقراءة فقط إلى أي مصدر بيانات Postgres ، بما في ذلك Amazon Redshift و RDS.
تمت كتابة هذا المقال إلى حد كبير على أساس ممتازة آخر الأمازون AWS مدونة حول أذونات بوستجرس.
نظرة عامة
قبل البدء ، قمت بإنشاء مخطط قاعدة بيانات جديد يسمى myapp ، يملكه مستخدم يُدعى مسؤول التطبيق . ويشمل هذا المخطط جداول الموظفين ، وظائف، و العملاء مليئة بيانات وهمية. اتبعت هذه الخطوات:
- تم إنشاء دور جديد باسم myapp-readonly .
- منح لها SELECT إذن على الموظفين و الوظائف الجداول . منحة له SELECT الامتيازات على العملاء طاولة للحفاظ على الزبائن سرية.
- إنشاء مستخدم باسم redash وإضافته إلى دور myapp-readonly .
- تمت إضافة مصدر البيانات إلى Redash باستخدام اسم مستخدم جديد وكلمة مرور جديدة .
تذكر ، عندما ننظر إلى هذا المثال ، توصي Amazon مسؤولي قواعد البيانات بإلغاء الأذونات لجميع المخططات من دور PUBLIC مع الملاحظة التالية:
public . , , , - public .
. , myapp-readonly . . ( , Redash ).
1.
CREATE ROLE myapp_readonly; GRANT CONNECT ON DATABASE defaultdb TO myapp_readonly; GRANT USAGE ON SCHEMA myapp TO myapp_readonly;
Amazon. GRANT USAGE , . PostgreSQL:
[USAGE] , ( , ). , «» .
2.
GRANT SELECT ON TABLE "myapp"."employees" TO myapp_readonly; GRANT SELECT ON TABLE "myapp"."jobs" TO myapp_readonly; GRANT SELECT (id, name) ON TABLE myapp.customers TO myapp_readonly;
employee jobs .
myapp_readonly . . . , Redash.
, Redash . *SELECT FROM customers**, . .
3. Redash .
CREATE USER redash WITH PASSWORD 'secret'; GRANT myapp_readonly TO redash;
redash — , Redash. secret .
4. Postgres
Redash . , , .

, , .
SELECT * FROM myapp.employees

, .
INSERT INTO myapp.employees (name) VALUES ('Hal')

. myapp_readonly INSERTS. Redash INSERT!
, customers:
SELECT * FROM myapp.customers;

يُرجع خطأ الإذن لأن دور القراءة فقط يمكنه الوصول إلى أعمدة معينة فقط.
SELECT id, name FROM myapp.customers;

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