ניהול אימות IAM

אתם יכולים להגדיר אימות של מסד נתונים באמצעות ניהול זהויות והרשאות גישה (IAM) באשכולות חדשים או קיימים של AlloyDB ל-PostgreSQL, כדי לנהל את הכניסות למסד הנתונים ואת ההרשאות באמצעות חשבונות IAM נפרדים או קבוצות IAM.

אימות IAM משלים את האימות של מסד הנתונים באמצעות משתמשי PostgreSQL רגילים, שכל אשכול AlloyDB תומך בהם.

אתם יכולים לבצע אימות באמצעות חשבונות או קבוצות:

  • חשבונות נפרדים: אתם מוסיפים כל משתמש או חשבון שירות ב-IAM לאשכול ומנהלים את ההרשאות בכל חשבון.

  • קבוצות: אתם מוסיפים קבוצת IAM לאשכול כדי שכל החברים (משתמשים וחשבונות שירות) יקבלו בירושה הרשאות לאימות במכונות הראשיות, במכונות של מאגר הקריאה וב-AlloyDB Studio, בלי להוסיף כל חבר בנפרד.

כברירת מחדל, אימות IAM מושבת במכונות של AlloyDB.

כדי להשתמש באימות IAM, מבצעים את השלבים הכלליים הבאים:

  1. מפעילים אימות של IAM לאדם פרטי או לקבוצה במכונה.
  2. מקצים לחשבון או לקבוצה את התפקידים הנדרשים.
  3. מוסיפים את החשבון או הקבוצה לאשכול.
  4. נותנים הרשאות למסד הנתונים לחשבון או לקבוצה.

הפעלה והשבתה של אימות IAM

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

כדי להשבית את האימות ב-IAM, מגדירים את הדגלים לערך off.

למידע נוסף על הגדרת דגלים, ראו הגדרת דגלים לניהול מסד נתונים של מכונה.

איך מעניקים גישה לחשבון פרטי

כדי לתת למשתמש חדש במסד הנתונים גישה ל-IAM:

  1. מעדכנים את הגדרות ה-IAM של הפרויקט כדי לתת גישה למסד הנתונים של AlloyDB לחשבון המשתמש או לחשבון השירות המתאים ב-IAM.

  2. יוצרים משתמש חדש במסד הנתונים באשכול, ומגדירים את שם המשתמש ככתובת האימייל של המשתמש או של חשבון השירות ב-IAM.

כדי לתת לחשבון IAM גישה לאשכולות אחרים בפרויקט, חוזרים על השלב האחרון.

עדכון חשבון IAM עם התפקיד המתאים

כדי לתת למשתמשים או לחשבונות שירות ב-IAM את היכולת לאמת את הזהות שלהם במכונות של AlloyDB, אתם יכולים להקצות להם את התפקידים הבאים ב-IAM:

  • ‫alloydb.databaseUser: מאפשרת למשתמש להתחבר למכונה של AlloyDB.
  • ‫serviceusage.serviceUsageConsumer: מספק למשתמש גישה ל-API שבודק הרשאות.

כדי לעשות את זה, פועלים לפי ההוראות במאמר מתן גישה למשתמשים אחרים. בשלב שבו בוחרים תפקיד להקצאה לחשבון הראשי ב-IAM, בוחרים באפשרות alloydb.databaseUser.

הוספת משתמש או חשבון שירות ב-IAM לאשכול

המסוף

  1. נכנסים לדף Clusters.

    כניסה לדף Clusters

  2. לוחצים על שם האשכול שרוצים להוסיף לו משתמש.

  3. לוחצים על Users.

  4. לוחצים על הוספת חשבון משתמש.

  5. בוחרים באפשרות Cloud IAM.

  6. בשדה Principal, מזינים את חשבון המשתמש ב-IAM.

    בחשבון משתמש ב-IAM, צריך לציין את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה, dana@example.com.

    בחשבון שירות של IAM, צריך לציין את הכתובת של חשבון השירות בלי הסיומת .gserviceaccount.com. לדוגמה, כדי לציין את חשבון השירות my-service@my-project.iam.gserviceaccount.com, משתמשים בערך my-service@my-project.iam.

  7. כדי להקצות למשתמש תפקידים אחרים מלבד תפקיד ברירת המחדל alloydbsuperuser, צריך לפעול לפי השלבים הבאים:

    1. מזינים את שם התפקיד בשדה Roles.
    2. כדי להוסיף את התפקיד, לוחצים על Enter או על Tab.
    3. לוחצים על x לצד כל תפקיד שרוצים להסיר מהמשתמש הזה.

      מידע נוסף זמין במאמר תפקידים מוגדרים מראש.

  8. לוחצים על הוספה.

gcloud

כדי ליצור משתמש במסד נתונים של PostgreSQL על סמך משתמש או חשבון שירות ב-IAM, משתמשים בפקודה gcloud alloydb users create.

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED

מחליפים את המשתנים הבאים:

  • ‫USERNAME: המזהה של משתמש ה-IAM שרוצים להוסיף כמשתמש חדש במסד הנתונים.

    בחשבון משתמש ב-IAM, צריך לציין את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה, dana@example.com.

    בחשבון שירות של IAM, צריך לציין את הכתובת של חשבון השירות בלי הסיומת .gserviceaccount.com. לדוגמה, כדי לציין את חשבון השירות my-service@my-project.iam.gserviceaccount.com, משתמשים בערך my-service@my-project.iam.

  • ‫CLUSTER: מזהה האשכול שבו רוצים ליצור את חשבון המשתמש במסד הנתונים.

  • ‫REGION: מזהה האזור שבו נמצא האשכול, לדוגמה us-central1.

הענקת הרשאות מתאימות למסד הנתונים למשתמשי IAM

כשמוסיפים משתמש IAM לאשכול AlloyDB, כברירת מחדל אין לו הרשאות לאף מסד נתונים, חוץ מאובייקטים של מסדי נתונים ש-PUBLIC יכול לגשת אליהם.

אם המשתמשים צריכים גישה נוספת, אפשר לתת להם עוד הרשאות באמצעות הצהרת GRANT ב-PostgreSQL:

GRANT SELECT ON TABLE_NAME TO "USERNAME";

מחליפים את המשתנים הבאים:

  • ‫USERNAME: כתובת האימייל של המשתמש. צריך להוסיף מירכאות כפולות לפני ואחרי הכתובת.

  • ‫TABLE_NAME: שם הטבלה שרוצים לתת למשתמש גישה אליה.

הסרת משתמש IAM או חשבון שירות מאשכול

המסוף

  1. נכנסים לדף Clusters.

    כניסה לדף Clusters

  2. לוחצים על שם האשכול שרוצים להסיר ממנו את המשתמש.

  3. לוחצים על Users.

  4. בשורה של המשתמש שרוצים להסיר, לוחצים על Open actions for this user.

  5. לוחצים על הסרה.

  6. בתיבת הדו-שיח להסיר את חשבון המשתמש?, לוחצים על הסרה.

gcloud

משתמשים בפקודה gcloud alloydb users delete.

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

מחליפים את מה שכתוב בשדות הבאים:

  • ‫USERNAME: המזהה של משתמש ה-IAM שרוצים להסיר מהאשכול.

    בחשבון משתמש ב-IAM, צריך לציין את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה, dana@example.com.

    בחשבון שירות של IAM, צריך לציין את הכתובת של חשבון השירות בלי הסיומת .gserviceaccount.com. לדוגמה, כדי לציין את חשבון השירות my-service@my-project.iam.gserviceaccount.com, משתמשים בערך my-service@my-project.iam.

  • ‫CLUSTER: מזהה האשכול שממנו רוצים להסיר את המשתמש.

  • ‫REGION: המזהה של האזור שבו נמצא האשכול. לדוגמה, us-central1.

איך נותנים גישה לקבוצה ב-IAM

כדי להשתמש באימות קבוצתי, צריך להוסיף קבוצת IAM לאשכול AlloyDB.

הוספת קבוצת IAM לאשכול

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

  • בכל אשכול יכולות להיות עד 200 קבוצות IAM בכל זמן נתון. קבוצות לא פעילות נכללות במגבלה הזו.

  • שמות של קבוצות IAM יכולים להכיל עד 63 תווים. אם יש לכם קבוצת IAM עם שם באורך של יותר מ-63 תווים, אתם יכולים להגדיר אותה כקבוצת בת של קבוצת הורה עם שם תקין. כדי להשתמש בקבוצה בת, צריך להוסיף את קבוצת ההורה לאשכול.

כדי להוסיף קבוצת IAM לאשכול:

  1. מקצים לחשבון הקבוצה את התפקידים roles/alloydb.databaseUser ו-roles/serviceusage.serviceUsageConsumer. במאמר עדכון חשבון IAM עם התפקיד המתאים מוסבר איך מקצים את התפקידים האלה.

  2. כדי ליצור משתמש במסד הנתונים בשביל הקבוצה, מריצים את הפקודה gcloud alloydb users create עם הדגל --type=IAM_GROUP:

    gcloud alloydb users create GROUP_EMAIL \
    --cluster=CLUSTER \
    --region=REGION \
    --type=IAM_GROUP

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫GROUP_EMAIL: כתובת האימייל המלאה של קבוצת IAM. לדוגמה: my-group@example.com.

    • ‫CLUSTER: המזהה של האשכול שאליו רוצים להוסיף את הקבוצה.

    • ‫REGION: מזהה האזור שבו נמצא האשכול, לדוגמה us-central1.

הוספה אוטומטית של חברים לקבוצה

כשמוסיפים קבוצת IAM לאשכול, כל המשתמשים וחשבונות השירות בקבוצה הזו מקבלים בירושה הרשאות לאימות. לא צריך להוסיף את החברים בנפרד. חברי הקבוצה יכולים להיכנס ישירות למכונות הראשיות, למכונות של מאגרי קריאה ול-AlloyDB Studio במסוף Google Cloud , כולל כניסות ראשונות למכונות של מאגרי קריאה בלי להתחבר קודם למכונה הראשית. בפעם הראשונה שחבר בחשבון נכנס, AlloyDB יוצר באופן אוטומטי חשבון מסד נתונים לאותו חשבון משתמש.

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

הענקת הרשאות למסד נתונים לקבוצת IAM

אתם מקצים הרשאות למסד הנתונים לקבוצות במקום למשתמשים ספציפיים.

מריצים את ההצהרה GRANT משורת הפקודה של psql:

GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_NAME: שם הטבלה שרוצים לתת לקבוצה גישה אליה.

  • GROUP_NAME: כתובת האימייל של הקבוצה. צריך להוסיף מירכאות כפולות לפני ואחרי הכתובת כי היא מכילה תווים מיוחדים.

מחיקה של קבוצת IAM מאשכול

כדי למחוק קבוצת IAM מאשכול AlloyDB, צריך לבטל את ההרשאות של הקבוצה במסוף Google Cloud ולמחוק את המשתמש המתאים בקבוצה מאשכול AlloyDB.

  1. ביטול הרשאות IAM:

    1. נכנסים לדף IAM במסוף Google Cloud .

      כניסה לדף IAM

    2. מוצאים את קבוצת ה-IAM שרוצים להסיר ממנה את הגישה.

    3. מסירים את התפקיד roles/alloydb.databaseUser וכל תפקיד אחר שקשור ל-AlloyDB ומעניק גישה לאשכול. הפעולה הזו מונעת מחברי הקבוצה לבצע אימות.

  2. מוחקים את המשתמש הקבוצתי מאשכול AlloyDB:

    משתמשים ב-Google Cloud CLI כדי למחוק מאשכול AlloyDB את המשתמש שמייצג את קבוצת IAM. שם המשתמש הוא בדרך כלל כתובת האימייל של קבוצת IAM:

    gcloud alloydb users delete GROUP_EMAIL_ADDRESS \
    --cluster=CLUSTER_ID \
    --region=REGION_ID

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫GROUP_EMAIL_ADDRESS: כתובת האימייל המלאה של קבוצת IAM, לדוגמה my-group@example.com.

    • ‫CLUSTER_ID: המזהה של אשכול AlloyDB.

    • ‫REGION_ID: האזור שבו נמצא אשכול AlloyDB, לדוגמה us-central1.

  3. אופציונלי: מוחקים את הקבוצה מ-Cloud Identity:

    כדי למחוק קבוצות, אתם צריכים הרשאות אדמין מתאימות (כמו אדמין של קבוצות) בחשבון Cloud Identity. בדרך כלל, בעלי קבוצות יכולים למחוק רק את הקבוצות שבבעלותם.

    יכול להיות שיעבור זמן עד שהשינויים בהרשאות IAM ובחברויות בקבוצות יתעדכנו, אולי 15 דקות או יותר.

    1. מוודאים שיש לכם הרשאות אדמין מתאימות בחשבון Cloud Identity, כמו אדמין של קבוצות. בעלי הקבוצות יכולים למחוק רק את הקבוצות שלהם. מידע נוסף זמין במאמר תפקידי אדמין מוגדרים מראש.

    2. מריצים את הפקודה הבאה של Cloud Identity ב-CLI של gcloud:

      gcloud identity groups delete GROUP_EMAIL_ADDRESS
    3. כשמבטלים את הרשאת הכניסה alloydb.databaseUser לקבוצת IAM ב-Cloud Identity, צריך גם למחוק את הקבוצה מאשכול AlloyDB כדי לוודא שהגישה הוסרה לחלוטין.

העברת משתמשים קיימים לאימות קבוצתי ב-IAM

משתמשי IAM פרטיים קיימים לא משתמשים באימות קבוצתי. כדי להעביר אותם, צריך לפעול לפי השלבים הבאים:

  1. מוסיפים את המשתמשים לקבוצת IAM.
  2. מוסיפים את הקבוצה לאשכול.
  3. מקצים לקבוצה את התפקידים הנדרשים.
  4. מקצים הרשאות למסד הנתונים לקבוצה.
  5. מוחקים את המשתמש הפרטי הקיים מהאשכול. אם אתם רוצים להעביר את הבעלות, חשוב לוודא שהיא אכן הועברה.

כשהמשתמש נכנס שוב, AlloyDB יוצר מחדש את החשבון כמשתמש בקבוצה.

פתרון בעיות באימות קבוצתי

המידע הבא יעזור לכם לפתור בעיות באימות קבוצות.

חשבון קיים לא יורש הרשאות

אם חשבון לא מקבל הרשאות מקבוצה, צריך לפעול לפי השלבים הבאים:

  1. מציגים את רשימת המשתמשים באשכול:

    gcloud alloydb users list \
        --cluster=CLUSTER \
        --region=REGION

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CLUSTER: המזהה של אשכול AlloyDB.

    • ‫REGION: מזהה האזור שבו נמצא אשכול AlloyDB, לדוגמה us-central1.

  2. אם החשבון הוא מסוג ALLOYDB_IAM_USER, מסירים את החשבון מהאשכול. חשבונות מסוג ALLOYDB_IAM_USER לא מקבלים בירושה הרשאות של קבוצות.

  3. כדי ליצור מחדש את החשבון עם סוג המשתמש של הקבוצה, נכנסים שוב למכונה באמצעות המשתמש או חשבון השירות. כניסה מחדש למכונה יוצרת מחדש את החשבון עם סוג החשבון ALLOYDB_IAM_GROUP_USER או ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.

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