בדף הזה מוסבר איך להוסיף ולנהל משתמשים, חשבונות שירות וקבוצות במכונה של Cloud SQL שמשתמשת באימות של מסד נתונים ב-IAM.
מידע נוסף על השילוב עם IAM זמין במאמר אימות באמצעות IAM.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
-
Install the gcloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - מוודאים שבחשבון המשתמש שלכם יש את התפקיד "אדמין ב-Cloud SQL".
- מפעילים אימות של מסד נתונים ב-IAM במכונה של Cloud SQL.
- מקצים את התפקיד הנדרש ב-
cloudsql.instanceUserIAM לחשבונות משתמשים ב-IAM, כמו משתמשי IAM, חשבונות שירות או קבוצות, כדי להתחבר למכונה של Cloud SQL. - אם אתם מוסיפים משתמש פרטי או חשבון שירות פרטי למכונה של Cloud SQL, אתם צריכים להקצות את תפקיד ה-IAM לכל משתמש ולכל חשבון שירות בנפרד.
- אם מוסיפים קבוצה, צריך להקצות את תפקיד ה-IAM לקבוצה, כי חברי הקבוצה מקבלים באופן אוטומטי את הרשאות ה-IAM שמשויכות לתפקיד ה-IAM. מידע נוסף על יצירת קבוצות ב-Cloud Identity זמין במאמר יצירה וניהול של קבוצות Google במסוף Cloud de Confiance .
- אפשר להקצות את התפקיד בפרויקט שמכיל מכונות של Cloud SQL באמצעות דף ה-IAM במסוף Cloud de Confiance , ה-CLI של gcloud, Terraform או Cloud SQL Admin API. מידע נוסף מופיע במאמר הוספת קישור של מדיניות IAM למשתמש, לחשבון שירות או לקבוצה.
- אם אתם משתמשים בחשבון שירות, ודאו שהוספתם חשבון שירות לכל שירות שצריך גישה למסדי נתונים בפרויקט.
מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירת חשבונות שירות.
הוספת קישור למדיניות IAM למשתמש, לחשבון שירות או לקבוצה
ההליך הזה מוסיף קישור מדיניות למדיניות ה-IAM של פרויקט ספציפי, בהינתן מזהה הפרויקט והקישור. פקודת הקישור מורכבת מחבר, מתפקיד ומתנאי אופציונלי.
שם המשתמש של מסד הנתונים חייב להיות כתובת האימייל של המשתמש ב-IAM, לדוגמה example-user@example.com. הוא חייב להיות כולו באותיות קטנות ובמירכאות, כי הוא מכיל תווים מיוחדים (@ ו-.).
המסוף
-
נכנסים לדף Service accounts במסוף Cloud de Confiance .
- לוחצים על הוספה.
- בקטע חברים חדשים, מזינים כתובת אימייל. אתם יכולים להוסיף משתמשים, חשבונות שירות או קבוצות כחברים, אבל בכל פרויקט חייב להיות לפחות חשבון משתמש אחד כחבר.
- ב-Role, מנווטים אל Cloud SQL ובוחרים באפשרות Cloud SQL Instance User.
- אופציונלי: אם רוצים להתחבר באמצעות Cloud SQL Auth Proxy או מחברי השפה של Cloud SQL, צריך לבחור גם באפשרות Cloud SQL Client.
- לוחצים על Save.
gcloud
מריצים את הפקודה gcloud projects add-iam-policy-binding עם הדגל --role=roles/cloudsql.instanceUser.
הוספת קישור מדיניות לחשבון משתמש
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט שאתם רוצים לתת למשתמש הרשאה להשתמש בו.
- USERNAME: כתובת האימייל של המשתמש.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USERNAME \ --role=roles/cloudsql.instanceUser
אם רוצים להתחבר באמצעות Cloud SQL Auth Proxy או Cloud SQL Language Connectors, צריך להריץ שוב את הפקודה gcloud projects add-iam-policy-binding עם הדגל --role=roles/cloudsql.client
הוספת קישור מדיניות לחשבון שירות
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט שאתם רוצים לתת למשתמש הרשאה להשתמש בו.
- SERVICE_ACCT: כתובת האימייל של חשבון השירות.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT \ --role=roles/cloudsql.instanceUser
אם רוצים להתחבר באמצעות Cloud SQL Auth Proxy או Cloud SQL Language Connectors, צריך להריץ שוב את הפקודה gcloud projects add-iam-policy-binding עם הדגל --role=roles/cloudsql.client
הוספת קישור מדיניות לקבוצה ב-Cloud Identity
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט שאתם רוצים לאשר לחברי הקבוצה להשתמש בו.
- GROUP_EMAIL_ADDRESS: כתובת האימייל של הקבוצה. לדוגמה,
example-group@example.com.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL_ADDRESS \ --role=roles/cloudsql.instanceUser
כל חברי הקבוצה שצוינה מקבלים את התפקיד "משתמש במכונה של Cloud SQL" ויכולים להתחבר למכונות בפרויקט הזה.
אם רוצים להתחבר באמצעות Cloud SQL Auth Proxy או Cloud SQL Language Connectors, צריך להריץ שוב את הפקודה gcloud projects add-iam-policy-binding עם הדגל --role=roles/cloudsql.client
Terraform
כדי להוסיף את קישור המדיניות הנדרש למשתמש ולחשבונות השירות ב-IAM, משתמשים במשאב Terraform.
החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
למחוק את השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
Terraform
כדי להוסיף את קישור המדיניות הנדרש למשתמש ולחשבונות השירות ב-IAM, משתמשים במשאב Terraform.
החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
למחוק את השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
REST
כדי להקצות את התפקידים cloudsql.instanceUser ו-cloudsql.client לשני סוגי החשבונות, עורכים את מדיניות הקישור מסוג JSON או YAML שהוחזרה באמצעות הפקודה get-iam-policy. שימו לב שהשינוי במדיניות ייכנס לתוקף רק אחרי שתגדירו את המדיניות המעודכנת.
{ "role": "roles/cloudsql.instanceUser", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.s3ns.iam.gserviceaccount.com" "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.s3ns.iam.gserviceaccount.com" ] }
הוספת משתמש IAM או חשבון שירות ספציפי למכונה של Cloud SQL
כדי לגשת למסדי נתונים, צריך ליצור חשבון משתמש חדש לכל משתמש או חשבון שירות ב-IAM שמוסיפים למכונה של Cloud SQL. אם אתם מוסיפים קבוצת IAM, אתם לא צריכים ליצור חשבון משתמש לכל חבר בקבוצה.
שם המשתמש של מסד הנתונים חייב להיות כתובת האימייל של המשתמש ב-IAM, וכולו באותיות קטנות.
לדוגמה, example-user@example.com.
אם משתמשים ב-API בארכיטקטורת REST, צריך להקיף את שם המשתמש במירכאות כי שמות המשתמשים של חשבונות השירות מכילים תווים מיוחדים (@ ו-.). בחשבונות שירות, שם המשתמש הוא בפורמט service-account-name@project-id.iam.
כדי להוסיף משתמש או חשבון שירות ספציפיים ב-IAM, מוסיפים חשבון משתמש חדש ובוחרים ב-IAM כשיטת האימות:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, לוחצים על Users.
- לוחצים על הוספת חשבון משתמש. נפתחת הכרטיסייה Add a user account to instance instance_name.
- לוחצים על כפתור הבחירה Cloud IAM.
- בשדה Principal, מוסיפים את כתובת האימייל של המשתמש או של חשבון השירות שרוצים להוסיף.
- לוחצים על הוספה. עכשיו חשבון המשתמש או חשבון השירות מופיעים ברשימת חשבונות המשתמשים.
אם למשתמש לא הוקצה תפקיד IAM של
cloudsql.instanceUserאחרי יצירת חשבון המשתמש, הסמל
יופיע לצד שם המשתמש.כדי לתת למשתמש הרשאות התחברות, לוחצים על הסמל ובוחרים באפשרות Add IAM role. אם הסמל לא מופיע יותר, סימן שלחשבון המשתמש הוקצה תפקיד IAM שנותן הרשאת התחברות.
gcloud
יצירה של חשבון משתמש
משתמשים בכתובת האימייל, למשל example-user@example.com, כדי לזהות את המשתמש.
מחליפים את מה שכתוב בשדות הבאים:
- USERNAME: כתובת האימייל של המשתמש.
- INSTANCE_NAME: שם המכונה שרוצים לתת למשתמש הרשאת גישה אליה.
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user
כשיוצרים את חשבון המשתמש, אפשר להקצות לו תפקיד אחד או יותר במסד הנתונים כדי לתת לו הרשאות במסד הנתונים.
יצירה של חשבון שירות
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_ACCT: כתובת האימייל של חשבון השירות.
- INSTANCE_NAME: שם המכונה שרוצים לתת לחשבון השירות הרשאת גישה אליה.
gcloud sql users create SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account
כשיוצרים את חשבון השירות, אפשר להקצות לו תפקיד אחד או יותר במסד הנתונים כדי לתת לו הרשאות במסד הנתונים.
Terraform
כדי להוסיף חשבונות משתמשים וחשבונות שירות של IAM למכונה שמופעל בה אימות של מסד נתונים באמצעות IAM, משתמשים במשאב Terraform.
החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
למחוק את השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
REST v1
יצירה של חשבון משתמש
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את המשתמש
- USERNAME: כתובת האימייל של המשתמש
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "USERNAME",
"type": "CLOUD_IAM_USER"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2020-02-07T22:44:16.656Z",
"startTime": "2020-02-07T22:44:16.686Z",
"endTime": "2020-02-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
יצירה של חשבון שירות
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- SERVICE_ACCT: כתובת האימייל של חשבון השירות
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את חשבון השירות
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "SERVICE_ACCT",
"type": "CLOUD_IAM_SERVICE_ACCOUNT"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2020-11-20T04:08:00.211Z",
"startTime": "2020-11-20T04:08:00.240Z",
"endTime": "2020-11-20T04:08:02.003Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
יצירה של חשבון משתמש
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את המשתמש
- USERNAME: כתובת האימייל של המשתמש
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "USERNAME",
"type": "CLOUD_IAM_USER"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2020-02-07T22:44:16.656Z",
"startTime": "2020-02-07T22:44:16.686Z",
"endTime": "2020-02-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
יצירה של חשבון שירות
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- SERVICE_ACCT: כתובת האימייל של חשבון השירות
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את חשבון השירות
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "SERVICE_ACCT",
"type": "CLOUD_IAM_SERVICE_ACCOUNT"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2020-11-20T04:08:00.211Z",
"startTime": "2020-11-20T04:08:00.240Z",
"endTime": "2020-11-20T04:08:02.003Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
הוספת קבוצת IAM למכונה של Cloud SQL
כדי להשתמש באימות של קבוצת IAM ולהוסיף קבוצת IAM למכונה של Cloud SQL, צריך להשתמש באחד מהתהליכים שבקטע הזה. אחרי שמוסיפים את קבוצת ה-IAM, לא צריך להוסיף למכונה את חברי הקבוצה בנפרד. מידע נוסף מופיע במאמר הוספה אוטומטית של חברים בקבוצה למכונה של Cloud SQL.
בכל מכונה של Cloud SQL יכולות להיות עד 200 קבוצות IAM בו-זמנית. קבוצות לא פעילות נכללות במגבלה הזו.
לשמות של קבוצות IAM יש את אותן מגבלות אורך כמו למזהים של PostgreSQL, והם יכולים להיות באורך של עד 63 תווים.
אם יש לכם קבוצת IAM עם שם שחורג ממגבלת האורך של שם המשתמש במנוע של מסד הנתונים, עדיין תוכלו להשתמש בה לאימות קבוצת IAM. לשם כך, צריך להגדיר אותה כקבוצת משנה של קבוצת IAM ראשית עם שם שעומד במגבלת האורך. כדי להשתמש בקבוצה המקוננת, צריך להוסיף את קבוצת ה-IAM הראשית למכונה.
המסוף
.-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, לוחצים על Users.
- לוחצים על הוספת חשבון משתמש. נפתחת הכרטיסייה Add a user account to instance instance_name.
- לוחצים על כפתור הבחירה Cloud IAM.
- בשדה Principal, מוסיפים את כתובת האימייל של הקבוצה שרוצים להוסיף.
- לוחצים על הוספה. הקבוצה נמצאת עכשיו ברשימת המשתמשים.
אם לקבוצה לא הוקצה תפקיד ב-
cloudsql.instanceUserאחרי יצירת חשבון המשתמש, הסמל
יופיע ליד הקבוצה.כדי לתת לחברי הקבוצה הרשאות התחברות, לוחצים על הסמל ובוחרים באפשרות Add IAM role. אם הסמל לא מופיע יותר, סימן שלכל חברי הקבוצה הוקצה התפקיד שנותן את הרשאת ההתחברות.
gcloud
מחליפים את מה שכתוב בשדות הבאים:
- GROUP_EMAIL_ADDRESS: כתובת האימייל של קבוצת Cloud Identity שרוצים להוסיף למכונה. לדוגמה, example-group@example.com.
- INSTANCE_NAME: שם המכונה שבה רוצים להוסיף את הקבוצה.
מריצים את הפקודה הבאה:
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group
כשיוצרים את הקבוצה, אפשר להקצות תפקיד אחד או יותר במסד הנתונים כדי לתת לחברי הקבוצה הרשאות במסד הנתונים.
Terraform
כדי להוסיף חשבונות משתמשים וחשבונות שירות של IAM למכונה שמופעל בה אימות של מסד נתונים באמצעות IAM, משתמשים במשאב Terraform.
החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
למחוק את השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את קבוצת Cloud Identity
- GROUP_EMAIL: כתובת האימייל של קבוצת Cloud Identity
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "GROUP_EMAIL",
"type": "CLOUD_IAM_GROUP"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "example-group@example.com",
"insertTime": "2023-12-07T22:44:16.656Z",
"startTime": "2023-12-07T22:44:16.686Z",
"endTime": "2023-12-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את קבוצת Cloud Identity
- GROUP_EMAIL: כתובת האימייל של קבוצת Cloud Identity
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "GROUP_EMAIL",
"type": "CLOUD_IAM_GROUP"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "example-group@example.com",
"insertTime": "2023-12-07T22:44:16.656Z",
"startTime": "2023-12-07T22:44:16.686Z",
"endTime": "2023-12-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
הוספה אוטומטית של חברים בקבוצה למכונה של Cloud SQL
כשמוסיפים קבוצת IAM למכונה של Cloud SQL, כל החברים (משתמשים וחשבונות שירות) בקבוצה הזו מקבלים את הרשאות ה-IAM לאימות במכונה. לא צריך להוסיף את חברי הקבוצה בנפרד למכונה של Cloud SQL. אחרי שחבר בקבוצה מתחבר ומאמת את הזהות שלו בהצלחה במכונה הראשית בפעם הראשונה, Cloud SQL יוצר חשבון משתמש קבוצתי או חשבון שירות קבוצתי לאותו חבר בקבוצה. אחרי שהמשתמשים בקבוצה יתחברו בהצלחה בפעם הראשונה, תוכלו לראות אותם ברשימה של המכונה.
במקרה של יתירות כשל, כל עוד למכונה של יתירות הכשל יש את הקבוצות המתאימות, משתמשים בקבוצות IAM יכולים להמשיך להתחבר וליצור משתמשים.
מידע נוסף על התחברות זמין במאמר התחברות באמצעות אימות מסד נתונים של IAM.
העברת משתמשי IAM קיימים לשימוש באימות של קבוצת IAM
משתמשי IAM קיימים מסוג CLOUD_IAM_USER או CLOUD_IAM_SERVICE_ACCOUNT לא משתמשים באימות של קבוצת IAM.
אתם יכולים להעביר את המשתמשים האלה לאימות באמצעות קבוצות IAM.
מוסיפים את המשתמשים האלה לקבוצה.
מוסיפים את הקבוצה למכונה.
מקצים לקבוצה הרשאות IAM מספיקות כדי לאפשר לחברי הקבוצה להתחבר למכונות. יכול להיות שיעבור זמן עד שהשינויים האלה יתעדכנו. מידע נוסף על זמני ההפצה זמין במאמר הפצה של שינויי גישה.
מקצים לקבוצה את הרשאות מסד הנתונים שהוקצו למשתמשי ה-IAM שאתם מעבירים.
אחרי שהשינויים בחברות בקבוצה ובהרשאות ה-IAM יחולו, מחקו את משתמש ה-IAM הקיים מהמכונה. בפעם הבאה שמשתמש IAM יתחבר בהצלחה, המשתמש ייווצר מחדש כמשתמש בקבוצת IAM שיכול להשתמש באימות של קבוצת IAM.
ניהול חברי הקבוצה במכונה של Cloud SQL
כשמוסיפים קבוצת IAM למכונה של Cloud SQL, כל החברים בקבוצה (חשבונות משתמשים או חשבונות שירות) מקבלים בירושה את הרשאת ה-IAM לאימות במכונה. כדי לשלוט בגישה למכונה, אתם יכולים לנהל את הקבוצה ב-Cloud Identity. לדוגמה, אם רוצים לתת למשתמש חדש גישה למכונה, מוסיפים את המשתמש כחבר בקבוצה ב-Cloud Identity. לא צריך להסיר או להוסיף חברים בקבוצה בנפרד ברמת המכונה של Cloud SQL, כי השינויים בחברות בקבוצה מופצים באופן אוטומטי למכונה של Cloud SQL. שינויים בחברות בקבוצה, כמו הוספה או הסרה של חבר, מתעדכנים תוך כ-15 דקות. העיכוב של 15 דקות בהפצה מ-Cloud SQL מתרחש במקביל לזמן שנדרש להפצת השינויים ב-IAM.
הענקה או ביטול של הרשאות במסד נתונים לקבוצת IAM ב-PostgreSQL נכנסים לתוקף באופן מיידי. לדוגמה, אם תבטלו את הגישה לטבלה, חברי קבוצת ה-IAM הזו יאבדו את הגישה לטבלה באופן מיידי.
חשבון משתמש או חשבון שירות יכולים להיות חברים בכמה קבוצות IAM. אם משתמש או חשבון שירות שייכים לכמה קבוצות IAM במכונה, יש להם את כל ההרשאות של IAM ושל מסד הנתונים שמשולבות מכל אחת מקבוצות ה-IAM האלה.
כשמוסיפים חבר חדש (משתמש או חשבון שירות) לקבוצת IAM ב-Cloud Identity, והוא מתחבר למכונה בפעם הראשונה, הוא מקבל באופן אוטומטי את הרשאות מסד הנתונים שניתנו לקבוצה.
הענקת הרשאות למסד נתונים למשתמש IAM או לחשבון שירות ספציפיים
כשמוסיפים משתמש או שירות IAM ספציפי למכונה של Cloud SQL, כברירת מחדל החשבון החדש לא מקבל הרשאות לאף מסד נתונים. הם יכולים להריץ שאילתות רק על אובייקטים במסד הנתונים שניתנה ל-PUBLIC גישה אליהם.
אם הם צריכים גישה נוספת, אפשר להעניק להם עוד הרשאות באמצעות ההצהרה GRANT. בדף העזר GRANT מופיעה רשימה מלאה של ההרשאות שאפשר להעניק למשתמשים ולחשבונות שירות. מריצים את GRANT משורת הפקודה.
מחליפים את מה שכתוב בשדות הבאים:
- USERNAME: כתובת האימייל של המשתמש. צריך להוסיף מירכאות סביב כתובת האימייל כי היא מכילה תווים מיוחדים (
@ו-.) - TABLE_NAME: שם הטבלה שרוצים לתת למשתמש גישה אליה.
grant select on TABLE_NAME to "USERNAME";
הענקת הרשאות למסד נתונים לקבוצת IAM
כשמשתמשים באימות של קבוצות IAM, מעניקים הרשאות למסד הנתונים לקבוצות IAM במקום להעניק הרשאות למשתמשים ספציפיים או לחשבונות שירות. כברירת מחדל, כשמוסיפים קבוצת IAM למכונה של Cloud SQL, לקבוצה אין הרשאות למסד הנתונים. אתם יכולים להקצות לקבוצה הרשאות ספציפיות למסד הנתונים, או ליצור תפקיד במסד הנתונים ואז להקצות את התפקיד לקבוצה ב-IAM.
כדי להעניק הרשאות ספציפיות למסד נתונים לקבוצת IAM, משתמשים בהצהרה GRANT.
אחרי שהם מתחברים למכונה של Cloud SQL בפעם הראשונה, כל חבר בקבוצה (כולל משתמשים וחשבונות שירות) מקבל באופן אוטומטי את הרשאות מסד הנתונים שניתנו לקבוצה.
מחליפים את מה שכתוב בשדות הבאים:
- GROUP_NAME: כתובת האימייל של הקבוצה ב-Cloud Identity, כולל
@ושם הדומיין. לדוגמה, אם כתובת האימייל של קבוצת IAM היאexample-group@example.com, שם הקבוצה הואexample-group@example.com. צריך להוסיף מירכאות מסביב לשם הקבוצה כי המחרוזת מכילה תווים מיוחדים (@ו-.) - TABLE_NAME: שם הטבלה שרוצים לתת למשתמש גישה אליה.
מריצים את הפקודה GRANT משורת הפקודה של psql.
grant select on TABLE_NAME to "GROUP_NAME";
למידע נוסף על הענקת הרשאות, קראו את דף העזרה GRANT במסמכי התיעוד של PostgreSQL.
הרשאות מסד הנתונים שאתם מעניקים לקבוצת ה-IAM נכנסות לתוקף באופן מיידי.
הקצאת תפקידים במסד הנתונים בזמן הוספת חשבון IAM למכונה
כדי ליצור תפקיד בהתאמה אישית במסד נתונים ב-PostgreSQL, קראו את המאמר תפקידים במסד נתונים.gcloud
יצירה של חשבון משתמש
משתמשים בכתובת האימייל, למשל example-user@example.com, כדי לזהות את המשתמש.
gcloud sql users create USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user \ --database-roles=ROLE_1, ROLE_2
מחליפים את מה שכתוב בשדות הבאים:
- USERNAME: כתובת האימייל של המשתמש.
- INSTANCE_NAME: שם המכונה שרוצים לתת למשתמש הרשאת גישה אליה.
- ROLE_1, ROLE_2, ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שיוקצו למשתמש.
יצירה של חשבון שירות
gcloud sql users create SERVICE_ACCOUNT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account \ --database-roles=ROLE_1, ROLE_2
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_ACCOUNT: כתובת האימייל של חשבון השירות.
- INSTANCE_NAME: שם המכונה שרוצים לתת לחשבון השירות הרשאת גישה אליה.
- ROLE_1, ROLE_2, ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות לחשבון השירות.
איך יוצרים קבוצות
gcloud sql users create GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group \ --database-roles=ROLE_1, ROLE_2
מחליפים את מה שכתוב בשדות הבאים:
- GROUP_EMAIL_ADDRESS: כתובת האימייל של קבוצת Cloud Identity שרוצים להוסיף למכונה. לדוגמה, example-group@example.com.
- INSTANCE_NAME: שם המכונה שבה רוצים להוסיף את הקבוצה.
- ROLE_1, ROLE_2, ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות לחשבון השירות.
Terraform
כדי להוסיף חשבונות משתמשים וחשבונות שירות של IAM למכונה שמופעל בה אימות של מסד נתונים באמצעות IAM, משתמשים במשאב Terraform.
החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
למחוק את השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את המשתמש
- USERNAME: כתובת האימייל של המשתמש
- USER_TYPE: סוג המשתמש ב-Cloud SQL, שהוא אחד מסוגי המשתמשים הבאים ב-IAM:
CLOUD_IAM_USERCLOUD_IAM_SERVICE_ACCOUNTCLOUD_IAM_GROUP
- ROLE_1, ROLE_2 ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות למשתמש, לחשבון השירות או לקבוצה ב-IAM
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "USERNAME",
"type": "USER_TYPE",
"databaseRoles": [
"ROLE_1",
"ROLE_2"
]
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2025-10-07T22:44:16.656Z",
"startTime": "2025-10-07T22:44:16.686Z",
"endTime": "2025-10-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את המשתמש
- USERNAME: כתובת האימייל של המשתמש
- USER_TYPE: סוג המשתמש ב-Cloud SQL, שהוא אחד מסוגי המשתמשים הבאים ב-IAM:
CLOUD_IAM_USERCLOUD_IAM_SERVICE_ACCOUNTCLOUD_IAM_GROUP
- ROLE_1, ROLE_2 ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות למשתמש, לחשבון השירות או לקבוצה ב-IAM
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "USERNAME",
"type": "CLOUD_IAM_USER",
"databaseRoles": [
"ROLE_1",
"ROLE_2"
]
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2025-10-07T22:44:16.656Z",
"startTime": "2025-10-07T22:44:16.686Z",
"endTime": "2025-10-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
הקצאה או ביטול של תפקידים במסד הנתונים בזמן עדכון של חשבון IAM במכונה
אחרי שמוסיפים משתמש IAM, חשבון שירות או קבוצת IAM למכונה של Cloud SQL, אפשר לשנות את התפקידים במסד הנתונים שמוקצים להם. אתם יכולים להקצות תפקידים במסד הנתונים שהגדרתם למסד הנתונים שלכם. התפקידים במסד הנתונים שאתם מקצים מתווספים לתפקידים שכבר הוקצו לחשבון. אם רוצים להחליף תפקידים במסד הנתונים, צריך לבטל את התפקידים במסד הנתונים באמצעות הדגל --revoke-existing-roles.
כדי ליצור תפקיד ב-PostgreSQL, קראו את המאמר תפקידים במסד הנתונים.
אי אפשר להקצות אף אחד מתפקידי המערכת למשתמש IAM קיים, חוץ מהתפקיד cloudsqlsuperuser במסד הנתונים.
gcloud
עדכון של חשבון משתמש
משתמשים בכתובת האימייל, למשל example-user@example.com, כדי לזהות את המשתמש.
כדי להוסיף תפקידים במסד הנתונים לחשבון משתמש, משתמשים בפקודה הבאה:
gcloud sql users assign-roles USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user \ --database-roles=ROLE_1, ROLE_2
כדי להחליף את התפקידים במסד הנתונים של חשבון משתמש, משתמשים בפקודה הבאה:
gcloud sql users assign-roles USERNAME \ --instance=INSTANCE_NAME \ --type=cloud_iam_user \ --database-roles=ROLE_1, ROLE_2 --revoke-existing-roles
מחליפים את מה שכתוב בשדות הבאים:
- USERNAME: כתובת האימייל של המשתמש.
- INSTANCE_NAME: שם המכונה שרוצים לתת למשתמש הרשאת גישה אליה.
- ROLE_1, ROLE_2, ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שיוקצו למשתמש.
עדכון של חשבון שירות
כדי להוסיף תפקידים במסד הנתונים לחשבון שירות, משתמשים בפקודה הבאה:
gcloud sql users assign-roles SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account \ --database-roles=ROLE_1, ROLE_2
כדי להחליף תפקידים במסד הנתונים של חשבון שירות, משתמשים בפקודה הבאה:
gcloud sql users assign-roles SERVICE_ACCT \ --instance=INSTANCE_NAME \ --type=cloud_iam_service_account \ --database-roles=ROLE_1, ROLE_2 --revoke-existing-roles
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_ACCT: כתובת האימייל של חשבון השירות.
- INSTANCE_NAME: שם המכונה שרוצים לתת לחשבון השירות הרשאת גישה אליה.
- ROLE_1, ROLE_2, ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות לחשבון השירות.
עדכון קבוצה
כדי להוסיף תפקידים במסד נתונים לקבוצה, משתמשים בפקודה הבאה:gcloud sql users assign-roles GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group \ --database-roles=ROLE_1, ROLE_2
כדי להחליף את התפקידים של קבוצה במסד הנתונים, משתמשים בפקודה הבאה:
gcloud sql users assign-roles GROUP_EMAIL_ADDRESS \ --instance=INSTANCE_NAME \ --type=cloud_iam_group \ --database-roles=ROLE_1, ROLE_2 --revoke-existing-roles
מחליפים את מה שכתוב בשדות הבאים:
- GROUP_EMAIL_ADDRESS: כתובת האימייל של קבוצת Cloud Identity שרוצים להוסיף למכונה. לדוגמה, example-group@example.com.
- INSTANCE_NAME: שם המכונה שבה רוצים להוסיף את הקבוצה.
- ROLE_1, ROLE_2, ...ROLE_N: התפקיד או התפקידים במסד הנתונים שיוקצו לקבוצה.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את המשתמש
- USERNAME: כתובת האימייל של המשתמש
- USER_TYPE: סוג המשתמש ב-Cloud SQL, שהוא אחד מסוגי המשתמשים הבאים ב-IAM:
CLOUD_IAM_USERCLOUD_IAM_SERVICE_ACCOUNTCLOUD_IAM_GROUP
- ROLE_1, ROLE_2 ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות למשתמש, לחשבון השירות או לקבוצה ב-IAM
- REVOKE_EXISTING_ROLES: מגדירים את הערך
trueכדי לבטל את התפקידים הקיימים של המשתמש, או את הערךfalseכדי לשמור את התפקידים הקיימים של המשתמש.
ה-method של ה-HTTP וכתובת ה-URL:
PUT https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "USERNAME",
"type": "USER_TYPE",
"databaseRoles": [
"ROLE_1",
"ROLE_2"
],
"revokeExistingRoles": REVOKE_EXISTING_ROLES
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2025-10-07T22:44:16.656Z",
"startTime": "2025-10-07T22:44:16.686Z",
"endTime": "2025-10-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה שאליה מוסיפים את המשתמש
- USERNAME: כתובת האימייל של המשתמש
- USER_TYPE: סוג המשתמש ב-Cloud SQL, שיכול להיות אחד מסוגי המשתמשים הבאים ב-IAM:
CLOUD_IAM_USERCLOUD_IAM_SERVICE_ACCOUNTCLOUD_IAM_GROUP
- ROLE_1, ROLE_2 ..., ROLE_N: התפקיד או התפקידים במסד הנתונים שרוצים להקצות למשתמש, לחשבון השירות או לקבוצה ב-IAM
- REVOKE_EXISTING_ROLES: מגדירים את הערך
trueכדי לבטל את התפקידים הקיימים של המשתמש, או את הערךfalseכדי לשמור את התפקידים הקיימים של המשתמש.
ה-method של ה-HTTP וכתובת ה-URL:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
תוכן בקשת JSON:
{
"name": "USERNAME",
"type": "USER_TYPE",
"databaseRoles": [
"ROLE_1",
"ROLE_2"
],
"revokeExistingRoles": REVOKE_EXISTING_ROLES
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2025-10-07T22:44:16.656Z",
"startTime": "2025-10-07T22:44:16.686Z",
"endTime": "2025-10-07T22:44:20.437Z",
"operationType": "CREATE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
הצגת משתמשי IAM, חשבונות שירות וקבוצות שנוספו למכונה של Cloud SQL
כדי לראות את משתמשי ה-IAM, חשבונות השירות והקבוצות שנוספו למכונה של Cloud SQL, מריצים את הפקודות הבאות.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, לוחצים על Users. בדף מוצגת רשימה של משתמשי IAM, חשבונות שירות וקבוצות Cloud Identity שנוספו למכונה.
- אופציונלי: כדי לראות רשימה של משתמשי IAM או חשבונות שירות שכבר התחברו למכונה, לוחצים על Authenticated IAM group members.
gcloud
מחליפים את INSTANCE_NAME בשם המכונה שכוללת את הקבוצות שרוצים להציג.
gcloud sql users list --instance=INSTANCE_NAME
סוג המשתמש של קבוצות הוא CLOUD_IAM_GROUP.
בעמודה IAM_STATUS אפשר לראות אם הקבוצות פעילות או לא פעילות. אפשר להשתמש בקבוצת IAM של ACTIVE לאימות קבוצתי ב-IAM. אי אפשר להשתמש בקבוצת IAM של INACTIVE לאימות קבוצת IAM.
בפלט מופיעה גם רשימה של חשבונות המשתמשים וחשבונות השירות במכונה שלכם ב-Cloud SQL.
- חשבונות משתמשים שחברים בקבוצה הם מסוג
CLOUD_IAM_GROUP_USER. - חשבונות שירות שחברים בקבוצה הם מהסוג
CLOUD_IAM_GROUP_SERVICE_ACCOUNT. - חשבונות משתמשים שהם חשבונות משתמשים נפרדים לאימות מסד נתונים של IAM הם מהסוג
CLOUD_IAM_USER. - חשבונות שירות שהם חשבונות שירות נפרדים לאימות מסד נתונים ב-IAM הם מהסוג
CLOUD_IAM_SERVICE_ACCOUNT.
REST v1
הבקשה הבאה משתמשת ב-method users.list כדי להציג את רשימת המשתמשים שיש להם חשבונות במכונה של Cloud SQL.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#usersList",
"items": [
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "example-service-acct@PROJECT_ID.iam",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_SERVICE_ACCOUNT",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "another-example-service-acct@PROJECT_ID.iam",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "postgres",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "example-user@example.com",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_USER",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "another-example-user@example.com",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_GROUP_USER",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "example-group@example.com",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_GROUP",
"iamStatus": "ACTIVE"
}
]
}
סוג המשתמש של קבוצות הוא CLOUD_IAM_GROUP.
בשדה iamStatus מוצג אם הקבוצות פעילות או לא פעילות. אפשר להשתמש בקבוצת IAM של ACTIVE לאימות קבוצתי ב-IAM. קבוצת IAM ב-INACTIVE לא משמשת לאימות של קבוצת IAM.
הערך IAM_STATUS_UNSPECIFIED בשדה iamStatus מציין שסטטוס ה-IAM לא רלוונטי לסוג המשתמש הספציפי הזה.
בפלט מופיעה גם רשימה של חשבונות המשתמשים וחשבונות השירות במכונה שלכם ב-Cloud SQL.
- חשבונות משתמשים שחברים בקבוצה הם מסוג
CLOUD_IAM_GROUP_USER. - חשבונות שירות שחברים בקבוצה הם מהסוג
CLOUD_IAM_GROUP_SERVICE_ACCOUNT. - חשבונות משתמשים שהם חשבונות משתמשים נפרדים לאימות מסד נתונים של IAM הם מהסוג
CLOUD_IAM_USER. - חשבונות שירות שהם חשבונות שירות נפרדים לאימות מסד נתונים ב-IAM הם מהסוג
CLOUD_IAM_SERVICE_ACCOUNT.
REST v1beta4
הבקשה הבאה משתמשת ב-method users.list כדי להציג את רשימת המשתמשים שיש להם חשבונות במכונה של Cloud SQL.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users/list
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#usersList",
"items": [
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "example-service-acct@PROJECT_ID.iam",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_SERVICE_ACCOUNT",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "another-example-service-acct@PROJECT_ID.iam",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "postgres",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "example-user@example.com",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_USER",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "another-example-user@example.com",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_GROUP_USER",
"iamStatus": "IAM_STATUS_UNSPECIFIED"
},
{
"kind": "sql#user",
"etag": "--redacted--",
"name": "example-group@example.com",
"host": "",
"instance": "INSTANCE_ID",
"project": "PROJECT_ID",
"type": "CLOUD_IAM_GROUP",
"iamStatus": "ACTIVE"
}
]
}
סוג המשתמש של קבוצות הוא CLOUD_IAM_GROUP.
בשדה iamStatus מוצג אם הקבוצות פעילות או לא פעילות. אפשר להשתמש בקבוצת IAM של ACTIVE לאימות קבוצתי ב-IAM. אי אפשר להשתמש בקבוצת INACTIVE ב-IAM לאימות קבוצה ב-IAM.
הערך IAM_STATUS_UNSPECIFIED בשדה iamStatus מציין שסטטוס ה-IAM לא רלוונטי לסוג המשתמש הספציפי הזה.
בפלט מופיעה גם רשימה של חשבונות המשתמשים וחשבונות השירות במכונה שלכם ב-Cloud SQL.
- חשבונות משתמשים שחברים בקבוצה הם מסוג
CLOUD_IAM_GROUP_USER. - חשבונות שירות שחברים בקבוצה הם מהסוג
CLOUD_IAM_GROUP_SERVICE_ACCOUNT. - חשבונות משתמשים שהם חשבונות משתמשים נפרדים לאימות מסד נתונים של IAM הם מהסוג
CLOUD_IAM_USER. - חשבונות שירות שהם חשבונות שירות נפרדים לאימות מסד נתונים ב-IAM הם מהסוג
CLOUD_IAM_SERVICE_ACCOUNT.
הסרה של משתמש IAM או חשבון שירות ספציפי ממכונה של Cloud SQL
כדי להסיר ממכונה של Cloud SQL משתמש או חשבון שירות שלא חברים בקבוצה, צריך למחוק את החשבון באמצעות הפקודה הבאה:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, לוחצים על Users.
- לוחצים על בשורה של המשתמש שרוצים להסיר.
- לוחצים על הסרה. הפעולה הזו מבטלת את הגישה למופע הזה בלבד.
gcloud
ביטול גישה של משתמש
משתמשים בכתובת האימייל, למשל example-user@example.com, כדי לזהות את המשתמש.
מחליפים את מה שכתוב בשדות הבאים:
- USERNAME: כתובת האימייל.
- INSTANCE_NAME: שם המכונה שממנה רוצים להסיר את המשתמש.
gcloud sql users delete USERNAME \ --instance=INSTANCE_NAME
מחיקה של חשבון שירות ספציפי
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_ACCT: כתובת האימייל של חשבון השירות.
- INSTANCE_NAME: שם המכונה שממנה רוצים להסיר את המשתמש.
gcloud sql users delete SERVICE_ACCT \ --instance=INSTANCE_NAME
REST v1
הבקשה הבאה משתמשת ב-method users.delete כדי למחוק את חשבון המשתמש שצוין.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה הרצוי
- USERNAME: כתובת האימייל של המשתמש או של חשבון השירות
ה-method של ה-HTTP וכתובת ה-URL:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2020-02-07T22:38:41.217Z",
"startTime": "2020-02-07T22:38:41.217Z",
"endTime": "2020-02-07T22:38:44.801Z",
"operationType": "DELETE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
הבקשה הבאה משתמשת ב-method users.delete כדי למחוק את חשבון המשתמש שצוין.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה הרצוי
- USERNAME: כתובת האימייל של המשתמש או של חשבון השירות
ה-method של ה-HTTP וכתובת ה-URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "DONE",
"user": "user@example.com",
"insertTime": "2020-02-07T22:38:41.217Z",
"startTime": "2020-02-07T22:38:41.217Z",
"endTime": "2020-02-07T22:38:44.801Z",
"operationType": "DELETE_USER",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
הסרת חברים בקבוצת IAM ממכונה של Cloud SQL
יש שתי דרכים להסיר חברים בקבוצת IAM ממכונה של Cloud SQL:
- הסרה אוטומטית
- הסרה ידנית
הסרה אוטומטית
כדי להסיר חבר מקבוצת IAM, צריך להסיר את החברות שלו מהקבוצות הרלוונטיות ב-Cloud Identity. אחרי שהמשתמשים בקבוצת IAM הוסרו מכל הקבוצות הרלוונטיות ב-Cloud Identity, המערכת של Cloud SQL מסירה אותם באופן אוטומטי מהמכונה. החריגים היחידים להסרה הזו הם משתמשים בקבוצה שבבעלותם אובייקטים של מסד נתונים. צריך להסיר את המשתמשים האלה מהקבוצה באופן ידני.
שינויים בחברות בקבוצה, כמו הוספה או הסרה של חבר, מתעדכנים תוך כ-15 דקות. העיכוב של 15 דקות בהפצה מ-Cloud SQL מתרחש במקביל לזמן שנדרש להפצת השינויים ב-IAM.
הסרה ידנית
במקרים שבהם אי אפשר להסיר משתמש מקבוצת IAM באופן אוטומטי, אתם יכולים להסיר אותו באופן ידני. אי אפשר להסיר באופן ידני משתמש מקבוצת IAM ממכונה של Cloud SQL באמצעות ה-CLI של gcloud, מסוףCloud de Confiance , Terraform או Cloud SQL Admin API. במקום זאת, משתמשי מסד נתונים עם הרשאות של משתמש-על יכולים למחוק באופן ידני משתמשים מקבוצת IAM ממכונת Cloud SQL, באמצעות הצהרת DROP USER מלקוח PostgreSQL.
אחרי שמסירים באופן ידני משתמש מקבוצת IAM ממכונת Cloud SQL, חשוב להסיר אותו גם מקבוצת ה-IAM ב-Cloud Identity כדי למנוע ממנו להתחבר שוב למכונת Cloud SQL.
שינוי שם הדומיין של חברים קיימים בקבוצת IAM במכונה של Cloud SQL
אם משנים את שם הדומיין של ארגון ב-Cloud Identity, השינויים לא חלים באופן אוטומטי על חברי קבוצת IAM במכונה של Cloud SQL.
לדוגמה, אם משנים את user@example.com ל-user@new-example.com ב-Cloud Identity, אז user@example.com נשאר במכונה של Cloud SQL למרות ששם הדומיין השתנה ב-Cloud Identity.
כדי לשנות את שם הדומיין של חברי הקבוצה ב-IAM:
משתמשים בהליך ההסרה האוטומטית של חברים בקבוצת IAM כדי להסיר מהמכונה את כל המשתמשים שמשתמשים בשם הדומיין הישן.
יוצרים מחדש את החשבון על ידי התחברות למכונה של Cloud SQL בתור כל אחד מחברי קבוצת IAM, ומשתמשים בחשבון עם שם הדומיין החדש. מידע נוסף זמין במאמר הוספה אוטומטית של חברים בקבוצה למכונה של Cloud SQL.
כדי לשנות את שם הדומיין של קבוצות IAM:
משתמשים בהליך הסרת קבוצות ב-IAM כדי להסיר מהמכונה את כל הקבוצות שמשתמשות בשם הדומיין הישן.
משתמשים בתהליך יצירת קבוצת IAM כדי להוסיף למכונה את הקבוצה עם הדומיין החדש.
נותנים מחדש את הרשאות מסד הנתונים לקבוצת IAM.
מחיקה של קבוצת IAM ממכונה של Cloud SQL
אתם יכולים למחוק את קבוצות IAM שהוספתם למכונה של Cloud SQL. אחרי שמוחקים קבוצת IAM מהמכונה, כל המשתמשים וחשבונות השירות ששייכים לקבוצת ה-IAM מאבדים את כל ההרשאות למסד הנתונים שניתנו לקבוצת ה-IAM. בנוסף, חלים התנאים הבאים:
- המשתמשים וחשבונות השירות ששייכים לקבוצת ה-IAM עדיין יכולים להתחבר, עד שהרשאת ה-IAM של
cloudsql.instances.loginתוסר מהקבוצה. - אם מחיקת הקבוצה גורמת לכך שחשבונות השירות או המשתמשים בקבוצת ה-IAM לא שייכים לקבוצות אחרות במכונה, Cloud SQL מסיר את חשבונות השירות או המשתמשים בקבוצת ה-IAM מהמכונה.
- עם זאת, אם משתמש בקבוצת IAM הוא הבעלים של אובייקט במסד הנתונים במכונה, צריך להקצות מחדש את הבעלות על האובייקט לפני שאפשר להסיר את המשתמש באופן ידני.
אם תמחקו את כל קבוצות ה-IAM ממכונה של Cloud SQL, כל המשתמשים וחשבונות השירות בקבוצות ה-IAM יאבדו את כל ההרשאות שלהם במסד הנתונים. בנוסף, חלים התנאים הבאים:
- כל המשתמשים בקבוצת IAM וחשבונות השירות לא יכולים להתחבר למכונה.
- בנוסף, Cloud SQL מסיר באופן אוטומטי מהמכונה את כל המשתמשים וחשבונות השירות מקבוצת IAM.
- עם זאת, אם משתמש בקבוצת IAM הוא הבעלים של אובייקט במסד הנתונים במכונה, צריך להקצות מחדש את הבעלות על האובייקט לפני שאפשר להסיר את המשתמש באופן ידני.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, לוחצים על Users.
- לוחצים על בקבוצה שרוצים להסיר.
- לוחצים על הסרה. הפעולה הזו מבטלת את הגישה למופע הזה בלבד.
gcloud
כדי למחוק קבוצה ב-Cloud Identity ממכונה, משתמשים בפקודה gcloud sql users delete.
מחליפים את מה שכתוב בשדות הבאים:
- GROUP_NAME: החלק הראשון של כתובת האימייל של הקבוצה ב-Cloud Identity. לדוגמה, אם משתמשים בכתובת האימייל
example-group@example.com, שם הקבוצה ב-Cloud Identity הואexample-group. - INSTANCE_NAME: השם של מכונת Cloud SQL עם קבוצת Cloud Identity שרוצים למחוק.
gcloud sql users delete GROUP_NAME \ --instance=INSTANCE_NAME
מחיקה של קבוצת IAM מ-IAM או מ-Cloud Identity
אם מוחקים קבוצת IAM מ-IAM או מ-Cloud Identity, אבל לא מוחקים אותה מהמכונה של Cloud SQL, קבוצת ה-IAM מסומנת כ-INACTIVE ונשארת במכונה עד שמסירים אותה ידנית.
אי אפשר להשתמש בקבוצות IAM לא פעילות לאימות קבוצות IAM. הרשאות למסד נתונים שניתנו לקבוצות לא פעילות לא מועברות לחברים בקבוצה. קבוצות לא פעילות לא נחשבות כחברויות חוקיות בקבוצות IAM. משתמשים בקבוצת IAM שלא שייכים ל-IAM פעיל לא יוכלו לבצע אימות באמצעות אימות קבוצתי של IAM.
אם קבוצת IAM לא פעילה, היא תישאר לא פעילה במכונה של Cloud SQL גם אם תיצרו אותה מחדש ב-IAM וב-Cloud Identity. כדי ליצור מחדש את שם הקבוצה ב-IAM:
יוצרים מחדש את הקבוצה ב-IAM וב-Cloud Identity.
כדי להסיר את הקבוצה הלא פעילה, משתמשים בהליך הסרת קבוצה ב-IAM.
משתמשים בתהליך להוספת קבוצת IAM כדי להוסיף את הקבוצה בחזרה למכונה של Cloud SQL.
נותנים הרשאות למסד הנתונים לקבוצת ה-IAM החדשה שנוצרה.
הסרת הרשאות התחברות ב-IAM מקבוצת IAM
אם מבטלים את התפקיד cloudsql.instanceUser מקבוצת IAM, כל החברים בקבוצה מאבדים את היכולת להתחבר לכל מכונה של Cloud SQL בפרויקט. המשתמשים או חשבונות השירות יכולים להתחבר למכונות רק אם הם חברים בקבוצת IAM אחרת שעדיין יש לה הרשאות התחברות.
כדי לבטל תפקיד של קבוצה ב-Cloud Identity, קראו את המאמר ביטול תפקיד יחיד.
הסרת משתמשים מקבוצת IAM
אפשר להסיר חברים מקבוצת IAM, כמו משתמשים או חשבונות שירות, מהקבוצה ב-Cloud Identity.
אחרי שההסרה תתעדכן ב-IAM, המשתמש לא יוכל יותר להתחבר למסד הנתונים, אלא אם הוא קיבל הרשאות התחברות מקבוצה אחרת או שקיבל הרשאות התחברות ישירות. בנוסף, משתמשים שהוסרו מקבוצה מאבדים את הרשאות מסד הנתונים של הקבוצה.
אם משתמש בקבוצת IAM לא שייך לאף קבוצה במכונה, Cloud SQL מסיר אותו באופן אוטומטי מהמכונה. עם זאת, אם Cloud SQL מזהה שמשתמש בקבוצת IAM הוא הבעלים של אובייקט במכונה, Cloud SQL לא מסיר את המשתמש. אדמין צריך להקצות מחדש את הבעלות על האובייקט ולהסיר את המשתמש באופן ידני.
צפייה בפרטי ההתחברות ביומני הביקורת
אתם יכולים להפעיל יומני ביקורת כדי לתעד התחברויות של IAM למסד הנתונים. אם יש בעיות בהתחברות, אתם יכולים להשתמש ביומני הביקורת כדי לאבחן את הבעיה.
אחרי ההגדרה, תוכלו לצפות ביומני הביקורת של הגישה לנתונים של התחברויות מוצלחות באמצעות הכלי לצפייה ביומנים.
באימות של קבוצות IAM, יומני הביקורת מציגים את הפעילות וההתחברויות של חשבונות משתמשים וחשבונות שירות ספציפיים.
לדוגמה, ביומן יכול להיות מידע כמו:
{
insertId: "..."
logName: "projects/.../logs/cloudaudit.googleapis.com%2Fdata_access"
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "..."
}
authorizationInfo: [
0: {
granted: true
permission: "cloudsql.instances.login"
resource: "instances/..."
resourceAttributes: {
}
}
]
methodName: "cloudsql.instances.login"
request: {
@type: "type.googleapis.com/google.cloud.sql.authorization.v1.InstancesLoginRequest"
clientIpAddress: "..."
database: "..."
databaseSessionId: ...
instance: "projects/.../locations/us-central1/instances/..."
user: "..."
}
requestMetadata: {
callerIp: "..."
destinationAttributes: {
}
requestAttributes: {
auth: {
}
time: "..."
}
}
resourceName: "instances/..."
serviceName: "cloudsql.googleapis.com"
status: {
}
}
receiveTimestamp: "..."
resource: {
labels: {
database_id: "...:..."
project_id: "..."
region: "us-central"
}
type: "cloudsql_database"
}
severity: "INFO"
timestamp: "..."
}
פתרון בעיות בכניסה לחשבון
כשניסיון ההתחברות נכשל, PostgreSQL מחזיר הודעת שגיאה מינימלית מטעמי אבטחה. לדוגמה:
PGPASSWORD=not-a-password psql --host=... --username=... --dbname=...
psql: error: could not connect to server: FATAL: Cloud SQL IAM user authentication failed for user "..."
FATAL: pg_hba.conf rejects connection for host "...", user "...", database "...", SSL off
כדי לקבל פרטים נוספים על השגיאה, אפשר לעיין ביומני השגיאות של PostgreSQL. למידע נוסף, קראו את המאמר הצגת יומנים.
לדוגמה, עבור השגיאה הקודמת, רשומת היומן הבאה מסבירה את הפעולה שתוכלו לבצע כדי לפתור את הבעיה.
F ... [152172]: [1-1] db=...,user=... FATAL: Cloud SQL IAM user authentication failed for user "..."
I ... [152172]: [2-1] db=...,user=... DETAIL: Request is missing required authentication credential. Expected OAuth 2 access token, log in cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
בודקים את הודעת השגיאה שמופיעה. אם בהודעה לא מצוין שהשתמשתם ב-"Cloud SQL IAM user authentication" או ב-"Cloud SQL IAM service account authentication", ודאו שסוג המשתמש במסד הנתונים שבו השתמשתם כדי להתחבר הוא CLOUD_IAM_USER או CLOUD_IAM_SERVICE_ACCOUNT.
כדי לבדוק את זה, אפשר להשתמש במסוף Cloud de Confiance או בפקודה gcloud sql
users list.
למשתמש IAM, ודאו ששם המשתמש במסד הנתונים הוא כתובת האימייל של משתמש ה-IAM.
אם השתמשתם באימות מסד נתונים של IAM, בדקו את הפרטים של הודעת השגיאה. הודעת השגיאה מופיעה ביומן השגיאות של מסד הנתונים. אם מצוין שטוקן הגישה (OAuth 2.0) ששלחתם כסיסמה לא תקין, אתם יכולים להשתמש בפקודה gcloud auth application-default print-access-token gcloud כדי למצוא את פרטי הטוקן, באופן הבא:
curl -H "Content-Type: application/x-www-form-urlencoded" \ -d "access_token=$(gcloud auth application-default print-access-token)" \ https://www.googleapis.com/oauth2/v1/tokeninfo
מוודאים שהאסימון מיועד למשתמש או לחשבון השירות הרצוי ב-IAM, ושהתוקף שלו לא פג.
אם הפרטים מצביעים על חוסר בהרשאה, צריך לוודא שלמשתמש או לחשבון השירות ב-IAM הוקצתה ההרשאה cloudsql.instances.login באמצעות התפקיד המוגדר מראש Cloud SQL Instance User או תפקיד בהתאמה אישית במדיניות ה-IAM של הפרויקט של המכונה. לקבלת עזרה נוספת, אפשר להשתמש בפותר הבעיות שקשורות למדיניות של IAM.
אם ההתחברות נכשלת כי אי אפשר לאמת את פרטי ההתחברות של המשתמשים ב-IAM, המשתמש יכול להתחבר באמצעות שם המשתמש והסיסמה שמוגדרים כברירת מחדל ב-PostgreSQL. שיטת ההתחברות הזו עדיין נותנת למשתמש גישה למסד הנתונים כולו. מוודאים שהחיבור מאובטח.
פתרון בעיות בחשבונות משתמשים שמשתמשים באימות של קבוצת IAM
בקטע הזה מפורטים תרחישים לפתרון בעיות באימות של קבוצות IAM.
לא הצלחתי להוסיף קבוצה למסד נתונים
כשמנסים להוסיף קבוצה למכונה, מקבלים את הודעת השגיאה הבאה:
(gcloud.sql.users.create) HTTPError 400: Invalid request: Provided CLOUD_IAM_GROUP: EMAIL, does not exist.
חשוב לוודא שכתובת האימייל שציינתם היא של קבוצה תקינה.
אם הקבוצה עדיין לא קיימת, יוצרים אותה. מידע נוסף על יצירת קבוצות זמין במאמר יצירה וניהול של קבוצות Google במסוף Cloud de Confiance .
אם מופיעה הודעת השגיאה הבאה:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
כדי להשתמש באימות של קבוצות IAM, צריך לבצע את עדכון התחזוקה הבא במכונה של Cloud SQL:
R20240514.00_04 ואילך
אתם יכולים להחיל את עדכון התחזוקה על המכונה באמצעות תחזוקה בשירות עצמי. מידע נוסף זמין במאמר ביצוע תחזוקה בשירות עצמי.
משתמש או חשבון שירות קיימים ב-IAM לא מקבלים בירושה את הרשאות מסד הנתונים שניתנו לקבוצת ה-IAM שלהם
אם משתמש או חשבון שירות קיימים ב-IAM לא יורשים את הרשאות מסד הנתונים הנכונות של הקבוצה שלהם, צריך לבצע את השלבים הבאים:
נכנסים לדף IAM במסוף Cloud de Confiance .
מוודאים שהחשבון הוא חבר בקבוצה שנוספה למכונה של Cloud SQL.
מציגים את רשימת המשתמשים וחשבונות השירות במכונה.
gcloud sql users list --instance=INSTANCE_NAME
בפלט, בודקים אם המשתמש או חשבון השירות מופיעים בתור
CLOUD_IAM_USERאוCLOUD_IAM_SERVICE_ACCOUNT.אם המשתמש או חשבון השירות מופיעים בתור
CLOUD_IAM_USERאוCLOUD_IAM_SERVICE_ACCOUNT, צריך להסיר את החשבון מהמכונה. החשבון שאתם מסירים הוא חשבון IAM פרטי שלא יורש את הרשאות מסד הנתונים של הקבוצה.מתחברים שוב למכונה באמצעות חשבון המשתמש או חשבון השירות.
כשמתחברים שוב למכונה, החשבון נוצר מחדש עם סוג החשבון הנכון,
CLOUD_IAM_GROUP_USERאוCLOUD_IAM_GROUP_SERVICE_ACCOUNT.