הגדרה של מופעים חדשים וקיימים לאימות מסד נתונים של 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. מתקינים את ה-CLI של gcloud.

  4. הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

    איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

  5. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

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

    כניסה לדף IAM

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

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

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

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

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

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

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

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. לוחצים על Create Instance.
  3. לוחצים על Choose PostgreSQL (בחירת 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. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Cloud de Confiance

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

    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"
}
כדי לראות איך בקשת ה-REST API הבסיסית מורכבת עבור המשימה הזו, אפשר לעיין בדף 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"
}
כדי לראות איך בקשת ה-REST API הבסיסית מורכבת עבור המשימה הזו, אפשר לעיין בדף APIs Explorer בנושא instances:insert.

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

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

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

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  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"
}

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