בדף הזה מוסבר איך להגדיר גישה לשירותים פרטיים ברשת ה-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 באורך קידומת של /24 ותשתמש בשם default-ip-range.
אם אתם מתכוונים ליצור מופעים בכמה אזורים או לסוגים שונים של מסדי נתונים, אתם צריכים שיהיה לכם טווח של כתובות IP בפורמט /24 לפחות שזמין לכל אזור או סוג מסד נתונים. כולל אפליקציות אחרות כמו Filestore או Memorystore. כדי להשתמש באזור חדש או בסוג חדש של מסד נתונים, צריך שיהיה ל-Cloud SQL טווח /24 פנוי.
- יצירת חיבור פרטי מרשת ה-VPC לרשת הבסיסית של הבעלים של שירות מנוהל.
הקצאת טווח של כתובות IP
המסוף
-
נכנסים לדף VPC networks במסוף Google Cloud .
- בוחרים את רשת ה-VPC שרוצים להשתמש בה.
- לוחצים על הכרטיסייה גישה לשירותים פרטיים.
- בוחרים בכרטיסייה Allocated IP ranges for services (טווחים של כתובות IP שהוקצו לשירותים).
- לוחצים על הקצאת טווח כתובות IP.
- בשדה Name (שם) של הטווח שהוקצה, מציינים
google-managed-services-VPC_NETWORK_NAME, כאשרVPC_NETWORK_NAMEהוא השם של רשת ה-VPC שאליה מתחברים (לדוגמה,google-managed-services-default). השדה Description (תיאור) הוא אופציונלי. - בוחרים באפשרות Custom (מותאם אישית) ומזינים את טווח כתובות ה-IP להקצאה בסימון CIDR.
- לוחצים על הקצאה כדי ליצור את הטווח המוקצה.
gcloud
מבצעים אחת מהפעולות הבאות:
- כדי לציין טווח כתובות ואורך קידומת (מסכה של רשת משנה), משתמשים בדגלים
addressesו-prefix-length. לדוגמה, כדי להקצות את בלוק ה-CIDR192.168.0.0/16, מציינים192.168.0.0לכתובת ו-16לאורך הקידומת. - כדי לציין רק אורך קידומת (מסכה של רשת משנה), משתמשים בדגל
prefix-length. כשמשמיטים את טווח הכתובות, Google Cloudבוחר באופן אוטומטי טווח כתובות שלא נמצא בשימוש ברשת ה-VPC. בדוגמה הבאה נבחר טווח כתובות IP שלא נמצא בשימוש עם אורך קידומת של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
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.
החלה של השינויים
כדי להחיל את הגדרות Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
מחיקת השינויים
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה:
terraform destroy
יצירת חיבור פרטי
המסוף
-
נכנסים לדף VPC networks במסוף Google Cloud .
- בוחרים את רשת ה-VPC שרוצים להשתמש בה.
- לוחצים על הכרטיסייה Private service connection (חיבור שירות פרטי).
- בוחרים בכרטיסייה Private connections to services (חיבורים פרטיים לשירותים).
- לוחצים על יצירת חיבור כדי ליצור חיבור פרטי בין הרשת שלכם לבין בעלים של שירות מנוהל.
- בקטע הקצאה שהוקצתה, בוחרים טווחים קיימים שהוקצו ולא נמצאים בשימוש של ספקי שירות אחרים.
- לוחצים על Connect (חיבור) כדי ליצור את החיבור.
gcloud
יוצרים חיבור פרטי.
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 ומחזירה מזהה פעולה.
בודקים אם הפעולה הצליחה.
gcloud services vpc-peerings operations describe \ --name=OPERATION_ID
כשיוצרים חיבור פרטי, אפשר לציין יותר מטווח מוקצה אחד. לדוגמה, אם טווח מסוים מוצה, אפשר להקצות טווחים נוספים. השירות משתמש בכתובות IP מכל הטווחי הכתובות שציינתם, לפי הסדר שבו ציינתם אותם.
Terraform
כדי ליצור חיבור פרטי, משתמשים במשאב של Terraform.
לחשבון שירות בפורמט 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 קיים, פועלים לפי השלבים האלה.
כדי לשנות את טווח הכתובות שהוקצה:
המסוף
-
נכנסים לדף VPC networks במסוף Google Cloud .
- בוחרים את רשת ה-VPC שרוצים להשתמש בה.
- לוחצים על הכרטיסייה Private service connection (חיבור שירות פרטי).
- בוחרים בכרטיסייה Allocated IP ranges for services (טווחים של כתובות IP שהוקצו לשירותים).
בוחרים את השם של הטווח שרוצים למחוק.
לוחצים על הסרה.
לוחצים על הקצאת טווח כתובות IP.
יוצרים טווח חדש עם אותו שם וטווח חדש
השם חשוב כי החיבור הפרטי כבר נוצר באמצעות שם הכתובת הזה.
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.
המסוף
-
נכנסים לדף VPC networks במסוף Google Cloud .
- יצירת רשת VPC זמנית.
- יוצרים הקצאת כתובות IP ברשת ה-VPC הזמנית.
- יצירת חיבור פרטי ברשת ה-VPC הזמנית.
מעבירים את המכונה של 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
משנים את ההגדרה של הגישה הפרטית לשירות ברשת המקורית כדי להוסיף טווח מוקצה חדש או למחוק טווחים קיימים.
מעבירים את המכונה של 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