1. מבוא
Private Service Connect
Private Service Connect היא יכולת של רשת Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, הוא מאפשר לספקי שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם.

בקרת גישה לשירות ההפקה של Private Service Connect
במקום לאשר באופן אוטומטי את כל החיבורים מכל צרכן, היצרנים יכולים לאשר רק בקשות לחיבור נכנס אם הצרכן נמצא ברשימת הצרכנים המאושרים. אפשר לציין צרכנים לפי פרויקט, רשת VPC או נקודת קצה ספציפית של PSC. אי אפשר לכלול סוגים שונים של צרכנים באותה רשימה של צרכנים שמקבלים או דוחים את ההצעה.
בכל אחת מהעדפות החיבור, אפשר לבטל חיבורים שאושרו ולדחות אותם באמצעות מדיניות ארגונית (compute.restrictPrivateServiceConnectConsumer) שחוסמת חיבורים נכנסים.
חשוב לשים לב שמדיניות הארגון (compute.restrictPrivateServiceConnectConsumer) חלה על ארגון,תיקייה או פרויקט. אם רוצים בקרת גישה פרטנית לנקודת הקצה של PSC, אפשר להשתמש ברשימת הצרכנים המורשים של נקודות קצה ספציפיות של PSC.
בקרת גישה שמבוססת על נקודות קצה
בקרת גישה שמבוססת על נקודות קצה (endpoints) של PSC היא היכולת של ספק להעניק הרשאה לצרכנים באמצעות נקודות קצה (endpoints) נפרדות של PSC במדיניות של קובץ השירות.
הגישה הזו, שמומלצת לשירותים מרובי דיירים, מספקת את השליטה המפורטת ביותר בניהול החיבורים.
ה-Codelab הזה מתמקד בהסבר על הגדרת התכונה הזו.
שימו לב: השיטה הזו לא רלוונטית לשרתי קצה עורפיים של Private Service Connect.
2. מה תלמדו
- איך מפרסמים שירות באמצעות PSC.
- בעלי שירותים מנוהלים יכולים ליצור בקרת גישה שמבוססת על נקודת קצה מסוג PSC.
- איך ניגשים לשירות PSC בתור צרכן.
3. ארכיטקטורת Lab כוללת

4. שלבי ההכנה
תפקידי IAM שנדרשים כדי לעבוד על ה-Lab
מתחילים בהקצאת תפקידי IAM הנדרשים לחשבון GCP ברמת הפרויקט.
- אדמין של רשת מחשוב (
roles/compute.networkAdmin) התפקיד הזה מאפשר לכם שליטה מלאה במשאבי הרשת של Compute Engine. - אדמין של רישום ביומן (
roles/logging.admin) התפקיד הזה נותן גישה לכל ההרשאות שקשורות לרישום ביומן, ולהרשאות שתלויות בהן. - אדמין בממשק 'שימוש בשירות' (
roles/serviceusage.serviceUsageAdmin) התפקיד הזה מאפשר להפעיל, להשבית ולבדוק את מצבי השירות, לבדוק פעולות ולצרוך מכסות וחיובים בפרויקט צרכן. - אדמין מכונות של Compute (
roles/compute.instanceAdmin.v1) התפקיד הזה נותן לכם שליטה מלאה במכונות, בקבוצות של מכונות, בדיסקים, בקובצי snapshot ובתמונות ב-Compute Engine. הרשאת קריאה לכל משאבי הרשת של Compute Engine. - אדמין אבטחה של Compute (
roles/compute.securityAdmin) התפקיד הזה נותן הרשאות ליצור, לשנות ולמחוק כללי חומת אש ואישורי SSL, וגם להגדיר הגדרות של מכונות וירטואליות מוגנות.
הפעלת ממשקי ה-API
ב-Cloud Shell, מוודאים שהפרויקט מוגדר בצורה נכונה ומגדירים את משתני הסביבה.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud auth login
gcloud config set project <your project id>
export project_id=$(gcloud config get-value project)
export region=us-central1
export zone=$region-a
echo $project_id
echo $region
echo $zone
מפעילים את כל ממשקי ה-API הנדרשים של Google בפרויקט. ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud services enable \
compute.googleapis.com
יצירת VPC של יצרן
בפרויקט, יוצרים רשת VPC עם מצב תת-רשת מותאם אישית. מבצעים את הפעולות הבאות ב-Cloud Shell:
gcloud compute networks create producer-net \
--subnet-mode=custom
יצירת רשתות משנה ב-VPC של הספק
תצטרכו שלוש רשתות משנה: producer-subnet לשירות שלכם, proxy-only-subnet למאזן העומסים לפרסום השירות ו-psc-subnet ל-PSC לפרסום השירות.
ב-Cloud Shell, מבצעים את הפעולות הבאות כדי ליצור רשתות משנה של IPv4:
gcloud compute networks subnets create producer-subnet \
--network=producer-net \
--range=10.10.0.0/24 \
--region=$region
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=producer-net \
--range=10.30.0.0/24
gcloud compute networks subnets create psc-subnet \
--network=producer-net \
--region=$region \
--range=192.168.0.0/16 \
--purpose=PRIVATE_SERVICE_CONNECT
יצירה של Cloud NAT ו-Cloud Router עבור VPC של יצרן
משתמשים ב-Cloud NAT כדי לאפשר למכונה וירטואלית להוריד ולהתקין אפליקציות.
gcloud compute routers create $region-cr \
--network=producer-net \
--region=$region
gcloud compute routers nats create $region-nat \
--router=$region-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
יצירת VPC של צרכן
בפרויקט, יוצרים רשת VPC עם מצב תת-רשת מותאם אישית. מבצעים את הפעולות הבאות ב-Cloud Shell:
gcloud compute networks create consumer-net \
--subnet-mode=custom
יצירת רשת משנה ב-VPC של הלקוח
ב-Cloud Shell, מבצעים את הפעולות הבאות כדי ליצור תת-רשת IPv4:
gcloud compute networks subnets create consumer-subnet \
--network=consumer-net \
--range=10.20.0.0/24 \
--region=$region
יצירת מדיניות חומת אש גלובלית עבור VPC של יצרן ו-VPC של צרכן
תצרו מדיניות חומת אש גלובלית ברשת ותשייכו אותה ל-VPC של הספק ול-VPC של הצרכן.
gcloud compute network-firewall-policies create global-fw-policy \
--global
gcloud compute network-firewall-policies associations create \
--firewall-policy=global-fw-policy \
--name=producer-fw-policy \
--network=producer-net \
--global-firewall-policy
gcloud compute network-firewall-policies associations create \
--firewall-policy=global-fw-policy \
--name=consumer-fw-policy \
--network=consumer-net \
--global-firewall-policy
אישור SSH
כדי לאפשר לשרת proxy לאימות זהויות (IAP) להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש שכולל את התנאים הבאים:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
gcloud compute network-firewall-policies rules create 100 \
--action=ALLOW \
--firewall-policy=global-fw-policy \
--description="producer-allow-iap" \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20 \
--layer4-configs=tcp:22 \
--global-firewall-policy
הוספת כללים לחומת האש לתעבורת נתונים נכנסת לשירות
תשתמשו במאזן עומסים אזורי פנימי של אפליקציות (ALB) כדי לפרסם את השירות.כלל חומת האש של תעבורת הנתונים הנכנסת (ingress) y צריך לאפשר ל-proxy-only-subnet לגשת לשירות. מידע מפורט זמין במסמך הזה.
gcloud compute network-firewall-policies rules create 200 \
--action=ALLOW \
--firewall-policy=global-fw-policy \
--description="producer-allow-access-service" \
--direction=INGRESS \
--src-ip-ranges=10.30.0.0/24 \
--layer4-configs=tcp:80 \
--global-firewall-policy
אישור בדיקת תקינות של מאזן העומסים בשירות
בדיקות תקינות של מאזן עומסים פנימי אזורי של אפליקציות (ALB) משתמשות בטווחים 35.191.0.0/16 ו-130.211.0.0/22. תצטרכו ליצור כלל חומת אש לתעבורת נתונים נכנסת (ingress) כדי לאפשר בדיקות תקינות מהבדיקות. פרטים נוספים זמינים במסמך הזה.
gcloud compute network-firewall-policies rules create 300 \
--action=ALLOW \
--firewall-policy=global-fw-policy \
--description="producer-allow-health-check" \
--direction=INGRESS \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22\
--layer4-configs=tcp:80 \
--global-firewall-policy
יצירת VM כלקוח HTTP ב-VPC של הצרכן
ב-Cloud Shell, מבצעים את הפעולות הבאות כדי ליצור מכונה וירטואלית כלקוח בדיקה:
gcloud compute instances create myclient \
--zone=$zone \
--subnet=consumer-subnet \
--shielded-secure-boot \
--no-address
יצירת מכונה וירטואלית כשרת HTTP ב-VPC של הספק
ב-Cloud Shell, מבצעים את הפעולות הבאות כדי ליצור מכונה וירטואלית כשרת HTTP:
gcloud compute instances create myserver \
--subnet=producer-subnet \
--zone=$zone \
--no-address \
--shielded-secure-boot \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a Http Server." | \
tee /var/www/html/index.html
systemctl restart apache2'
5. פרסום שירות PSC של הבעלים של שירות מנוהל
יצירת מאזן עומסים פנימי אזורי של אפליקציות (ALB)
תיצרו מאזן עומסים אזורי של אפליקציות (ALB) פנימית כחלק הקדמי של השירות, והבק-אנד הוא קבוצת מופעים לא מנוהלת שנקודת הקצה (endpoint) שלה היא שרת ה-HTTP שיצרנו קודם.
שמירת כתובת ה-IP של מאזן העומסים
gcloud compute addresses create l7-ilb-ip-address \
--region=$region \
--subnet=producer-subnet
יצירת קבוצת מופעים
תצרו קבוצה של מופעי מכונה לא מנוהלים ותוסיפו את המכונה הווירטואלית myserver לקבוצת המופעים.
gcloud compute instance-groups unmanaged create my-service-ig \
--zone=$zone
gcloud compute instance-groups unmanaged add-instances my-service-ig \
--zone=$zone \
--instances=myserver
יצירת בדיקת תקינות של HTTP
gcloud compute health-checks create http l7-ilb-basic-check \
--region=$region \
--use-serving-port
יצירת שירות הקצה העורפי
gcloud compute backend-services create l7-ilb-backend-service \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=l7-ilb-basic-check \
--health-checks-region=$region \
--region=$region
הוספת קצה עורפי לשירות הקצה העורפי
gcloud compute backend-services add-backend l7-ilb-backend-service \
--balancing-mode=UTILIZATION \
--instance-group=my-service-ig \
--instance-group-zone=$zone \
--region=$region
יצירת מפת URL
gcloud compute url-maps create l7-ilb-map \
--default-service=l7-ilb-backend-service \
--region=$region
יצירת שרת proxy ליעד
gcloud compute target-http-proxies create l7-ilb-proxy \
--url-map=l7-ilb-map \
--url-map-region=$region \
--region=$region
יצירת כלל ההעברה
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-net \
--subnet=producer-subnet \
--address=l7-ilb-ip-address \
--ports=80 \
--region=$region \
--target-http-proxy=l7-ilb-proxy \
--target-http-proxy-region=$region
הבעלים של השירות המנוהל ב-PSC מפרסם את השירות
תשתמשו ב-PSC כדי לפרסם את השירות עם connection-preference=ACCEPT_MANUAL ורשימות צרכנים ריקות.
gcloud compute service-attachments create my-psc-service \
--region=$region \
--target-service=projects/$project_id/regions/$region/forwardingRules/l7-ilb-forwarding-rule \
--connection-preference=ACCEPT_MANUAL \
--nat-subnets=psc-subnet
export myserver_service_attachment=$(gcloud compute service-attachments describe my-psc-service --region=$region --format="value(selfLink.scope(v1))")
echo $myserver_service_attachment
6. הצרכן יוצר את נקודת הקצה של PSC
שמירת כתובת IP לנקודת קצה של PSC
gcloud compute addresses create myserver-psc-endpoint-ip \
--region=$region \
--subnet=consumer-subnet \
--ip-version=IPV4
יצירת נקודת קצה של PSC
יוצרים נקודת קצה של PSC ומקבלים את כתובת ה-IP של נקודת הקצה של PSC לצורך בדיקה בשלב הבא.
gcloud compute forwarding-rules create myserver-psc-endpoint \
--region=$region \
--network=consumer-net \
--address=myserver-psc-endpoint-ip \
--target-service-attachment=$myserver_service_attachment
psc_endpoint_ip=$(gcloud compute forwarding-rules describe myserver-psc-endpoint \
--region=$region --format="value(IPAddress)")
echo $psc_endpoint_ip
הצרכן בודק את הסטטוס של נקודת הקצה ב-PSC
לפני שהיצרן מוסיף את נקודת הקצה של ה-PSC לרשימת הצרכנים, החיבור מופיע בנקודת הקצה המקושרת בצד הצרכן עם הסטטוס 'בהמתנה'.
gcloud compute forwarding-rules describe myserver-psc-endpoint \
--region=$region
תוצג תוצאה דומה לזו שבהמשך.
IPAddress: 10.20.0.3
allowPscGlobalAccess: false
creationTimestamp: '2026-02-23T16:27:27.920-08:00'
fingerprint: yh_UiYqjHCc=
id: '934193159895862912'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: myserver-psc-endpoint
network: https://www.googleapis.com/compute/v1/projects/<project_id>/global/networks/consumer-net
networkTier: PREMIUM
pscConnectionId: '160443618817212419'
pscConnectionStatus: PENDING
region: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1/forwardingRules/myserver-psc-endpoint
selfLinkWithId: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1/forwardingRules/934193159895862912
serviceDirectoryRegistrations:
- namespace: goog-psc-default
target: https://www.googleapis.com/compute/v1/projects/<project_id>/regions/us-central1/serviceAttachments/my-psc-service
7. בדיקת הגישה ממכונת VM צרכנית למכונת VM יצרנית
בודקים את כתובת ה-IP של נקודת הקצה של PSC.
echo $psc_endpoint_ip
מתחברים ל-VM בשם myclient באמצעות SSH ובודקים אם יש לו גישה ל-myserver ביציאה 80 של HTTP.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute ssh \
--zone=$zone "myclient" \
--tunnel-through-iap
משתמשים ב-curl כדי לגשת לנקודת הקצה של PSC שיצרתם.
curl -m 10 <psc_endpoint_ip>
יוצג שהפקודה curl הסתיימה בגלל חריגה מזמן קצוב לתפוגה. לקוח הבדיקה מרשת ה-VPC של הצרכן לא יכול לגשת לשרת ה-HTTP ברשת ה-VPC של הספק.
curl: (28) Connection timed out after 10001 milliseconds
כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit
8. הבעלים של השירות המנוהל מאשר את נקודת הקצה של PSC
הפקת בדיקות של סטטוס נקודת הקצה של PSC
לפני שהיצרן מוסיף את נקודת הקצה של PSC לרשימת הצרכנים, החיבור מוצג בחיבור השירות עם הסטטוס Pending (בהמתנה).
gcloud compute service-attachments describe my-psc-service --region=$region
תוצג תוצאה דומה לזו שבהמשך.
connectedEndpoints:
- consumerNetwork: https://www.googleapis.com/compute/projects/<project_id>/global/networks/consumer-net
endpoint: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/myserver-psc-endpoint
endpointWithId: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/934193159895862912
pscConnectionId: '160443618817212419'
status: PENDING
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2026-02-23T13:27:33.886-08:00'
description: ''
enableProxyProtocol: false
fingerprint: -9EI8FCALrA=
id: '2578692595155826858'
kind: compute#serviceAttachment
name: my-psc-service
natSubnets:
- https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/subnetworks/psc-subnet
pscServiceAttachmentId:
high: '149466704441770984'
low: '2578692595155826858'
reconcileConnections: false
region: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1
selfLink: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/serviceAttachments/my-psc-service
targetService: https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/l7-ilb-forwarding-rule
קבלת ה-URI מבוסס-המזהה של נקודת הקצה של PSC
ה-URI מבוסס-המזהה של נקודת הקצה של PSC הוא המזהה של כלל ההעברה שהלקוח יצר. בדוגמה שלמעלה, endpointWithId הוא ה-URI של נקודת הקצה של PSC שנוצרה על ידי הלקוח. היצרן יצטרך את ה-URI הזה כדי ליצור בקרת גישה מבוססת-נקודת קצה.
( לתשומת ליבך, מזהה החיבור של PSC הוא לא המזהה שאנחנו מחפשים. )
export psc_endpoint_uri=$(gcloud compute service-attachments describe my-psc-service --region=$region --format="value(connectedEndpoints.endpointWithId)")
echo $psc_endpoint_uri
הוספת URI מבוסס-מזהה של נקודת קצה של PSC לרשימת ההסכמה של הצרכן
gcloud compute service-attachments update my-psc-service \
--region=$region \
--consumer-accept-list=$psc_endpoint_uri
הפקת בדיקות של סטטוס נקודת הקצה של PSC
gcloud compute service-attachments describe my-psc-service --region=$region --format="value(connectedEndpoints)"
תוצג תוצאה דומה לזו שבהמשך. הסטטוס השתנה ל'התקבל'.
{'consumerNetwork': 'https://www.googleapis.com/compute/projects/<project_id>/global/networks/consumer-net', 'endpoint': 'https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/myserver-psc-endpoint', 'endpointWithId': 'https://www.googleapis.com/compute/projects/<project_id>/regions/us-central1/forwardingRules/47564871796017232', 'pscConnectionId': '54547416268144643', 'status': 'ACCEPTED'}
9. בדיקת הגישה ממכונת VM צרכנית למכונת VM יצרנית
בודקים את כתובת ה-IP של נקודת הקצה של PSC.
echo $psc_endpoint_ip
מתחברים ל-VM בשם myclient באמצעות SSH ובודקים אם יש לו גישה ל-myserver ביציאה 80 של HTTP.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute ssh \
--zone=$zone "myclient" \
--tunnel-through-iap
משתמשים ב-curl כדי לגשת לנקודת הקצה של PSC שיצרתם.
curl <psc_endpoint_ip>
פקודת curl תחזיר תשובה מ-myserver בהצלחה. לקוח הבדיקה מ-VPC של הצרכן ניגש לשרת ה-HTTP ב-VPC של הספק.
I am a Http Server.
כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit
10. הסרת המשאבים
ניקוי המכונות הווירטואליות
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute instances delete myserver --zone $zone --quiet
gcloud compute instances delete myclient --zone $zone --quiet
ניקוי רכיבי צרכן של PSC
gcloud compute forwarding-rules delete myserver-psc-endpoint \
--region=$region --quiet
gcloud compute addresses delete myserver-psc-endpoint-ip \
--region=$region --quiet
ניקוי רכיבי PSC producer
gcloud compute service-attachments delete my-psc-service \
--region=$region --quiet
gcloud compute forwarding-rules delete l7-ilb-forwarding-rule \
--region=$region --quiet
gcloud compute target-http-proxies delete l7-ilb-proxy \
--region=$region --quiet
gcloud compute url-maps delete l7-ilb-map \
--region=$region --quiet
gcloud compute backend-services remove-backend l7-ilb-backend-service \
--instance-group=my-service-ig \
--instance-group-zone=$zone \
--region=$region --quiet
gcloud compute backend-services delete l7-ilb-backend-service \
--region=$region --quiet
gcloud compute health-checks delete l7-ilb-basic-check \
--region=$region --quiet
gcloud compute instance-groups unmanaged delete my-service-ig \
--zone=$zone --quiet
gcloud compute addresses delete l7-ilb-ip-address \
--region=$region --quiet
ניקוי של חומת אש, Cloud NAT, Cloud Router ו-VPC
gcloud compute network-firewall-policies rules delete 100 \
--firewall-policy=global-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies rules delete 200 \
--firewall-policy=global-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies rules delete 300 \
--firewall-policy=global-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies associations delete \
--firewall-policy=global-fw-policy \
--name=producer-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies associations delete \
--firewall-policy=global-fw-policy \
--name=consumer-fw-policy \
--global-firewall-policy --quiet
gcloud compute network-firewall-policies delete global-fw-policy \
--global --quiet
gcloud compute routers nats delete $region-nat \
--router=$region-cr \
--region=$region --quiet
gcloud compute routers delete $region-cr \
--region=$region --quiet
gcloud compute networks subnets delete producer-subnet \
--region=$region --quiet
gcloud compute networks subnets delete proxy-only-subnet \
--region=$region --quiet
gcloud compute networks subnets delete psc-subnet \
--region=$region --quiet
gcloud compute networks delete producer-net --quiet
gcloud compute networks subnets delete consumer-subnet \
--region=$region --quiet
gcloud compute networks delete consumer-net --quiet
11. מזל טוב
הצלחתם לבדוק את בקרת הגישה שמבוססת על נקודת קצה של שירות הפקה ב-Private Service Connect.