הגדרת גישה לשירותים פרטיים

בדף הזה מוסבר איך להגדיר גישה לשירותים פרטיים ברשת ה-VPC.

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

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

‫Cloud SQL דורש גישה לשירותים פרטיים לכל רשת VPC שמשמשת לחיבורים עם כתובות IP פרטיות.

כדי לקבל את ההרשאות שנדרשות לניהול חיבור של גישה לשירותים פרטיים, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין רשת של Compute (roles/compute.networkAdmin) בפרויקט שמארח את מכונת Cloud SQL. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

כדי לנהל חיבור של גישה לשירותים פרטיים, נדרשות ההרשאות הבאות:

  • compute.addresses.create
  • compute.addresses.list
  • compute.globalAddresses.create
  • compute.globalAddresses.createInternal
  • compute.globalAddresses.list
  • compute.networks.list
  • compute.networks.use
  • servicenetworking.services.addPeering
  • serviceusage.services.list

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

הגדרת גישה לשירותים פרטיים ב-Cloud SQL

תהליך ההגדרה של הגישה לשירותים פרטיים כולל שני חלקים:

  • בוחרים טווח כתובות IP קיים או מקצים טווח חדש.

    אפשר גם לאפשר ל-Google להקצות את הטווח בשבילכם. במקרה כזה, Google תקצה באופן אוטומטי טווח כתובות IP של prefix-length /24 ותשתמש בשם default-ip-range.

    אם אתם מתכוונים ליצור מופעים בכמה אזורים או לסוגים שונים של מסדי נתונים, אתם צריכים להקצות טווח של כתובות IP בגודל ‎ /24 לפחות לכל אזור או סוג מסד נתונים. כולל אפליקציות אחרות כמו Filestore או Memorystore. כדי להשתמש באזור חדש או בסוג חדש של מסד נתונים, צריך שיהיה ל-Cloud SQL טווח /24 פנוי.

  • יצירת חיבור פרטי מרשת ה-VPC לרשת הבסיסית של הבעלים של שירות מנוהל.

הקצאת טווח כתובות IP

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. בוחרים את רשת ה-VPC שרוצים להשתמש בה.
  3. לוחצים על הכרטיסייה גישה לשירותים פרטיים.
  4. בוחרים בכרטיסייה Allocated IP ranges for services (הקצאת טווחי כתובות IP לשירותים).
  5. לוחצים על הקצאת טווח כתובות IP.
  6. בשדה שם של הטווח שהוקצה, מציינים google-managed-services-VPC_NETWORK_NAME, כאשר VPC_NETWORK_NAME הוא השם של רשת ה-VPC שאליה מתחברים (לדוגמה, google-managed-services-default). השדה תיאור הוא אופציונלי.
  7. בוחרים באפשרות Custom (מותאם אישית) ומזינים את טווח כתובות ה-IP להקצאה בסימון CIDR.
  8. לוחצים על הקצאה כדי ליצור את הטווח המוקצה.

gcloud

מבצעים אחת מהפעולות הבאות:

  • כדי לציין טווח כתובות ואורך קידומת (מסכה של רשת משנה), משתמשים בדגלים addresses ו-prefix-length. לדוגמה, כדי להקצות את בלוק ה-CIDR‏ 192.168.0.0/16, מציינים 192.168.0.0 לכתובת ו-16 לאורך הקידומת.
  •         gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \
            --global \
            --purpose=VPC_PEERING \
            --addresses=192.168.0.0 \
            --prefix-length=16 \
            --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
            
  • כדי לציין רק אורך קידומת (מסכה של רשת משנה), משתמשים בדגל prefix-length. כשלא מציינים את טווח הכתובות, Google Cloud בוחר באופן אוטומטי טווח כתובות לא בשימוש ברשת ה-VPC. בדוגמה הבאה נבחר טווח כתובות IP שלא נמצא בשימוש עם אורך קידומת של 16 ביטים.
  •         gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \
            --global \
            --purpose=VPC_PEERING \
            --prefix-length=16 \
            --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
            

מחליפים את VPC_NETWORK_NAME בשם של רשת ה-VPC, למשל my-vpc-network.

בדוגמה הבאה מוקצה טווח כתובות IP שמאפשר למשאבים ברשת ה-VPC‏ my-vpc-network להתחבר למכונות Cloud SQL באמצעות כתובת IP פרטית.

    gcloud compute addresses create google-managed-services-my-vpc-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --network=projects/myprojectid/global/networks/myvpcnetwork \
    --project=my-project
    

Terraform

כדי להקצות טווח כתובות IP, משתמשים במשאב של Terraform.

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

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

כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.

הכנת Cloud Shell

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

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

    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.

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

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

terraform destroy

יצירת חיבור פרטי

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. בוחרים את רשת ה-VPC שרוצים להשתמש בה.
  3. בוחרים בכרטיסייה Private service connection (חיבור שירות פרטי).
  4. בוחרים בכרטיסייה Private connections to services (חיבורים פרטיים לשירותים).
  5. לוחצים על יצירת חיבור כדי ליצור חיבור פרטי בין הרשת שלכם לבין בעלים של שירות מנוהל.
  6. בקטע הקצאה שהוקצתה, בוחרים טווחים קיימים שהוקצו ולא נמצאים בשימוש של ספקי שירות אחרים.
  7. לוחצים על Connect (חיבור) כדי ליצור את החיבור.

gcloud

  1. יוצרים חיבור פרטי.

    gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-VPC_NETWORK_NAME \
    --network=VPC_NETWORK_NAME \
    --project=PROJECT_ID

    הפקודה מפעילה פעולה ממושכת של מכונת Cloud SQL ומחזירה מזהה פעולה.

  2. בודקים אם הפעולה הצליחה.

    gcloud services vpc-peerings operations describe \
    --name=OPERATION_ID

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

Terraform

כדי ליצור חיבור פרטי, משתמשים במשאב של Terraform.

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

לחשבון שירות בפורמט service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com מוקצה התפקיד servicenetworking.serviceAgent בזמן יצירת החיבור הפרטי, כי החשבון מוקצה בזמן אמת.

אם מופיעה שגיאה לגבי ההרשאה compute.globalAddresses.list או ההרשאה compute.projects.get בפרויקט, מריצים את הפקודה gcloud:

gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \
    --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \
    --role=roles/servicenetworking.serviceAgent

שינוי ההגדרה של הגישה לשירותים פרטיים

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

כדי לשנות את טווח הכתובות שהוקצה:

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. בוחרים את רשת ה-VPC שרוצים להשתמש בה.
  3. בוחרים בכרטיסייה Private service connection (חיבור שירות פרטי).
  4. בוחרים בכרטיסייה Allocated IP ranges for services (הקצאת טווחי כתובות IP לשירותים).
  5. בוחרים את שם הטווח שרוצים למחוק.

  6. לוחצים על הסרה.

  7. לוחצים על הקצאת טווח כתובות IP.

  8. יוצרים טווח חדש עם אותו שם וטווח חדש

    השם חשוב כי החיבור הפרטי כבר נוצר באמצעות שם הכתובת הזה.

gcloud services vpc-peerings update \
--network=VPC_NETWORK_NAME \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force

שינוי כתובת ה-IP הפרטית של מופע קיים ב-Cloud SQL

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

כדי לעבור לרשת VPC אחרת, מבצעים את כל השלבים הבאים חוץ מהשלב האחרון (העברת המופע חזרה). במקרה הזה, TEMPORARY_VPC_NETWORK_NAME היא רשת ה-VPC החדשה. בנוסף, צריך למחוק את החיבור הפרטי הישן. יכול להיות שיעברו כמה ימים עד שהחיבור הפרטי שנמחק ייעלם מהמסוףGoogle Cloud .

אם מופע Cloud SQL מתארח ברשת VPC משותפת, צריך להשתמש בשמות של רשתות ה-VPC של הפרויקט המארח במשתנים שמופיעים בהוראות הבאות.VPC_NETWORK_NAME כדי לציין רשת עם רשת VPC משותפת, משתמשים בכתובת ה-URL המלאה של הרשת – למשל, projects/HOST_PROJECT/global/networks/NETWORK_NAME.

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

  2. יצירת רשת VPC זמנית.
  3. יוצרים הקצאת כתובות IP ברשת ה-VPC הזמנית.
  4. יצירת חיבור פרטי ברשת ה-VPC הזמנית.
  5. מעבירים את המכונה של Cloud SQL לרשת ה-VPC הזמנית.

    gcloud beta sql instances patch INSTANCE_ID \
      --project=PROJECT_ID \
      --network=projects/PROJECT_ID/global/networks/TEMPORARY_VPC_NETWORK_NAME \
      --no-assign-ip
  6. משנים את ההגדרה של הגישה הפרטית לשירות ברשת המקורית כדי להוסיף טווח מוקצה חדש או למחוק טווחים קיימים.

  7. מעבירים את המכונה של Cloud SQL בחזרה לרשת ה-VPC המקורית.

    gcloud beta sql instances patch INSTANCE_ID \
      --project=PROJECT_ID \
      --network=projects/PROJECT_ID/global/networks/ORIGINAL_VPC_NETWORK_NAME \
      --no-assign-ip