בדף הזה מוסבר איך Cloud SQL עובד עם משתמשים ותפקידים ב-PostgreSQL. תפקידים ב-PostgreSQL מאפשרים לכם לשלוט בגישה וביכולות של משתמשים שניגשים למופע PostgreSQL.
לעיון במסמכים מלאים על תפקידים ב-PostgreSQL, אפשר לעיין במאמר תפקידים במסד נתונים במסמכי התיעוד של PostgreSQL. מידע על יצירה וניהול של משתמשי Cloud SQL זמין במאמר יצירה וניהול של משתמשים.
ההבדל בין משתמשים לתפקידים
תפקידים ב-PostgreSQL יכולים להיות תפקיד יחיד, או שהם יכולים לתפקד כקבוצה של תפקידים.
משתמש הוא תפקיד עם אפשרות להתחבר (לתפקיד יש את המאפיין LOGIN). מכיוון שלכל התפקידים שנוצרים ב-Cloud SQL יש את המאפיין LOGIN, המונחים תפקיד ומשתמש משמשים ב-Cloud SQL לסירוגין.
עם זאת, אם יוצרים תפקיד באמצעות לקוח psql, לא בטוח שהתפקיד יכלול את המאפיין LOGIN.
לכל משתמשי PostgreSQL צריכה להיות סיסמה. אי אפשר להתחבר עם משתמש שאין לו סיסמה.
הגבלות והרשאות של משתמשי סופר-אדמין
Cloud SQL ל-PostgreSQL הוא שירות מנוהל, ולכן הוא מגביל את הגישה לטבלאות ולהליכי מערכת מסוימים שנדרשות בשבילם הרשאות מתקדמות. ב-Cloud SQL לקוחות לא יכולים ליצור משתמשים עם מאפיינים של משתמש-על או לקבל גישה אליהם.
אי אפשר ליצור משתמשי מסד נתונים עם הרשאות של משתמש-על. עם זאת, אפשר ליצור משתמשי מסד נתונים עם התפקיד cloudsqlsuperuser, שכולל כמה הרשאות סופר-משתמש, כולל:
- יצירת תוספים שדורשים הרשאות סופר-משתמש.
- יצירת טריגרים של אירועים.
- יצירת משתמשים לשכפול.
- יצירה של פרסומים ומינויים לשכפול.
ביצוע ההצהרות
CREATE CASTו-DROP CASTכמשתמש במסד נתונים עם התפקידcloudsqlsuperuser. עם זאת, למשתמש הזה צריכה להיות הרשאתUSAGEגם בסוגי נתוני המקור וגם בסוגי נתוני היעד. לדוגמה, משתמש יכול ליצור המרה שממירה את סוג הנתונים של המקורintלסוג הנתונים של היעדboolean.- גישה מלאה ל
טבלת הקטלוג של
pg_largeobject.
משתמשי PostgreSQL שמוגדרים כברירת מחדל
כשיוצרים מופע חדש של Cloud SQL ל-PostgreSQL, נוצר משתמש האדמין postgres כברירת מחדל, אבל לא הסיסמה שלו. כדי להתחבר, צריך להגדיר סיסמה למשתמש הזה. אפשר לעשות את זה ב Google Cloud מסוף או באמצעות הפקודה gcloud הבאה:
gcloud sql users set-password postgres \ --instance=INSTANCE_NAME \ --password=PASSWORD
המשתמש postgres הוא חלק מהתפקיד cloudsqlsuperuser, ויש לו את המאפיינים (ההרשאות) הבאים: CREATEROLE, CREATEDB ו-LOGIN. לא צוינו בו מאפייני SUPERUSER או REPLICATION
משתמש ברירת מחדל cloudsqlimportexport נוצר עם קבוצת ההרשאות המינימלית שנדרשת לפעולות ייבוא וייצוא של קובצי CSV. אתם יכולים ליצור משתמשים משלכם כדי לבצע את הפעולות האלה, אבל אם לא תעשו את זה, ייעשה שימוש במשתמש ברירת המחדל cloudsqlimportexport. המשתמש cloudsqlimportexport הוא משתמש מערכת, ואי אפשר להשתמש בו ישירות.
משתמשי מערכת ותפקידים ב-Cloud SQL
ב-Cloud SQL נעשה שימוש במשתמשי מערכת ובתפקידים כדי לתמוך בתכונות של Cloud SQL. אי אפשר למחוק או לשנות תפקידים או משתמשים במערכת Cloud SQL.
אי אפשר להקצות תפקידי מערכת למשתמשי מסד נתונים, למעט התפקיד cloudsqlsuperuser. אי אפשר להקצות תפקידים במסד נתונים למשתמשי מערכת.
תפקידי מערכת
cloudsqliamgroupמשמש לציון חשבון אימות של קבוצת IAM שלא משמש לכניסה, ומשמש לאימות של קבוצת IAM.
cloudsqlinactiveuserמשמש לסימון חשבון אימות של קבוצת IAM כלא פעיל.
cloudsqliamgroupserviceaccountמשמש לציון חשבון שירות ב-IAM שמאומת באמצעות אימות קבוצות ב-IAM.
cloudsqliamgroupuserמשמש לציון משתמש IAM שעובר אימות באמצעות אימות קבוצת IAM.
cloudsqliamserviceaccountמשמש לציון חשבון שירות ב-IAM שמבצע אימות באמצעות אימות מסד נתונים ב-IAM.
cloudsqliamuserמשמש לציון משתמש IAM שעובר אימות באמצעות אימות מסד נתונים של IAM.
cloudsqlsuperuserתפקיד שמוקצה למשתמשים עם הרשאות מוגבלות של משתמש-על. תפקיד
cloudsqlsuperuserמוענק באופן אוטומטי למשתמשי PostgreSQL חדשים שמשתמשים באימות מובנה.
משתמשי מערכת
cloudsqladminמשתמש מערכת עם הרשאות סופר-משתמש במסד הנתונים.
cloudsqlagentמשמש לניטור מסדי נתונים.
cloudsqlconnpooladminמשמש לניהול מאגר חיבורים.
cloudsqlimportexportמשמש לייבוא וייצוא של נתונים.
cloudsqllogicalמשמש ליצירת שכפול לוגי.
cloudsqlobservabilityההרשאה משמשת לצפייה במסדי נתונים, למשל המלצות לגבי אינדקסים ושאילתות פעילות.
cloudsqlreplicaמשמש לשכפול.
משתמשי IAM ב-Cloud SQL לאימות IAM
ניהול הזהויות והרשאות הגישה (IAM) משולב עם Cloud SQL בתכונה שנקראת אימות מסד נתונים באמצעות IAM. כשיוצרים מכונות וירטואליות באמצעות התכונה הזו, משתמשי IAM יכולים להיכנס למכונה הווירטואלית באמצעות שמות המשתמש והסיסמאות שלהם ב-IAM. היתרון בשימוש באימות IAM הוא שאפשר להשתמש בפרטי הכניסה הקיימים של המשתמש ב-IAM כשמעניקים לו גישה למסד נתונים. כשהמשתמש עוזב את הארגון, חשבון ה-IAM שלו מושעה והגישה שלו מוסרת אוטומטית.
משתמשי PostgreSQL אחרים
אפשר ליצור משתמשים או תפקידים אחרים ב-PostgreSQL. משתמשים שנוצרו באמצעות Cloud SQL ולא נוצרו באמצעות IAM, נוצרים כחלק מהתפקיד cloudsqlsuperuser, ויש להם את אותה קבוצת מאפיינים כמו למשתמש postgres: CREATEROLE, CREATEDB ו-LOGIN. אפשר לשנות את המאפיינים של כל משתמש באמצעות הפקודה ALTER ROLE.
אם יוצרים משתמש חדש באמצעות לקוח psql, אפשר לשייך אותו לתפקיד אחר או להקצות לו מאפיינים שונים.
תפקידים ב-PostgreSQL
אתם יכולים ליצור תפקידים בהתאמה אישית ב-PostgreSQL כדי לארגן ולהקצות הרשאות למסד הנתונים למשתמשי PostgreSQL. אתם יכולים להשתמש בתפקידים כדי לספק הרשאות ראשוניות למסד הנתונים למשתמשים כשאתם יוצרים מכונה של Cloud SQL.
מידע נוסף על יצירה ושימוש בתפקידים ב-PostgreSQL זמין במאמר תפקידים במסד נתונים.
כשיוצרים משתמש מובנה של PostgreSQL ב-Cloud SQL ל-PostgreSQL ולא מקצים לו תפקידים במסד הנתונים, התפקיד cloudsqlsuperuser מוקצה למשתמש באופן אוטומטי.
לחלופין, אפשר ליצור משתמש חדש ב-PostgreSQL ולהקצות לו תפקיד או תפקידים אחרים בהתאמה אישית עם הרשאות מפורטות יותר.
מידע נוסף על הקצאת תפקידים למשתמשים ב-Cloud SQL ל-PostgreSQL זמין במאמר ניהול משתמשים באמצעות אימות מובנה.
נתיב חיפוש מאובטח
כדי למנוע חטיפת נתיב חיפוש, מוודאים שהפרמטר search_path מוגדר לערך pg_catalog אצל משתמשים עם הרשאות גבוהות. כך אפשר לוודא שנתיב החיפוש מאובטח ושסכימות לא מהימנות כמו public לא נכללות בו.
כדי להגדיר את זה באופן קבוע למשתמש, מריצים את הפקודה הבאה:
ALTER ROLE <var>USER_NAME</var> SET search_path = pg_catalog;
כדי להגדיר אותו לסשן הנוכחי, מריצים את הפקודה הבאה:
SET search_path TO pg_catalog;
מידע נוסף מופיע במסמכי התיעוד של PostgreSQL בנושא שימוש בסכימה מאובטחת ובמדריך CVE-2018-1058.
משתמשי IAM ותפקידים במסד הנתונים
כשיוצרים חשבון משתמש IAM ב-Cloud SQL ל-PostgreSQL ולא מקצים לו תפקידים במסד הנתונים, המשתמש לא מקבל תפקידים במסד הנתונים באופן אוטומטי.
אתם יכולים להקצות את התפקיד cloudsqlsuperuser ותפקידים מותאמים אישית במסד הנתונים למשתמשי IAM, לחשבונות שירות או לקבוצות, על ידי הקצאת תפקידים במסד הנתונים כשאתם יוצרים או מעדכנים את חשבונות ה-IAM במופע.
מידע נוסף על הקצאת תפקידים למשתמשי IAM זמין במאמר הקצאת תפקידי מסד נתונים במהלך הוספת חשבון IAM למופע.
גישה לתצוגה pg_shadow ולטבלה pg_authid
אפשר להשתמש בתצוגה pg_shadow כדי לעבוד עם מאפייני התפקידים שמסומנים כ-rolcanlogin בטבלת הקטלוג pg_authid.
התצוגה pg_shadow מכילה סיסמאות מגובבות ומאפיינים אחרים של התפקידים (משתמשים) שמורשים להתחבר לאשכול. הטבלה pg_authid catalog
מכילה סיסמאות מגובבות ומאפיינים אחרים של כל התפקידים במסד הנתונים.
ב-Cloud SQL, לקוחות לא יכולים לגשת לתצוגה pg_shadow או לטבלה pg_authid באמצעות הרשאות ברירת המחדל. עם זאת, גישה לשמות תפקידים ולסיסמאות מגובבות (hashed) שימושית במצבים מסוימים, כולל:
- הגדרת שרתי proxy או איזון עומסים עם משתמשים וסיסמאות קיימים
- העברת משתמשים ללא שינויים בסיסמאות
- הטמעה של פתרונות בהתאמה אישית לניהול מדיניות הסיסמאות
הגדרת הדיווחים על התצוגה pg_shadow והטבלה pg_authid
כדי לגשת לתצוגה pg_shadow, מגדירים את הדגל cloudsql.pg_shadow_select_role
לשם תפקיד ב-PostgreSQL. כדי לגשת לטבלה pg_authid, צריך להגדיר את הדגל cloudsql.pg_authid_select_role לשם תפקיד ב-PostgreSQL.
אם cloudsql.pg_shadow_select_role קיים, יש לו גישת קריאה בלבד (SELECT) לתצוגה pg_shadow. אם cloudsql.pg_authid_select_role קיים,
אז יש לו גישת SELECT לטבלה pg_authid.
אם אחד מהתפקידים לא קיים, ההגדרות לא משפיעות, אבל לא מתרחשת שגיאה.
עם זאת, שגיאה נרשמת ביומן כשמשתמש מנסה לגשת לתצוגה או לטבלה.
השגיאה מתועדת ביומן של מסד הנתונים PostgreSQL: cloudsql.googleapis.com/postgres.log.
מידע על צפייה ביומן הזה זמין במאמר צפייה ביומנים של מופעים.
מוודאים שהתפקידים שהוגדרו קיימים ואין שגיאת הקלדה בערך של הדגל cloudsql.pg_shadow_select_role או הדגל cloudsql.pg_authid_select_role. אפשר גם להשתמש בפונקציה pg_has_role כדי לוודא שהמשתמש הוא חבר בתפקידים האלה. מידע על הפונקציה הזו זמין בדף פונקציות ואופרטורים של מידע על המערכת.
אתם יכולים להשתמש בדגל cloudsql.pg_shadow_select_role או בדגל cloudsql.pg_authid_select_role עם חברות בתפקיד ב-PostgreSQL כדי לנהל גישה של כמה משתמשים ל-pg_shadow או ל-pg_authid.
שינויים בכל אחד מהדגלים לא מצריכים הפעלה מחדש של מסד הנתונים.
מידע נוסף על דגלים נתמכים זמין במאמר הגדרת דגלים של מסד נתונים.
בחירת פורמט לאחסון סיסמאות
ב-Cloud SQL ל-PostgreSQL, הסיסמאות של המשתמשים מאוחסנות בפורמט מגובב.
אפשר להשתמש בדגל password_encryption כדי להגדיר את אלגוריתם ההצפנה ל-md5 או ל-scram-sha-256. האלגוריתם md5 מספק את התאימות הרחבה ביותר, ואילו scram-sha-256 מאובטח יותר אבל יכול להיות שהוא לא תואם ללקוחות ישנים יותר.
כשמפעילים pg_shadow גישה לייצוא מאפייני תפקידים ממופע Cloud SQL, מומלץ להשתמש באלגוריתם המאובטח ביותר שנתמך על ידי הלקוחות.
במאמרי העזרה של PostgreSQL, אפשר גם לעיין במאמרים הבאים:
המאמרים הבאים
- יצירה וניהול של משתמשים.
- יצירה וניהול של מסדי נתונים
- מידע נוסף זמין במסמכי PostgreSQL בנושא תפקידים.
- אפשרויות לחיבור למכונה