מידע על משתמשים ותפקידים ב-PostgreSQL

בדף הזה מוסבר איך 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

      משמש לשכפול.

משתמשי Cloud SQL IAM לאימות 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 זמין במאמר ניהול משתמשים באמצעות אימות מובנה.

משתמשי IAM ותפקידים במסד הנתונים

כשיוצרים חשבון משתמש IAM ב-Cloud SQL ל-PostgreSQL ולא מקצים לו תפקידים במסד הנתונים, המשתמש לא מקבל תפקידים במסד הנתונים באופן אוטומטי.

אתם יכולים להקצות את התפקיד cloudsqlsuperuser ותפקידים מותאמים אישית במסד הנתונים למשתמשים, לחשבונות שירות או לקבוצות ב-IAM. לשם כך, צריך להקצות תפקידים במסד הנתונים כשיוצרים או מעדכנים את חשבונות ה-IAM במופע.

מידע נוסף על הקצאת תפקידים למשתמשי IAM זמין במאמר הקצאת תפקידי מסד נתונים בזמן הוספת חשבון IAM למופע.

גישה לתצוגה pg_shadow ולטבלה pg_authid

אפשר להשתמש בתצוגה pg_shadow כדי לעבוד עם מאפייני התפקידים שמסומנים כ-rolcanlogin בטבלת הקטלוג pg_authid.

התצוגה pg_shadow מכילה סיסמאות מגובבות ומאפיינים אחרים של התפקידים (משתמשים) שיש להם הרשאה להתחבר לאשכול. טבלת הקטלוג pg_authid מכילה סיסמאות מגובבות ומאפיינים אחרים של כל התפקידים במסד הנתונים.

ב-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 אפשר גם לעיין במאמרים הבאים:

המאמרים הבאים