הרשאה באמצעות רשתות מורשות

בדף הזה מוסבר איך להשתמש בהגדרות של רשתות מורשות כדי להתחבר למכונות Cloud SQL שמשתמשות בכתובות IP.

הגדרת רשתות מורשות

צריך להגדיר את כתובת ה-IP או את טווח הכתובות של אפליקציית הלקוח כ-authorized networks בתנאים הבאים:

  • אפליקציית הלקוח מתחברת ישירות למכונה של Cloud SQL בכתובת ה-IP הציבורית שלה.
  • אפליקציית הלקוח מתחברת ישירות למכונה של Cloud SQL בכתובת ה-IP הפרטית שלה, וכתובת ה-IP של הלקוח היא כתובת שאינה RFC 1918.

כתובת ה-IP יכולה להיות נקודת קצה אחת או טווח בסימון CIDR.

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. בתפריט הניווט של SQL, לוחצים על Connections.
  4. נכנסים לכרטיסייה Networking.
  5. מסמנים את התיבה Public IP.
  6. בקטע Authorized networks, מרחיבים את New IP range.
  7. בשדה Name, מזינים שם ל-New IP range.
  8. בשדה IP range, מזינים את כתובת ה-IPv4 הציבורית או את טווח הכתובות שמהם רוצים לאפשר חיבורים.
    לחלופין, לוחצים על Use My IP כדי לאפשר ל-Cloud SQL לאכלס את כתובת ה-IPv4 של מכונת הלקוח שממנה אתם ניגשים אל Google Cloud.
    האפשרות Use my IP לא זמינה ללקוחות שמשתמשים בכתובות IPv6.

    בטווח הכתובות, צריך להשתמש בסימון CIDR תקין (לדוגמה, 10.10.10.0/24).

  9. לוחצים על סיום.
  10. לוחצים על Save.

gcloud

הגדרת רשתות מורשות מחליפה את הרשימה הקיימת של הרשתות המורשות.

gcloud sql instances patch INSTANCE_ID \
--authorized-networks=NETWORK_RANGE_1,NETWORK_RANGE_2...
    

Terraform

כדי להגדיר רשתות מורשות, משתמשים במשאב של Terraform.

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-with-authorized-network"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    ip_configuration {
      authorized_networks {
        name            = "Network Name"
        value           = "192.0.2.0/24"
        expiration_time = "3021-11-15T16:19:00.094Z"
      }
    }
  }
}

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

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

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של 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. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

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

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

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

    terraform destroy

REST v1

הגדרת רשתות מורשות מחליפה את הרשימה הקיימת של הרשתות המורשות.

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה
  • ‫network_range_1 כתובת IP או טווח כתובות IP מורשים
  • network_range_2 עוד כתובת IP או טווח כתובות IP מורשים

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

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings":
  {
    "ipConfiguration":
    {
      "authorizedNetworks":
        [{"value": "network_range_1"}, {"value": "network_range_2"}]
    }
  }
}

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

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

‫REST v1beta4

הגדרת רשתות מורשות מחליפה את הרשימה הקיימת של הרשתות המורשות.

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

  • ‫project-id: מזהה הפרויקט
  • ‫instance-id: מזהה המכונה
  • ‫network_range_1 כתובת IP או טווח כתובות IP מורשים
  • network_range_2 עוד כתובת IP או טווח כתובות IP מורשים

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

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings":
  {
    "ipConfiguration":
    {
      "authorizedNetworks":
        [{"value": "network_range_1"}, {"value": "network_range_2"}]
    }
  }
}

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

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

מגבלות

  • אי אפשר להוסיף טווחים מסוימים של כתובות IP כרשתות מורשות.
    טווח כתובות הערות
    10.0.0.0/8 טווח כתובות RFC 1918. ‫Cloud SQL כולל אותן באופן אוטומטי ומרומז ברשתות המורשות.
    172.16.0.0/12 טווח כתובות RFC 1918. ‫Cloud SQL כולל אותן באופן אוטומטי ומרומז ברשתות המורשות.
    192.168.0.0/16 טווח כתובות RFC 1918. ‫Cloud SQL כולל אותן באופן אוטומטי ומרומז ברשתות המורשות.
  • ב-Cloud SQL אין תמיכה ברשתות מאושרות של IPv6. אם במכונה של הלקוח משתמשים בפרוטוקול IPv6, הלחצן האופציונלי Use my IP לא זמין בכרטיסייה Networking במסוף Google Cloud .
  • אם אתם משתמשים ב-VPN או בשרת proxy, האפשרות Use my IP לא תציג את כתובת ה-IP האמיתית של מכונת הלקוח. זה מכוון.

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