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

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

במכונה חדשה שנוצרה יש מסד נתונים של postgres.

לפני שמתחילים

  1. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Install the gcloud CLI.

  4. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. מוודאים שבחשבון המשתמש שלכם יש את התפקידים "אדמין ב-Cloud SQL" ו"צפייה ב-Compute".

    כניסה לדף IAM

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

מספר המכונות המקסימלי שאפשר להגדיר בפרויקט אחד תלוי בארכיטקטורת הרשת של המכונות האלה:

  • ארכיטקטורת רשת חדשה של SQL: אפשר ליצור עד 1,000 מכונות בכל פרויקט.
  • ארכיטקטורת רשת SQL ישנה: אפשר ליצור עד 100 מכונות בכל פרויקט.
  • שימוש בשתי הארכיטקטורות: המגבלה תהיה בין 100 ל-1,000, בהתאם להתפלגות המכונות בין שתי הארכיטקטורות.

כדי לבקש הגדלה, צריך לשלוח בקשת תמיכה. רפליקות לקריאה נספרות כמכונות.

הגדרת מכונות חדשות לאימות מסד נתונים של IAM

כדי להגדיר מכונה חדשה של Cloud SQL לאימות של מסד נתונים ב-IAM, צריך להפעיל את הדגל cloudsql.iam_authentication. אחרי שמפעילים את הדגל הזה, אפשר להוסיף למכונה של Cloud SQL משתמשים, חשבונות שירות או קבוצות ב-IAM.

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

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. לוחצים על Create Instance.
  3. לוחצים על Choose PostgreSQL.
  4. מזינים שם למזהה המכונה.
  5. אל תכללו מידע רגיש או פרטים אישיים מזהים בשם המכונה, כי הוא גלוי כלפי חוץ. לא צריך לכלול את מזהה הפרויקט בשם המכונה. מזהה הפרויקט נכלל באופן אוטומטי במקומות המתאימים (לדוגמה, בקובצי היומן).
  6. מזינים סיסמה לאדמין שמוגדר כברירת מחדל.
  7. בתפריט Database version, בוחרים גרסת מסד נתונים.
  8. בקטע Choose region and zonal availability, בוחרים את האזור והתחום של המכונה. מקמו את המכונה באותו אזור שבו נמצאים המשאבים שניגשים אליה. אי אפשר לשנות את האזור שבחרתם. בדרך כלל לא צריך לציין אזור.
  9. בקטע Customize your instance, לוחצים על Show Configuration Options ומרחיבים את Flags.
  10. לוחצים על הוספת סימון.
  11. בתפריט בחירת דגל, בוחרים את הדגל של cloudsql.iam_authentication. מוודאים שהערך של הדגל הזה הוא On ולוחצים על Done.
  12. משנים את ההגדרות האחרות של המכונה לפי הצורך. למידע נוסף על ההגדרות, קראו את המאמר הגדרות.
  13. לוחצים על Create Instance.

gcloud

מריצים את הפקודה gcloud sql instances create עם הפרמטר --database-flags שמוגדר לערך cloudsql.iam_authentication=on.

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

  • ‫INSTANCE_NAME: השם של המכונה החדשה.
  • ‫POSTGRES_VERSION: הגרסה של PostgreSQL (למשל POSTGRES_9_6,‏ POSTGRES_10,‏ POSTGRES_11 או POSTGRES_12).
  • ‫NUMBER_OF_CORES: מספר הליבות במכונה.
  • ‫AMOUNT_OF_MEMORY: כמות הזיכרון במכונה. צריך לציין יחידת גודל (למשל, 3072MiB או 9GiB).
  • ‫ZONE: האזור המועדף ב-Compute Engine (למשל us-central1-a או us-central1-b).
  • ‫PASSWORD: יוצרים סיסמה למשתמש ה-root.
gcloud sql instances create INSTANCE_NAME \
--database-version=POSTGRES_VERSION \
--cpu=NUMBER_OF_CORES \
--memory=AMOUNT_OF_MEMORY \
--zone=ZONE_NAME \
--root-password=PASSWORD \
--database-flags=cloudsql.iam_authentication=on

Terraform

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

resource "google_sql_database_instance" "default" {
  name             = "postgres-db-auth-instance-name-test"
  region           = "us-west4"
  database_version = "POSTGRES_14"
  settings {
    tier = "db-custom-2-7680"
    database_flags {
      name  = "cloudsql.iam_authentication"
      value = "on"
    }
  }
}

החלה של השינויים

כך מחילים את ההגדרות של Terraform בפרויקט ב- Cloud de Confiance :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Cloud de Confiance שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Cloud de Confiance כדי להציג את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

למחוק את השינויים

כדי למחוק את השינויים:

  1. כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט deletion_protection לערך false.
    deletion_protection =  "false"
  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:
    terraform apply
  1. כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה:

    terraform destroy

REST v1

אל תכללו מידע רגיש או פרטים אישיים מזהים (PII) בשם המכונה, כי הוא גלוי באופן חיצוני.

לא צריך לכלול את מזהה הפרויקט בשם המכונה. מזהה הפרויקט נכלל באופן אוטומטי במקומות שבהם הוא נדרש (לדוגמה, בקובצי היומן).

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

  • ‫INSTANCE_ID: מזהה המכונה הרצוי
  • ‫REGION: האזור הרצוי, למשל us-east-1
  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION_ID: מזהה המיקום
  • ‫DATABASE_VERSION: מחרוזת של טיפוסים בני מנייה (enum) של גרסת מסד הנתונים. לדוגמה: POSTGRES_12
  • ‫PASSWORD: הסיסמה של משתמש ה-root
  • ‫MACHINE_TYPE: מחרוזת enum של סוג המכונה (רמה), למשל: db-custom-[CPUS]-[MEMORY_MBS]

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
כדי לראות איך בקשת ה-API הבסיסית בארכיטקטורת REST בנויה למשימה הזו, אפשר לעיין ב-APIs Explorer בדף instances:insert.

‫REST v1beta4

אל תכללו מידע רגיש או פרטים אישיים מזהים (PII) בשם המכונה, כי הוא גלוי באופן חיצוני.

לא צריך לכלול את מזהה הפרויקט בשם המכונה. מזהה הפרויקט נכלל באופן אוטומטי במקומות שבהם הוא נדרש (לדוגמה, בקובצי היומן).

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

  • ‫INSTANCE_ID: מזהה המכונה הרצוי
  • ‫REGION: האזור הרצוי, למשל us-east-1
  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION_ID: מזהה המיקום
  • ‫DATABASE_VERSION: מחרוזת של טיפוסים בני מנייה (enum) של גרסת מסד הנתונים. לדוגמה: POSTGRES_12
  • ‫PASSWORD: הסיסמה של משתמש ה-root
  • ‫MACHINE_TYPE: מחרוזת enum של סוג המכונה (רמה), למשל: db-custom-[CPUS]-[MEMORY_MBS]

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
כדי לראות איך בקשת ה-API הבסיסית בארכיטקטורת REST בנויה למשימה הזו, אפשר לעיין ב-APIs Explorer בדף instances:insert.

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

כדי להגדיר מכונה קיימת של Cloud SQL לאימות של מסד נתונים ב-IAM, צריך להפעיל את הדגל cloudsql.iam_authentication. אחרי שמפעילים את הדגל הזה, אפשר להוסיף למכונה של Cloud SQL משתמשים, חשבונות שירות או קבוצות ב-IAM.

כדי להגדיר מכונה קיימת של Cloud SQL לשימוש באימות של מסד נתונים ב-IAM:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. לוחצים על Edit.
  4. בקטע Customize your instance, מרחיבים את Flags.
  5. לוחצים על הוספת סימון.
  6. בתפריט בחירת דגל, בוחרים את הדגל של cloudsql.iam_authentication. מוודאים שהערך של הדגל הזה הוא On ולוחצים על Done.
  7. משנים את ההגדרות האחרות של המכונה לפי הצורך. למידע נוסף על ההגדרות, קראו את המאמר הגדרות.
  8. לוחצים על Save.

gcloud

במאמר התקנת ה-CLI של gcloud מוסבר איך מתקינים את ה-CLI של gcloud ומתחילים להשתמש בו. למידע על הפעלת Cloud Shell, קראו את המאמר שימוש ב-Cloud Shell.

כדי לבצע את הפעולה הזו, משתמשים ב- gcloud sql instances patch.

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

  • ‫INSTANCE_NAME: השם של המכונה החדשה.
gcloud sql instances patch INSTANCE_NAME \
--database-flags=cloudsql.iam_authentication=on

הפעולה הזו מאפסת את כל ההגדרות הקיימות האחרות של דגלים לניהול מסדי נתונים. איך מגדירים דגלים לניהול מסדי נתונים


REST v1

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

  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION_ID: מזהה המיקום
  • ‫INSTANCE_ID: מזהה המכונה הרצוי
  • ‫REGION: האזור הרצוי
  • ‫DATABASE_VERSION: מחרוזת של טיפוסים בני מנייה (enum) של גרסת מסד הנתונים. לדוגמה: POSTGRES_12
  • ‫PASSWORD: הסיסמה של משתמש ה-root
  • ‫MACHINE_TYPE: מחרוזת enum של סוג המכונה (רמה), למשל: db-custom-[CPUS]-[MEMORY_MBS]

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "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: מזהה הפרויקט
  • ‫LOCATION_ID: מזהה המיקום
  • ‫INSTANCE_ID: מזהה המכונה הרצוי
  • ‫REGION: האזור הרצוי
  • ‫DATABASE_VERSION: מחרוזת של טיפוסים בני מנייה (enum) של גרסת מסד הנתונים. לדוגמה: POSTGRES_12
  • ‫PASSWORD: הסיסמה של משתמש ה-root
  • ‫MACHINE_TYPE: מחרוזת enum של סוג המכונה (רמה), למשל: db-custom-[CPUS]-[MEMORY_MBS]

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

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