בדף הזה מוסבר איך להכין את מכונת AlloyDB ל-PostgreSQL כדי לאפשר אימות של מסד הנתונים באמצעות ניהול זהויות והרשאות גישה (IAM).
אימות IAM משלים את אימות מסד הנתונים באמצעות משתמשי PostgreSQL רגילים, שכל אשכול AlloyDB תומך בהם.
אתם יכולים לבצע אימות באמצעות חשבונות פרטיים או קבוצות:
- חשבונות פרטיים: מוסיפים כל משתמש IAM או חשבון שירות לאשכול. אתם יכולים להשתמש בתפקידי משתמש ב-IAM או ב-PostgreSQL כדי לבצע אימות מול האשכול הזה.
- קבוצות: מוסיפים קבוצת IAM לאשכול. כל החברים (משתמשים וחשבונות שירות) בקבוצה הזו מקבלים בירושה את ההרשאות לאימות. כך תוכלו לנהל את הגישה על ידי ניהול החברות בקבוצה, בלי להוסיף כל חבר לאשכול בנפרד.
האימות באמצעות IAM מושבת כברירת מחדל במופעי AlloyDB.
כדי להשתמש באימות IAM, צריך לבצע את השלבים הכלליים הבאים:
- מפעילים אימות של אנשים פרטיים או קבוצות ב-IAM במופע.
- מקצים לחשבון או לקבוצה את התפקידים הנדרשים.
- מוסיפים את החשבון או הקבוצה לאשכול.
- מעניקים הרשאות למסד הנתונים לחשבון או לקבוצה.
הפעלה והשבתה של אימות IAM
כדי להפעיל אימות IAM במופע, מגדירים את הדגלים של מסד הנתונים.
- כדי להגדיר אימות של משתמשים פרטיים, צריך להגדיר את הערך של
alloydb.iam_authenticationל-on. - כדי לאמת קבוצה, מגדירים את הערכים של
alloydb.iam_authenticationושלalloydb.iam_group_authenticationל-on.
כדי להשבית את האימות ב-IAM, מגדירים את הדגלים לערך off.
מידע נוסף על הגדרת דגלים זמין במאמר בנושא הגדרת דגלים של מסד נתונים במופע.
הענקת גישה לחשבון פרטי
כדי להפעיל גישת IAM למשתמש חדש במסד נתונים, פועלים לפי השלבים הבאים:
מעדכנים את הגדרות ה-IAM בפרויקט כדי להעניק גישה למסד הנתונים של AlloyDB למשתמש או לחשבון השירות המתאימים ב-IAM.
יוצרים משתמש חדש במסד הנתונים באשכול ומגדירים את שם המשתמש ככתובת האימייל של משתמש IAM או של חשבון השירות.
כדי לתת לחשבון IAM גישה לאשכולות אחרים בפרויקט, חוזרים על השלב האחרון.
עדכון חשבון IAM עם התפקיד המתאים
אתם יכולים לתת למשתמשים ב-IAM או לחשבונות שירות את היכולת לבצע אימות מול מופעי AlloyDB על ידי הקצאת התפקידים הבאים ב-IAM:
-
alloydb.databaseUser: מאפשר למשתמש להתחבר למופע AlloyDB. -
serviceusage.serviceUsageConsumer: מספק למשתמש גישה ל-API שבודק הרשאות.
כדי לעשות את זה, פועלים לפי ההוראות במאמר בנושא הענקת גישה למשתמשים אחרים. בשלב שבו בוחרים תפקיד להקצאה לחשבון הראשי ב-IAM, בוחרים באפשרות alloydb.databaseUser.
הוספת חשבון משתמש או חשבון שירות ב-IAM לאשכול
המסוף
עוברים לדף Clusters.
לוחצים על שם האשכול שרוצים להוסיף אליו משתמש.
לוחצים על Users.
לוחצים על הוספת חשבון משתמש.
בוחרים באפשרות Cloud IAM.
בשדה Principal, מזינים את חשבון המשתמש ב-IAM.
אם מדובר בחשבון משתמש IAM, צריך לספק את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה,
kai@altostrat.com.בחשבון שירות של IAM, מציינים את הכתובת של חשבון השירות בלי הסיומת
.gserviceaccount.com. לדוגמה, כדי לציין את חשבון השירותmy-service@my-project.iam.gserviceaccount.com, משתמשים בערךmy-service@my-project.iam.כדי להקצות למשתמש תפקידים אחרים מלבד תפקיד ברירת המחדל
alloydbsuperuser:- מזינים את שם התפקיד בתפקידים.
- כדי להוסיף את התפקיד, מקישים על Enter או על Tab.
לוחצים על x לצד כל תפקיד שרוצים להסיר מהמשתמש.
מידע נוסף מופיע במאמר בנושא תפקידים מוגדרים מראש.
לוחצים על הוספה.
gcloud
כדי ליצור משתמש במסד נתוני PostgreSQL על סמך משתמש IAM או חשבון שירות, משתמשים בפקודה gcloud alloydb users create.
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASEDמחליפים את המשתנים הבאים:
USERNAME: מזהה של משתמש IAM שרוצים להוסיף כמשתמש חדש במסד הנתונים.אם מדובר בחשבון משתמש IAM, צריך לספק את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה,
kai@altostrat.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 או חשבון שירות מאשכול
המסוף
עוברים לדף Clusters.
לוחצים על שם האשכול שממנו רוצים להסיר את המשתמש.
לוחצים על Users.
בשורה שמייצגת את המשתמש שרוצים להסיר, לוחצים על פתיחת פעולות עבור המשתמש הזה.
בוחרים באפשרות הסרה.
בתיבת הדו-שיח Remove user account? (הסרת חשבון משתמש?), לוחצים על Remove (הסרה).
gcloud
משתמשים בפקודה gcloud alloydb users delete.
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGIONמחליפים את מה שכתוב בשדות הבאים:
USERNAME: מזהה של משתמש IAM שרוצים להסיר מהאשכול.אם מדובר בחשבון משתמש IAM, צריך לספק את כתובת האימייל המלאה של חשבון המשתמש. לדוגמה,
kai@altostrat.com.בחשבון שירות של IAM, מציינים את הכתובת של חשבון השירות בלי הסיומת
.gserviceaccount.com. לדוגמה, כדי לציין את חשבון השירותmy-service@my-project.iam.gserviceaccount.com, משתמשים בערךmy-service@my-project.iam.
CLUSTER: המזהה של האשכול שממנו רוצים להסיר את המשתמש.
REGION: המזהה של האזור שבו נמצא האשכול. לדוגמה,us-central1.
הענקת גישה לקבוצת IAM
כדי להשתמש באימות קבוצתי (תצוגה מקדימה), מוסיפים קבוצת IAM לאשכול AlloyDB.
הוספת קבוצת IAM לאשכול
מקצים לחשבון הקבוצה את התפקידים
alloydb.databaseUserו-serviceusage.serviceUsageConsumer. מידע נוסף מופיע במאמר עדכון חשבון IAM עם תפקיד מתאים.בכל אשכול יכולות להיות עד 200 קבוצות IAM בכל רגע נתון. קבוצות לא פעילות נכללות במגבלה הזו.
שמות של קבוצות IAM יכולים לכלול עד 63 תווים.
אם יש לכם קבוצת IAM עם שם שארוך יותר מהמגבלה, תוכלו להוסיף אותה כקבוצת צאצא לקבוצת אב עם שם תקין. כדי להשתמש בקבוצה המקוננת, צריך להוסיף את קבוצת האב לאשכול.
כדי ליצור משתמש במסד הנתונים עבור הקבוצה, משתמשים בפקודה
gcloud alloydb users createעם הדגל--type=IAM_GROUP.gcloud beta alloydb users create GROUP_EMAIL \ --cluster=CLUSTER \ --region=REGION \ --type=IAM_GROUP
הוספה אוטומטית של חברי קבוצה
כשמוסיפים קבוצת IAM לאשכול, כל החברים (משתמשים וחשבונות שירות) בקבוצה הזו יורשים את ההרשאות לאימות. אין צורך להוסיף את החברים בנפרד. אחרי שחבר נכנס לחשבון בפעם הראשונה, מערכת AlloyDB יוצרת עבורו חשבון באופן אוטומטי.
הענקת הרשאות למסד נתונים לקבוצת IAM
אתם מעניקים הרשאות למסד הנתונים לקבוצות במקום למשתמשים ספציפיים.
מריצים את ההצהרה GRANT משורת הפקודה psql:
GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";
GROUP_NAME: כתובת האימייל של הקבוצה. חובה להשתמש במירכאות כי המחרוזת מכילה תווים מיוחדים.-
TABLE_NAME: שם הטבלה.
מחיקה של קבוצת IAM מאשכול
כדי למחוק קבוצת IAM מאשכול AlloyDB, צריך לבטל את הרשאות הקבוצה במסוף Google Cloud ולמחוק את משתמש הקבוצה התואם מאשכול AlloyDB.
ביטול הרשאות IAM:
נכנסים לדף IAM במסוף Google Cloud .
מחפשים את קבוצת ה-IAM שממנה רוצים להסיר את הגישה.
מסירים את התפקיד
roles/alloydb.databaseUserוכל תפקיד אחר שקשור ל-AlloyDB ומעניק גישה לאשכול. הפעולה הזו מונעת מחברי הקבוצה לעבור אימות.
מוחקים את משתמש הקבוצה מאשכול AlloyDB:
משתמשים ב-Google Cloud CLI כדי למחוק את המשתמש שמייצג את קבוצת IAM מאשכול AlloyDB. שם המשתמש הוא בדרך כלל כתובת האימייל של קבוצת 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.
-
אופציונלי: מוחקים את הקבוצה מ-Cloud Identity:
כדי למחוק קבוצות, אתם צריכים הרשאות אדמין מתאימות (כמו אדמין של קבוצות) בחשבון Cloud Identity. בדרך כלל, רק בעלי הקבוצות יכולים למחוק את הקבוצות שלהם.
יכול להיות שיעבור זמן עד שהשינויים בהרשאות IAM ובחברויות בקבוצות יתעדכנו, לפעמים 15 דקות או יותר.
צריך לוודא שיש לכם הרשאות אדמין מתאימות, כמו אדמין של קבוצות, בחשבון Cloud Identity. בעלי קבוצות יכולים למחוק רק את הקבוצות שלהם. למידע נוסף אפשר לעיין במאמר בנושא תפקידי אדמין מוגדרים מראש.
מריצים את הפקודה הבאה ב-CLI של gcloud של Cloud Identity:
gcloud identity groups delete GROUP_EMAIL_ADDRESSכשמבטלים את הרשאת הכניסה
alloydb.databaseUserלקבוצת IAM ב-Cloud Identity, צריך גם למחוק את הקבוצה מאשכול AlloyDB כדי לוודא שהגישה הוסרה לחלוטין.
העברת משתמשים קיימים לאימות קבוצות IAM
משתמשי IAM קיימים לא משתמשים באימות קבוצתי. כדי להעביר אותם, פועלים לפי השלבים הבאים:
- מוסיפים את המשתמשים לקבוצת IAM.
- מוסיפים את הקבוצה לאשכול.
- מקצים לקבוצה את התפקידים הנדרשים.
- מקצים לקבוצה הרשאות גישה למסד הנתונים.
- מוחקים את המשתמש הקיים מהאשכול. אם רוצים להעביר את הבעלות, חשוב לוודא שההעברה מתבצעת.
כשהמשתמש מתחבר שוב, מערכת AlloyDB יוצרת מחדש את החשבון כמשתמש קבוצה.
פתרון בעיות באימות של קבוצות
המידע הבא יעזור לכם לפתור בעיות באימות קבוצות.
חשבון קיים לא מקבל הרשאות בירושה
אם הרשאות לא מועברות לחשבון מקבוצה, פועלים לפי השלבים הבאים:
מציגים את רשימת המשתמשים.
gcloud alpha alloydb users list --cluster=CLUSTER --region=REGIONאם הסוג הוא
ALLOYDB_IAM_USERאוALLOYDB_IAM_SERVICE_ACCOUNT, צריך להסיר את החשבון. הוא לא מקבל בירושה את ההרשאות של הקבוצה.כדי ליצור מחדש את החשבון עם סוג הקבוצה הנכון, צריך להיכנס שוב למופע באמצעות המשתמש או חשבון השירות. אם נכנסים שוב למופע, החשבון נוצר מחדש עם סוג החשבון הנכון
ALLOYDB_IAM_GROUP_USERאוALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.