הגדרת כתובת IP ציבורית

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

מבוא

כדי להגדיר למכונה של Cloud SQL כתובת IPv4 ציבורית, ולקבל חיבורים מכתובות IP ספציפיות או מטווח של כתובות, צריך להוסיף למכונה כתובות מורשות.

אי אפשר לציין רשת פרטית (לדוגמה, 10.x.x.x) כרשת מורשית.

כתובות IP ציבוריות למכונות PostgreSQL:

  • ‫IPv6: מכונות לא תומכות ב-IPv6.
  • ‫IPv4: למכונות מוקצית באופן אוטומטי כתובת IPv4 סטטית. בכל פעם שהמכונה מושבתת, יש חיוב קטן על כתובת ה-IP.

כדי לקבל עזרה בחיבור לקוח ניהול למכונה באמצעות קישור דרך IP, קראו את המאמר חיבור לקוח psql באמצעות כתובות IP.

אם מגדירים את המכונה כך שתקבל חיבורים באמצעות כתובת ה-IP הציבורית שלה, צריך גם להגדיר אותה כך שתשתמש ב-SSL כדי לשמור על אבטחת הנתונים. מידע נוסף זמין במאמר הגדרת SSL למכונות.

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

הפעלת כתובת IP ציבורית והוספת כתובת מורשית או טווח כתובות מורשה

כשמפעילים כתובת IP ציבורית למכונה, Cloud SQL מגדיר את המכונה עם כתובת IPv4 ציבורית וסטטית. אחרי שמפעילים כתובת IP ציבורית, צריך להגדיר הרשאה לחיבורים למסד הנתונים. למידע נוסף, ראו אפשרויות הרשאה.

אם אתם משתמשים ברשות אישורים (CA) משותפת או ברשות אישורים בניהול הלקוח בתור serverCaMode של המכונה, תצטרכו להפעיל מחדש את המכונה כשתפעילו את כתובת ה-IP הציבורית שלה. מידע נוסף על הגדרת מצב CA של השרת זמין במאמר רשויות אישורים (CA).

כדי להפעיל כתובת IP ציבורית ולהוסיף כתובת מורשית:

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. בתפריט הניווט של SQL, לוחצים על Connections.
  4. נכנסים לכרטיסייה Networking.
  5. מסמנים את התיבה Public IP.
  6. לוחצים על הוספת רשת.
  7. בשדה Name, נותנים שם לרשת (אופציונלי).
  8. בשדה Network, מזינים את כתובת ה-IP או את טווח הכתובות שמהם רוצים לאפשר חיבורים.

    צריך להשתמש בסימון CIDR.

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

gcloud

  1. אם עדיין לא עשיתם את זה, מוסיפים כתובת IPv4 למכונה:
    gcloud sql instances patch INSTANCE_NAME\
    --assign-ip
  2. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:
    gcloud sql instances describe INSTANCE_NAME

    מחפשים את הרשומות של authorizedNetwork בקטע ipConfiguration, ורושמים את הכתובות המורשות שרוצים לשמור.

  3. מעדכנים את רשימת הרשתות המורשות, כולל כל הכתובות שרוצים לכלול.
    gcloud sql instances patch INSTANCE_NAME \
    --authorized-networks=IP_ADDR1,IP_ADDR2...

    צריך להשתמש בסימון CIDR.

  4. מאשרים את השינויים:
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. מעדכנים את המכונה, כולל כל הכתובות שרוצים להגדיר במכונה:

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

    • ‫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 שדומה לזו:

    צריך להשתמש בסימון CIDR.

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

Terraform

כדי להפעיל כתובת IP ציבורית ולהוסיף כתובת מורשית או טווח כתובות מורשה, משתמשים במשאב של Terraform.

resource "google_sql_database_instance" "postgres_public_ip_instance_name" {
  database_version = "POSTGRES_14"
  name             = "postgres-public-ip-instance-name"
  region           = "asia-southeast2"
  settings {
    availability_type = "ZONAL"
    ip_configuration {
      # Add optional authorized networks
      # Update to match the customer's networks
      authorized_networks {
        name  = "test-net-3"
        value = "203.0.113.0/24"
      }
      # Enable public IP
      ipv4_enabled = true
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

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

כך מחילים את ההגדרות של 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 v1beta4

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. מעדכנים את המכונה, כולל כל הכתובות שרוצים להגדיר במכונה:

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

    • ‫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 שדומה לזו:

    צריך להשתמש בסימון CIDR.

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

הסרה של כתובת או טווח כתובות מורשים

כדי להסיר כתובת מורשית:

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. בתפריט הניווט של SQL, לוחצים על Connections (חיבורים).
  4. לוחצים על סמל המחיקה מחק. ליד הכתובת שרוצים למחוק.
  5. לוחצים על Save כדי לעדכן את המכונה.

gcloud

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:
    gcloud sql instances describe INSTANCE_NAME

    מחפשים את הרשומות של authorizedNetwork בקטע ipConfiguration, ורושמים את הכתובות המורשות שרוצים לשמור.

  2. מעדכנים את רשימת הרשתות המורשות ומסירים את הכתובות שרוצים להסיר.
    gcloud sql instances patch INSTANCE_NAME \
    --authorized-networks=IP_ADDR1,IP_ADDR2...
  3. מאשרים את השינויים:
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

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

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

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

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

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

    תוכן בקשת JSON:

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

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

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

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address: כתובת ה-IP בפורמט CIDR
    • ‫ip-address-name: השם של כתובת ה-IP
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

‫REST v1beta4

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

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

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫network_range_1 כתובת ה-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"}]
        }
      }
    }
    
    

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

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

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address: כתובת ה-IP בפורמט CIDR
    • ‫ip-address-name: השם של כתובת ה-IP
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

הגדרת מכונה כך שתדחה את כל החיבורים של כתובות IP ציבוריות

כדי להגדיר מכונה כך שתדחה את כל החיבורים של כתובות IP ציבוריות:

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. בתפריט הניווט של SQL, לוחצים על Connections (חיבורים).
  4. לוחצים על סמל המחיקה מחק. בכל הכתובות המורשות.
  5. לוחצים על Save כדי לעדכן את המכונה.

gcloud

  1. מנקים את רשימת הכתובות המורשות:
    gcloud sql instances patch INSTANCE_NAME \
    --clear-authorized-networks
  2. מאשרים את השינויים:
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. מעדכנים את המכונה עם רשימת כתובות ריקה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה

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

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

    תוכן בקשת JSON:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks": []
        }
      }
    }
    

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

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

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

‫REST v1beta4

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. מעדכנים את המכונה עם רשימת כתובות ריקה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה

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

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

    תוכן בקשת JSON:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks": []
        }
      }
    }
    

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

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

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

השבתה של כתובת IP ציבורית

אפשר להשבית את כתובת ה-IP הציבורית, אבל רק אם המכונה מוגדרת גם לשימוש בכתובת IP פרטית. כדי להפעיל כתובת IP פרטית, קראו את המאמר הגדרת מכונה קיימת לשימוש בכתובת IP פרטית.

אם אתם משתמשים ברשות אישורים (CA) משותפת או ברשות אישורים בניהול הלקוח בתור serverCaMode של המכונה, תצטרכו להפעיל מחדש את המכונה כשתשביתו את כתובת ה-IP הציבורית שלה. מידע נוסף על הגדרת מצב CA של השרת זמין במאמר רשויות אישורים (CA).

כדי להשבית את כתובת ה-IP הציבורית:

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. בתפריט הניווט של SQL, לוחצים על Connections (חיבורים).
  4. מבטלים את הסימון של התיבה Public IP.
  5. לוחצים על Save כדי לעדכן את המכונה.

gcloud

  1. מעדכנים את המכונה:
    gcloud sql instances patch INSTANCE_NAME \
    --no-assign-ip
  2. מאשרים את השינויים:
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. מעדכנים את המכונה:

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

    • ‫PROJECT_ID: מזהה הפרויקט
    • ‫INSTANCE_ID: מזהה המכונה
    • ‫VPC_NETWORK_NAME: מציינים את השם של רשת הענן הפרטי הווירטואלי (VPC) שבה רוצים להשתמש במכונה הזו. הגישה לשירותים פרטיים כבר צריכה להיות מוגדרת ברשת.
    • RANGE_NAME: אופציונלי. אם מציינים את השדה, הוא מגדיר שם לטווח שמוקצה לו טווח כתובות IP. שם הטווח חייב לעמוד בדרישות של RFC-1035 ולהכיל 1-63 תווים.
    • AUTHORIZED_NETWORKS: בקישורים דרך IP ציבורי, מציינים את הקישורים מרשתות מורשות שיכולות להתחבר למכונה.

    בפרמטר ipv4Enabled, מגדירים את הערך true אם משתמשים בכתובת IP ציבורית למכונה, או את הערך false אם למכונה יש כתובת IP פרטית.

    אם מגדירים את הפרמטר enablePrivatePathForGoogleCloudServices לערך true, מאפשרים לשירותי Cloud de Confiance by S3NS אחרים, כמו BigQuery, לגשת לנתונים ב-Cloud SQL ולבצע שאילתות על הנתונים האלה דרך חיבור IP פרטי. אם מגדירים את הפרמטר הזה לערך false, שירותים אחרים של Cloud de Confiance by S3NS לא יכולים לגשת לנתונים ב-Cloud SQL דרך חיבור IP פרטי.

    אתם יכולים להשתמש בשדה sqlNetworkArchitecture כדי לאכוף את השימוש בארכיטקטורת הרשת החדשה במכונה בזמן היצירה, גם אם הפרויקט לא שודרג באופן מלא. פרטים נוספים על ארכיטקטורת הרשת החדשה וההשלכות שלה מופיעים במאמרים שדרוג מכונה לארכיטקטורת הרשת החדשה והקצאת טווח של כתובות IP.

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

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

    תוכן בקשת JSON:

    {
      "name": "INSTANCE_ID",
      "region": "region",
      "databaseVersion": "database-version",
      "settings": {
        "tier": "machine-type",
        "ipConfiguration": {
          "ipv4Enabled": false,
          "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
          "allocatedIpRange": "RANGE_NAME"
          "authorizedNetworks": [AUTHORIZED_NETWORKS],
          
          "enablePrivatePathForGoogleCloudServices": true
          
        }
      },
      "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
    }
    

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

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

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

‫REST v1beta4

  1. כדי להציג את כל הכתובות המורשות הקיימות, מתארים את המכונה:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫ip-address1: טופס ה-CIDR של כתובת ה-IP הראשונה
    • ‫ip-address-name1: השם של כתובת ה-IP הראשונה
    • ‫ip-address2: טופס ה-CIDR של כתובת ה-IP השנייה
    • ‫ip-address-name2: השם של כתובת ה-IP השנייה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. מעדכנים את המכונה:

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

    • ‫PROJECT_ID: מזהה הפרויקט
    • ‫INSTANCE_ID: מזהה המכונה
    • ‫VPC_NETWORK_NAME: מציינים את השם של רשת הענן הפרטי הווירטואלי (VPC) שבה רוצים להשתמש במכונה הזו. הגישה לשירותים פרטיים כבר צריכה להיות מוגדרת ברשת.
    • RANGE_NAME: אופציונלי. אם מציינים את השדה, הוא מגדיר שם לטווח שמוקצה לו טווח כתובות IP. שם הטווח חייב לעמוד בדרישות של RFC-1035 ולהכיל 1-63 תווים.
    • AUTHORIZED_NETWORKS: בקישורים דרך IP ציבורי, מציינים את הקישורים מרשתות מורשות שיכולות להתחבר למכונה.

    בפרמטר ipv4Enabled, מגדירים את הערך true אם משתמשים בכתובת IP ציבורית למכונה, או את הערך false אם למכונה יש כתובת IP פרטית.

    אם מגדירים את הפרמטר enablePrivatePathForGoogleCloudServices לערך true, מאפשרים לשירותי Cloud de Confiance by S3NS אחרים, כמו BigQuery, לגשת לנתונים ב-Cloud SQL ולבצע שאילתות על הנתונים האלה דרך חיבור IP פרטי. אם מגדירים את הפרמטר הזה לערך false, שירותים אחרים של Cloud de Confiance by S3NS לא יכולים לגשת לנתונים ב-Cloud SQL דרך חיבור IP פרטי.

    אתם יכולים להשתמש בשדה sqlNetworkArchitecture כדי לאכוף את השימוש בארכיטקטורת הרשת החדשה במכונה בזמן היצירה, גם אם הפרויקט לא שודרג באופן מלא. פרטים נוספים על ארכיטקטורת הרשת החדשה וההשלכות שלה מופיעים במאמרים שדרוג מכונה לארכיטקטורת הרשת החדשה והקצאת טווח של כתובות IP.

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

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

    תוכן בקשת JSON:

    {
      "name": "INSTANCE_ID",
      "region": "region",
      "databaseVersion": "database-version",
      "settings": {
        "tier": "machine-type",
        "ipConfiguration": {
          "ipv4Enabled": false,
          "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
          "allocatedIpRange": "RANGE_NAME"
          "authorizedNetworks": [AUTHORIZED_NETWORKS],
          
          "enablePrivatePathForGoogleCloudServices": true
          
        }
      },
      "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
    }
    

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

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

  3. מאשרים את השינויים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫machine-type סוג המכונה של המכונה הווירטואלית
    • ‫zone האזור של המכונה

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

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

פתרון בעיות

שגיאה פתרון בעיות
Aborted connection. הבעיה יכולה להיות:
  • חוסר יציבות ברשת.
  • אין תגובה לפקודות TCP keep-alive (הלקוח או השרת לא מגיבים, אולי בגלל עומס יתר)
  • משך החיים של החיבור למנוע של מסד הנתונים חרג מהמגבלה, והשרת מסיים את החיבור.

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

כדי לנסות להתחבר מחדש, מומלץ להשתמש בשיטות הבאות:

  1. השהיה מעריכית לפני ניסיון חוזר (exponential backoff). להגדיל את מרווח הזמן בין כל ניסיון חוזר, באופן אקספוננציאלי.
  2. מוסיפים גם השהיה אקראית.

שילוב של השיטות האלה עוזר לצמצם את ההאטה.

הזמן הקצוב לתפוגה של החיבור או שגיאת חיבור כללית כשמשתמשים בכתובת IP פרטית או בקישור בין רשתות VPC שכנות (peering).

ניסיונות החיבור נכשלים עם שגיאות כלליות של זמן קצוב לתפוגה או שגיאות חיבור ללא פרטי אבחון.

שלבים לפתרון בעיות:

  1. מריצים בדיקת קישוריות של Network Intelligence Center בין הלקוח במקור לבין כתובת ה-IP הפרטית של Cloud SQL ביציאה של מסד הנתונים (3306 ל-MySQL,‏ 5432 ל-PostgreSQL או 1433 ל-SQL Server). הבדיקה עוקבת אחרי נתיב החבילה ומזהה אם תעבורת הנתונים נדחתה בגלל כללים של חומת האש, נתיבים חסרים או הגדרות שגויות של קישור Peering.
  2. מוודאים שהסטטוס של החיבור בין רשתות VPC מקבילות הוא ACTIVE.
  3. מוודאים שכללי חומת האש ברשת ה-VPC מאפשרים תעבורת נתונים נכנסת (ingress) ביציאה של מסד הנתונים.
  4. אם אתם משתמשים בטווחי כתובות שהם לא RFC 1918, ודאו שעדכנתם את הגדרת ה-peering כדי לייצא מסלולים של רשתות משנה עם כתובת IP ציבורית.

לפרטים נוספים ולפקודות אבחון של gcloud, קראו את המאמר אבחון כשלים ברשת VPC ובקישור דרך IP פרטי.

הודעת שגיאה: Login failed for user "" יכול להיות שתקבלו את שגיאת ההתחברות הזו במהלך אימות Microsoft Entra ID. כדי לפתור את הבעיה, ודאו שקיים פרטי כניסה ל-SQL Server למשתמש הזה ב-Microsoft Entra ID.
בעיות בחיבור לרשת עם מכונות של כתובות IP פרטיות יכול להיות שתיתקלו בחלק מהבעיות הבאות במהלך הגדרת השילוב:
  • פעולות איטיות ליצירת פרטי כניסה ל-Microsoft Entra ID
  • לא ניתן ליצור פרטי התחברות ל-Microsoft Entra ID
  • לא ניתן להתחבר למכונה באמצעות אימות של Microsoft Entra ID

למידע נוסף על פתרון הבעיות האלה, קראו את המאמר פתרון בעיות בשילוב עם Microsoft Entra ID.

Certificate verify failed.

התוקף של אישורי הלקוח פג או שהנתיב לאישורים שגוי.

ליצור מחדש את האישורים.

יצירת חיבור איטי או זמן קצוב לתפוגה של חיבור כשמשתמשים באימות מסד נתונים של IAM.

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

הסיבה: המכונה משתמשת במכונה עם ליבה משותפת (db-f1-micro או db-g1-small). כשמגבילים את המעבד (CPU), האימות של מסד הנתונים ב-IAM נמשך יותר זמן מאשר אימות מובנה באמצעות סיסמה, כי הוא דורש יותר משאבי מחשוב.

פתרון:

מידע נוסף זמין במאמר ביצועים במכונות עם ליבת מעבד משותפת.

FATAL: database 'user' does not exist. ‫gcloud sql connect --user פועל רק עם משתמש ברירת המחדל של postgres.

מתחברים עם משתמש ברירת המחדל ואז מחליפים משתמש.

אתם רוצים לדעת מי מחובר. מתחברים למסד הנתונים ומריצים את הפקודה הבאה:

SELECT datname,
usename,
application_name as appname,
client_addr,
state,
now() - backend_start as conn_age,
now() - state_change as last_activity_age
FROM pg_stat_activity
WHERE backend_type = 'client backend'
ORDER BY 6 DESC
LIMIT 20
   

Hostname/IP does not match certificate's altnames: Host: localhost. is not in the cert's altnames.

כתובת המארח לא תואמת לכתובת בשמות החלופיים של אישור השרת.

אם אתם משתמשים ב-Node.js עם verify-full או המקבילה שלה, השתמשו בשם ה-DNS מאישור השרת של המכונה בשביל הפרמטר servername. הקובץ server-ca.pem שמורידים מ-Cloud SQL הוא אישור ה-CA של השרת, והוא לא מכיל את שם ה-DNS.

כדי לאחזר את אישור השרת של המכונה ולמצוא את שם ה-DNS באמצעות openssl, מריצים את הפקודה הבאה:

echo | openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432 | openssl x509 -noout -text | grep 'DNS:'

מחליפים את INSTANCE_IP_ADDRESS בכתובת ה-IP של המכונה ב-Cloud SQL.

אחר כך מגדירים את הפרמטר servername לשם ה-DNS מהפלט של DNS::

 ssl: {
  rejectUnauthorized: true,
  ca: fs.readFileSync("/path/to/server/CA"),
  servername: 'N-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx.us-central1.sql.goog'
}

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