בדף הזה מוסבר איך להוסיף משתמשים, חשבונות שירות וקבוצות למכונת Cloud SQL שמשתמשת באימות מסד נתונים של IAM, ואיך לנהל אותם.
מידע נוסף על השילוב עם IAM זמין במאמר אימות IAM.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - מוודאים שיש לכם תפקיד אדמין ב-Cloud SQL בחשבון המשתמש.
- מפעילים אימות מסד נתונים ב-IAM במכונת Cloud SQL.
- מקצים את התפקיד הנדרש ב-IAM (
cloudsql.instanceUser) לגורמים ב-IAM כמו משתמשי IAM, חשבונות שירות או קבוצות כדי להיכנס למופע Cloud SQL. - אם מוסיפים משתמש יחיד או חשבון שירות יחיד למופע Cloud SQL, צריך להקצות את תפקיד ה-IAM לכל משתמש ולכל חשבון שירות בנפרד.
- אם מוסיפים קבוצה, צריך להקצות לקבוצה את תפקיד ה-IAM, כי חברי הקבוצה יורשים באופן אוטומטי את הרשאות ה-IAM שמשויכות לתפקיד ה-IAM. מידע נוסף על יצירת קבוצות ב-Cloud Identity זמין במאמר בנושא יצירה וניהול של קבוצות Google במסוף Google Cloud .
- אפשר להקצות את התפקיד בפרויקט שמכיל מופעי Cloud SQL באמצעות הדף IAM במסוף Google Cloud , gcloud CLI, Terraform או Cloud SQL Admin API. מידע נוסף זמין במאמר הוספת קשר בין מדיניות IAM לבין משתמש, חשבון שירות או קבוצה.
- אם אתם משתמשים בחשבון שירות, ודאו שהוספתם חשבון שירות לכל שירות שנדרשת לו גישה למסדי נתונים בפרויקט.
מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירת חשבונות שירות.
הוספת קשר בין מדיניות IAM למשתמש, לחשבון שירות או לקבוצה
בתהליך הזה מוסיפים מדיניות IAM שמקושרת לפרויקט ספציפי, בהינתן מזהה הפרויקט והקישור. פקודת הקישור מורכבת מחבר, תפקיד ותנאי אופציונלי.
שם המשתמש במסד הנתונים חייב להיות כתובת האימייל של משתמש IAM, למשל example-user@example.com. היא חייבת להיות באותיות קטנות בלבד ולהיות מוקפת במירכאות
כי היא מכילה תווים מיוחדים (@ ו-.).
המסוף
-
נכנסים לדף Service accounts במסוף Google Cloud .
- לוחצים על הוספה.
- בשדה New members, מזינים כתובת אימייל. אפשר להוסיף משתמשים פרטיים, חשבונות שירות או קבוצות כחברים, אבל לכל פרויקט חייב להיות לפחות חשבון משתמש אחד כחבר.
- בקטע Role, עוברים אל Cloud SQL ובוחרים באפשרות Cloud SQL Instance User.
- אופציונלי: אם רוצים להתחבר באמצעות שרת proxy ל-Cloud SQL Auth או באמצעות מחברי שפות של 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
אם רוצים להתחבר באמצעות שרת proxy ל-Cloud SQL Auth או באמצעות מחברים של שפות ל-Cloud SQL,
מריצים שוב את הפקודה
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
אם רוצים להתחבר באמצעות שרת proxy ל-Cloud SQL Auth או באמצעות מחברים של שפות ל-Cloud SQL,
מריצים שוב את הפקודה
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 Instance User (משתמש במופע Cloud SQL) ויכולים להתחבר למופעים בפרויקט הזה.
אם רוצים להתחבר באמצעות שרת proxy ל-Cloud SQL Auth או באמצעות מחברים של שפות ל-Cloud SQL,
מריצים שוב את הפקודה
gcloud projects add-iam-policy-binding
עם הדגל --role=roles/cloudsql.client
Terraform
כדי להוסיף את קשירת המדיניות הנדרשת למשתמש IAM ולחשבונות השירות, משתמשים במשאב Terraform.
החלה של השינויים
כדי להחיל את הגדרות Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
מחיקת השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, מגדירים בקובץ התצורה של Terraform את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
Terraform
כדי להוסיף את קשירת המדיניות הנדרשת למשתמש IAM ולחשבונות השירות, משתמשים במשאב Terraform.
החלה של השינויים
כדי להחיל את הגדרות Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-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.iam.gserviceaccount.com" "group:example-group@example.com" ] } { "role": "roles/cloudsql.client", "members": [ "user:example-user@example.com" "serviceAccount:service1@sql.iam.gserviceaccount.com" ] }
הוספת משתמש IAM או חשבון שירות למופע Cloud SQL
כדי לגשת למסדי נתונים, צריך ליצור חשבון משתמש חדש לכל משתמש IAM או חשבון שירות שמוסיפים למכונה ב-Cloud SQL. אם מוסיפים קבוצת IAM, לא צריך ליצור חשבון משתמש לכל חבר בקבוצה.
שם המשתמש במסד הנתונים צריך להיות כתובת האימייל של משתמש IAM, באותיות קטנות בלבד.
לדוגמה, example-user@example.com.
כשמשתמשים בפקודות REST, צריך להוסיף מרכאות לשם המשתמש כי הוא מכיל תווים מיוחדים (@ ו-.). חשבונות שירות משתמשים בפורמט service-account-name@project-id.iam.gserviceaccount.com.
כדי להוסיף משתמש IAM או חשבון שירות, מוסיפים חשבון משתמש חדש ובוחרים ב-IAM כשיטת האימות:
המסוף
.-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, בוחרים באפשרות משתמשים.
- לוחצים על הוספת חשבון משתמש. תיפתח הכרטיסייה הוספת חשבון משתמש למופע instance_name.
- לוחצים על לחצן הבחירה Cloud IAM.
- מוסיפים את כתובת האימייל של המשתמש או חשבון השירות שרוצים להוסיף בשדה Principal.
- לוחצים על הוספה. המשתמש או חשבון השירות מופיעים עכשיו ברשימת חשבונות המשתמשים.
אם למשתמש לא מוקצה תפקיד
cloudsql.instanceUserIAM אחרי יצירת חשבון המשתמש, הסמל
מופיע לצד שם המשתמש.כדי לתת למשתמש הרשאות להתחבר, לוחצים על הסמל ואז בוחרים באפשרות הוספת תפקיד IAM. אם הסמל כבר לא מופיע, אז לחשבון המשתמש מוקצה תפקיד 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 בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-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.
בכל רגע נתון יכולות להיות עד 200 קבוצות IAM במופע Cloud SQL. קבוצות לא פעילות נכללות במגבלה הזו.
שמות של קבוצות IAM מוגבלים באורך שלהם כמו מזהים של PostgreSQL, והם יכולים להכיל עד 63 תווים.
אם יש לכם קבוצת IAM עם שם שאורכו חורג מהמגבלה של אורך שם המשתמש במנוע מסד נתונים, אתם עדיין יכולים להשתמש בה לאימות קבוצת IAM. לשם כך, צריך להוסיף אותה כקבוצת צאצא לקבוצת IAM אב, שהשם שלה עומד במגבלת האורך. כדי להשתמש בקבוצה המקוננת, צריך להוסיף את קבוצת ה-IAM הראשית למופע.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, בוחרים באפשרות משתמשים.
- לוחצים על הוספת חשבון משתמש. תיפתח הכרטיסייה הוספת חשבון משתמש למופע instance_name.
- לוחצים על לחצן הבחירה Cloud IAM.
- בשדה Principal, מוסיפים את כתובת האימייל של הקבוצה שרוצים להוסיף.
- לוחצים על הוספה. הקבוצה מופיעה עכשיו ברשימת המשתמשים.
אם לקבוצה לא מוקצה תפקיד IAM
cloudsql.instanceUserאחרי יצירת חשבון המשתמש,
מופיע סמל לצד הקבוצה.כדי לתת לחברי הקבוצה הרשאות כניסה, לוחצים על הסמל ואז בוחרים באפשרות Add IAM role (הוספת תפקיד IAM). אם הסמל לא מופיע יותר, סימן שכל חברי הקבוצה קיבלו את התפקיד שמעניק הרשאת כניסה.
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 בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-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 ב-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 בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-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, אפשר לעיין במאמר בנושא תפקידים במסד נתונים.
אי אפשר להקצות אף אחד מתפקידי המערכת, למעט תפקיד מסד הנתונים cloudsqlsuperuser, למשתמש IAM קיים.
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 במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, בוחרים באפשרות משתמשים. בדף מוצגת רשימה של משתמשי 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
בדוגמה הבאה נעשה שימוש בשיטה 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. 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.
REST v1beta4
בדוגמה הבאה נעשה שימוש בשיטה 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 במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, בוחרים באפשרות משתמשים.
- לוחצים על לצד המשתמש שרוצים להסיר.
- בוחרים באפשרות הסרה. הפעולה הזו תבטל את הגישה רק למופע הזה.
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
בדוגמה הבאה נעשה שימוש בשיטה 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
בדוגמה הבאה נעשה שימוש בשיטה 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, צריך להסיר את החברות שלו מקבוצות ה-IAM הרלוונטיות ב-Cloud Identity. אחרי שמשתמשים בקבוצת IAM איבדו את החברות בכל הקבוצות הרלוונטיות ב-Cloud Identity, הם יוסרו מהמופע ב-Cloud SQL באופן אוטומטי. החריג היחיד להסרה הזו הוא משתמשים בקבוצה שהם הבעלים של אובייקטים במסד הנתונים. צריך להסיר את המשתמשים האלה מהקבוצה באופן ידני.
שינויים בחברות בקבוצה, כמו הוספה או הסרה של חבר, נכנסים לתוקף תוך כ-15 דקות. העיכוב בהפצה של 15 דקות מ-Cloud SQL מתרחש במקביל לזמן שנדרש להפצת שינויים ב-IAM.
הסרה ידנית
במקרים שבהם אי אפשר להסיר משתמש מקבוצת IAM באופן אוטומטי, אפשר להסיר אותו באופן ידני. אי אפשר להסיר ידנית משתמש מקבוצת IAM ממופע Cloud SQL באמצעות ה-CLI של gcloud,Google Cloud console, 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 במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בתפריט הניווט של SQL, בוחרים באפשרות משתמשים.
- לוחצים על ליד הקבוצה שרוצים להסיר.
- בוחרים באפשרות הסרה. הפעולה הזו תבטל את הגישה רק למופע הזה.
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, אבל לא מוחקים את קבוצת IAM ממופע Cloud SQL, קבוצת IAM מסומנת כ-INACTIVE ונשארת במופע עד שמסירים את הקבוצה באופן ידני.
אי אפשר להשתמש בקבוצות IAM לא פעילות לאימות של קבוצות IAM. הרשאות למסד נתונים שניתנות לקבוצות לא פעילות לא מועברות לחברים שלהן. קבוצות לא פעילות לא נחשבות כחברות תקפה בקבוצת IAM. משתמשים בקבוצת IAM שלא שייכים ל-IAM פעיל לא יוכלו לעבור אימות באמצעות אימות קבוצת IAM.
אם קבוצת IAM לא פעילה, היא תישאר לא פעילה במכונת Cloud SQL גם אם תיצרו מחדש את הקבוצה ב-IAM וב-Cloud Identity. כדי ליצור מחדש את השם של קבוצת IAM:
יוצרים מחדש את הקבוצה ב-IAM וב-Cloud Identity.
כדי להסיר את הקבוצה הלא פעילה, צריך לפעול לפי ההליך להסרת קבוצת IAM.
כדי להוסיף את הקבוצה בחזרה למופע Cloud SQL, צריך לפעול לפי ההליך להוספת קבוצת IAM.
נותנים הרשאות למסד הנתונים לקבוצת IAM החדשה שנוצרה.
הסרת הרשאות כניסה ל-IAM מקבוצת IAM
אם מבטלים את התפקיד cloudsql.instanceUser מקבוצת IAM, כל החברים בקבוצה מאבדים את היכולת להתחבר לכל מופע Cloud SQL בפרויקט. המשתמשים או חשבונות השירות יכולים להתחבר למופעים רק אם הם חברים בקבוצת IAM אחרת שעדיין יש לה הרשאות להתחברות.
כדי לבטל תפקיד מקבוצה ב-Cloud Identity, ראו ביטול תפקיד יחיד.
הסרת משתמשים מקבוצת IAM
אפשר להסיר מחשבון Cloud Identity חברים בקבוצת IAM, כמו משתמשים או חשבונות שירות.
אחרי שההסרה מתעדכנת ב-IAM, המשתמש לא יכול יותר להתחבר למסד הנתונים, אלא אם הוא קיבל הרשאות להתחברות מקבוצה אחרת או שניתנו לו הרשאות להתחברות באופן ישיר. בנוסף, משתמשים שמוסרים מקבוצה מאבדים את ההרשאות שלהם למסד הנתונים של הקבוצה.
אם משתמש בקבוצת IAM לא שייך לאף קבוצה במופע, Cloud SQL מסיר אותו מהמופע באופן אוטומטי. עם זאת, אם Cloud SQL מזהה שמשתמש בקבוצת IAM הוא הבעלים של אובייקט במופע, Cloud SQL לא מסיר את המשתמש. אדמין צריך להקצות מחדש את הבעלות על האובייקט ולהסיר את המשתמש באופן ידני.
צפייה בפרטי התחברות ביומני ביקורת
אפשר להפעיל יומני ביקורת כדי לתעד כניסות ל-IAM במסד הנתונים. אם יש בעיות בהתחברות, אפשר להשתמש ביומני הביקורת כדי לאבחן את הבעיה.
אחרי ההגדרה, אפשר לצפות ביומני ביקורת של גישה לנתונים של התחברויות מוצלחות באמצעות Logs Explorer.
באימות של קבוצות 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.
בודקים את הודעת השגיאה שקיבלתם. אם בהודעה לא מצוין שהשתמשתם ב'אימות משתמש IAM ב-Cloud SQL' או ב'אימות חשבון שירות IAM ב-Cloud SQL', צריך לוודא שסוג משתמש מסד הנתונים שבו השתמשתם כדי להתחבר הוא CLOUD_IAM_USER או CLOUD_IAM_SERVICE_ACCOUNT.
כדי לבדוק את זה, אפשר להשתמש במסוף Google Cloud או בפקודה 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 במסוף Google Cloud .
אם קיבלתם את השגיאה הבאה:
(gcloud.sql.users.create) HTTPError 400: Invalid request: IAM Group Authentication is disabled.
לפני שתוכלו להשתמש באימות קבוצות IAM, צריך לבצע את עדכון התחזוקה הבא במופע Cloud SQL:
R20240514.00_04 או מאוחר יותר
אתם יכולים להחיל את עדכון התחזוקה על המכונה באמצעות תחזוקה בשירות עצמי. מידע נוסף זמין במאמר בנושא ביצוע תחזוקה בשירות עצמי.
משתמש או חשבון שירות קיימים ב-IAM לא מקבלים בירושה את הרשאות הגישה למסד הנתונים שניתנו לקבוצה שלהם ב-IAM
אם משתמש IAM קיים או חשבון שירות לא מקבלים בירושה את הרשאות מסד הנתונים הנכונות של הקבוצה שלהם, צריך לבצע את השלבים הבאים:
נכנסים לדף IAM במסוף Google Cloud .
מוודאים שהחשבון הוא חבר בקבוצה שנוספה למופע 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.
המאמרים הבאים
- מידע נוסף על אימות מסד נתונים של IAM
- איך מתחברים למסד נתונים של Cloud SQL
- איך מגדירים מופעים לאימות מסד נתונים של IAM