במדריך הזה מוסבר איך להשתמש בתצוגות מאובטחות עם פרמטרים ב-AlloyDB Omni כדי להגביל את הגישה של המשתמשים לתצוגות עם פרמטרים באמצעות AlloyDB Omni Studio או psql.
הדוגמאות ממחישות את היכולות של תצוגות מאובטחות עם פרמטרים. הדוגמאות האלה הן להמחשה בלבד.
מטרות
- ליצור תצוגות מאובטחות עם פרמטרים באמצעות פרמטרים של תצוגות עם שם.
- יוצרים את תפקיד מסד הנתונים שמשמש את האפליקציה כדי להתחבר למסד הנתונים ולגשת לתצוגות מאובטחות עם פרמטרים.
- מעניקים לתפקיד החדש הרשאות לתצוגות המאובטחות ומבטלים את הגישה למסדי נתונים טבלאיים.
- מתחברים באמצעות התפקיד החדש ומוודאים שאי אפשר לגשת לטבלאות המוגבלות.
- מריצים שאילתות בתצוגה המאובטחת שמכילה פרמטרים באמצעות הפונקציה
execute_parameterized_query.
התקנה והתחברות למסד נתונים
- התקנה של AlloyDB Omni(ל-Kubernetes, לקונטיינרים).
- יצירת אשכול והמופע הראשי שלו.
- מתחברים למכונה (ב-Kubernetes, בקונטיינרים).
הכנת הסביבה
כדי להתכונן להרצת שאילתות בתצוגה מאובטחת עם פרמטרים, קודם צריך להגדיר תצוגות עם פרמטרים, את מסד הנתונים ואת התפקידים במסד הנתונים, את התוסף parameterized_view ואת סכימת האפליקציה.
לפני שמשתמשים בתצוגות מאובטחות עם פרמטרים, צריך לבצע את הפעולות הבאות פעם אחת בכל מאגר Postgres חדש. אפשר להחיל כל הגדרה באמצעות ALTER SYSTEM או על ידי עריכה ישירה של postgresql.conf:
- מוסיפים את הערך parameterized_views אל
shared_preload_libraries. - מפעילים את התכונה באמצעות ההגדרה
parameterized_views.enabled=on. - מפעילים מחדש את postgres כדי שהשינויים ייכנסו לתוקף.
הגדרת מסד הנתונים
- יוצרים מסד נתונים בשם
databaseלנתוני האפליקציה ולתצוגות עם פרמטרים. מידע נוסף זמין במאמר יצירת מסד נתונים.
יצירת תפקידים במסד הנתונים, התוסף והסכימה של האפליקציה
משתמשים ב-psql כדי להתחבר למסד הנתונים בתור המשתמש
postgresאו בתור משתמש עם הרשאות משתמש-על ב-AlloyDB Omni.psql database -U postgresמידע נוסף זמין במאמר בנושא ניהול משתמשים במסד נתונים ב-AlloyDB Omni.
יוצרים את התוסף
parameterized_viewsבמסד הנתונים.-- Requires parameterized_views.enabled set to true CREATE EXTENSION parameterized_views;כשיוצרים את התוסף, המערכת יוצרת גם סכימה בשם
parameterized_viewsכדי שממשקי ה-API ייכללו במרחב השמות של הסכימה הזו, וכדי שממשקי ה-API האלה לא יתנגשו עם ממשקי API קיימים.יוצרים את תפקיד האדמין ב-AlloyDB Omni, שמוגדר כבעלים של מסד הנתונים ומנהל אותו.
CREATE ROLE admin_user WITH LOGIN PASSWORD '...'; GRANT ALL PRIVILEGES ON DATABASE database TO admin_user;מידע נוסף זמין במאמר
CREATE USER.יוצרים תפקיד חדש במסד הנתונים כדי להריץ שאילתות בתצוגות מאובטחות עם פרמטרים. זהו תפקיד ב-AlloyDB Omni שהאפליקציה משתמשת בו כדי להתחבר למסד הנתונים ולהיכנס אליו כדי להריץ שאילתות עם גישה מוגבלת לפונקציות או לאובייקטים ציבוריים, לסט המינימלי הנדרש.
מידע נוסף זמין במאמר
CREATE USER.מתחברים בתור משתמש עם הרשאת אדמין.
SET role TO admin_user;יוצרים את הסכימה שמכילה את הטבלאות.
CREATE SCHEMA schema;יוצרים את הטבלאות ומזינים נתונים.
CREATE TABLE schema.checked_items(bag_id INT,timestamp TIMESTAMP, loc_code CHAR(3), scan_type CHAR(1), location TEXT, customer_id INT); INSERT INTO schema.checked_items (bag_id, timestamp, loc_code, scan_type, location, customer_id) VALUES (101, '2023-10-26 10:00:00', 'ABC', 'I', 'Warehouse A', 123), (102, '2023-10-26 10:15:30', 'DEF', 'O', 'Loading Dock B', 456), (103, '2023-10-26 10:30:45', 'GHI', 'I', 'Conveyor Belt 1', 789), (104, '2023-10-26 11:00:00', 'JKL', 'O', 'Shipping Area C', 101), (105, '2023-10-26 11:45:15', 'MNO', 'I', 'Sorting Station D', 202), (106, '2023-10-26 12:00:00', 'PQR', 'O', 'Truck Bay E', 303);
יצירת תצוגות מאובטחות עם פרמטרים והגדרת הרשאות גישה
כדי ליצור תצוגות פרמטריות מאובטחות ולהגדיר הרשאות גישה מתאימות לטבלת הבסיס ולתצוגות, פועלים לפי השלבים הבאים:
באמצעות psql, מתחברים למסד הנתונים בתור
admin_user.psql database -U admin_userכדי לספק גישה מוגבלת לתצוגה, יוצרים תצוגה מאובטחת עם פרמטרים.
CREATE VIEW schema.secure_checked_items WITH (security_barrier) AS SELECT bag_id, timestamp, location FROM schema.checked_items t WHERE customer_id = $@app_end_userid;נותנים גישה לתצוגה.
GRANT SELECT ON schema.secure_checked_items TO psv_user;כדי לגשת לתצוגה, צריך להעניק גישה לסכימה.
GRANT USAGE ON SCHEMA schema TO psv_user;לבטל את הגישה הישירה למסד הנתונים הטבלאי.
REVOKE ALL PRIVILEGES ON schema.checked_items FROM psv_user;
אימות אבטחת המידע
כדי לוודא שהתצוגות המאובטחות עם הפרמטרים מגבילות את הגישה לתצוגות המיועדות, מריצים את הפקודות הבאות בתור psv_user. זהו תפקיד במסד הנתונים של AlloyDB Omni שבו האפליקציה משתמשת כדי להתחבר למסד הנתונים ולהיכנס אליו כדי להריץ שאילתות.
מתחברים בתור משתמש עם תצוגות מאובטחות עם פרמטרים.
psql database -U psv_userמוודאים שאין גישה למסד הנתונים הטבלאי.
SELECT * FROM schema.checked_items; ERROR: permission denied for table checked_itemsניגשים לתצוגה המאובטחת שמכילה פרמטרים באמצעות הפונקציה
execute_parameterized_query.SELECT * FROM parameterized_views.execute_parameterized_query( query => 'SELECT * from schema.secure_checked_items', param_names => ARRAY ['app_end_userid'], param_values => ARRAY ['303'] );כדי לשפר את האבטחה של שאילתות שנוצרות בשפה טבעית, שלבו את התצוגות המאובטחות עם הפרמטרים באמצעות שפה טבעית.
הסרת המשאבים
כדי לנקות, אתם יכולים להסיר את המכונה של AlloyDB Omni או להשאיר את המכונה ולמחוק את האובייקטים הספציפיים.
המאמרים הבאים
- מידע נוסף על תצוגות מאובטחות עם פרמטרים
- איך מנהלים את אבטחת מידע של האפליקציה באמצעות תצוגות מאובטחות עם פרמטרים