שיטות מומלצות לאבטחת משאבים ב-AlloyDB ל-PostgreSQL

כדי לעזור לכם להשיג מצב אבטחה חזק למשאבי AlloyDB ל-PostgreSQL, כדאי לפעול לפי השיטות המומלצות שמופיעות בדף הזה.

מניעת חטיפת נתיב חיפוש

כדי למנוע חטיפת נתיב חיפוש, מוודאים שהפרמטר search_path מוגדר לערך pg_catalog עבור משתמשים עם הרשאות גבוהות. כך אפשר לוודא שנתיב החיפוש מאובטח ושהמערכת מדלגת על סכימות לא מהימנות כמו public.

כדי להגדיר את הפרמטר הזה באופן קבוע למשתמש, מריצים את הפקודה הבאה:

ALTER ROLE USER_NAME SET search_path = pg_catalog,pg_temp;

כדי להגדיר את הפרמטר הזה רק לסשן הנוכחי, מריצים את הפקודה הבאה:

SET search_path TO pg_catalog,pg_temp;

כדי להגדיר את הפרמטר הזה לכל המשתמשים כשמתחברים למסד נתונים, מריצים את הפקודה הבאה:

ALTER DATABASE DB_NAME SET search_path TO schema1, schema2, public;

מידע נוסף מופיע במסמכי התיעוד של PostgreSQL בנושא שימוש בסכימה מאובטחת ובמדריך CVE-2018-1058.

גישה מאובטחת לנתונים ב-BigQuery באמצעות עטיפת נתונים חיצוניים

כשמשתמשים ב-FDW (Foreign Data Wrapper) של BigQuery, כל השאילתות מ-AlloyDB ל-BigQuery מאומתות באמצעות חשבון השירות של אשכול AlloyDB. יכול להיות שלחשבון השירות הזה יש גישה למספר מערכי נתונים רגישים ב-BigQuery, ולכן חשוב למנוע ממשתמשים רגילים במסד הנתונים למפות טבלאות לא מורשות.

כדי לאכוף גישה עם הרשאות מינימליות, האדמינים צריכים להגביל את USAGE ההרשאות בשרת החיצוני. ההגדרה הזו מונעת פיזית ממשתמשים שאינם אדמינים להריץ הצהרות של CREATE FOREIGN TABLE.

  1. מגבילים את USAGE בשרת החיצוני על ידי וידוא שלתפקידים שאינם אדמין אין הרשאות USAGE בשרת החיצוני. אם צריך, מבטלים את הגישה מ-PUBLIC.
  2. ריכוז של יצירת טבלאות: רק אדמינים של מסדי נתונים, למשל משתמשים עם התפקיד alloydbsuperuser, יכולים ליצור טבלאות חיצוניות.
  3. מתן גישה סלקטיבית: אדמינים מנהלים את הרשאת הקריאה באמצעות GRANT SELECT בטבלאות חיצוניות ספציפיות.

דוגמה: הגדרת גישה עם הרשאות מינימליות

בתרשים תהליך העבודה הבא מוצג תהליך שבו אדמין מעניק למשתמש רגיל (bob) גישה מאובטחת לטבלה ב-BigQuery ספציפית, בלי לאפשר לו למפות קבוצות נתונים שרירותיות.

‫-- שלב 1: יצירת השרת והגבלת הגישה (הפעולה מבוצעת כמשתמש עם הרשאות אדמין) ```sql CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER bq_server FOREIGN DATA WRAPPER bigquery_fdw;

‪-- Explicitly revoke USAGE from all users to prevent unauthorized table creation REVOKE ALL ON FOREIGN SERVER bq_server FROM PUBLIC; ```

‫-- שלב 2: יצירת מיפוי משתמשים עבור המשתמש הרגיל (הפעולה מבוצעת כאדמין) sql CREATE USER MAPPING FOR bob SERVER bq_server;

‫-- שלב 3: יצירת טבלה חיצונית (הפעולה מבוצעת כאדמין) ‫-- מכיוון שלמשתמש bob אין הרשאת USAGE ב-bq_server, רק האדמין יכול להריץ את הפקודה הזו. sql CREATE FOREIGN TABLE example_table ( id INT, state VARCHAR ) SERVER bq_server OPTIONS ( project 'BIGQUERY_PROJECT_ID', dataset 'BIGQUERY_DATASET_NAME', table 'example_table' );

‫-- שלב 4: הענקת גישת קריאה סלקטיבית (הפעולה מבוצעת כאדמין) ‫-- הענקת גישת קריאה למשתמש הרגיל באופן מפורש לטבלה הספציפית הזו. sql GRANT SELECT ON public.example_table TO bob;