בדף הזה מוסבר איך להשתמש בחיבור לרשת VPC מאפליקציית Serverless כדי לחבר את שירותי App Engine בסביבה הרגילה ישירות לרשת ה-VPC, וכך לאפשר גישה למכונות וירטואליות של Compute Engine, למכונות של Memorystore ולכל משאב אחר עם כתובת IP פנימית.
לפני שמתחילים
אם עדיין אין לכם רשת VPC בפרויקט, צרו אחת.
אם אתם משתמשים ב-VPC משותף, קראו את המאמר התחברות לרשת VPC משותפת.
במסוף Google Cloud , מוודאים ש-Serverless VPC Access API מופעל בפרויקט.
מגבלות
- יצירת מחברים של חיבור לרשת VPC נכשלת בסביבות של Assured Workloads. כדי לעקוף את הבעיה, אפשר להגדיר Direct VPC egress למשאבים של App Engine.
יצירת חיבור לרשת VPC ללא שרת
כדי לשלוח בקשות לרשת ה-VPC ולקבל את התשובות המתאימות בלי להשתמש באינטרנט הציבורי, אתם יכולים להשתמש במחבר של חיבור לרשת (VPC) מאפליקציית serverless.
אם המחבר נמצא באותו פרויקט כמו רשת ה-VPC, אתם יכולים ליצור מחבר באמצעות רשת משנה קיימת או ליצור מחבר ורשת משנה חדשה.
אם המחבר נמצא בפרויקט שירות ומשתמש ברשת VPC משותפת, המחבר ורשת ה-VPC שמשויכת אליו נמצאים בפרויקטים שונים. כשהמחבר ורשת ה-VPC שלו נמצאים בפרויקטים שונים, מנהל רשת של רשת VPC משותפת צריך ליצור את רשת המשנה של המחבר ברשת ה-VPC המשותפת לפני שתוכלו ליצור את המחבר, וגם תצטרכו ליצור את המחבר באמצעות רשת משנה קיימת.
מידע נוסף על הדרישות של רשתות משנה זמין במאמר דרישות של רשתות משנה למחברים.
במאמר תפוקה ושינוי קנה מידה מוסבר על תפוקת המחבר, כולל סוג המכונה ושינוי קנה המידה.
אפשר ליצור מחבר באמצעות מסוף Google Cloud , Google Cloud CLI או Terraform.
המסוף
נכנסים לדף הסקירה הכללית של Serverless VPC Access.
לוחצים על Create connector.
בשדה Name, מזינים שם למחבר שתואם למוסכמות מתן השמות של Compute Engine, עם הדרישות הנוספות הבאות: השם חייב להיות באורך של פחות מ-21 תווים, ומקפים (-) נספרים כשני תווים.
בשדה Region, בוחרים אזור למחבר. האזור צריך להיות זהה לאזור של השירות ללא שרת (serverless).
בשדה Network, בוחרים את רשת ה-VPC שאליה רוצים לצרף את המחבר.
בשדה Subnet, בוחרים אחת מהאפשרויות הבאות:
יצירת מחבר באמצעות רשת משנה קיימת: בוחרים את רשת המשנה הקיימת בשדה Subnet.
יצירת מחבר ורשת משנה חדשה: בשדה Subnet בוחרים באפשרות Custom IP range. לאחר מכן, מזינים את הכתובת הראשונה ב-CIDR
/28שלא בשימוש (לדוגמה10.8.0.0/28) כדי להשתמש בה כטווח הראשי של כתובות IPv4 של רשת משנה חדשה ש- Google Cloud יוצר ברשת ה-VPC של המחבר. חשוב לוודא שטווח כתובות ה-IP לא מתנגש עם נתיבים קיימים ברשת ה-VPC של המחבר. השם של רשת המשנה החדשה מתחיל בקידומת "aet-".
(אופציונלי) כדי להגדיר אפשרויות התאמה לעומס לשליטה נוספת במחבר, לוחצים על Show Scaling Settings כדי להציג את טופס ההתאמה לעומס.
- מגדירים את מספר המכונות המינימלי והמקסימלי של המחבר, או משתמשים בערכי ברירת המחדל: 2 (מינימום) ו-10 (מקסימום). המחבר מתרחב עד למקסימום שצוין אם השימוש בתנועה מחייב זאת. צריך להשתמש בערכים בין
2ל-10. - בתפריט Instance Type, בוחרים את סוג המכונה שבה רוצים להשתמש למחבר, או משתמשים בברירת המחדל
e2-micro. שימו לב לסרגל הצד של העלויות שמופיע בצד ימין כשבוחרים את סוג המכונה, שבו מוצגות הערכות של רוחב הפס והעלויות.
- מגדירים את מספר המכונות המינימלי והמקסימלי של המחבר, או משתמשים בערכי ברירת המחדל: 2 (מינימום) ו-10 (מקסימום). המחבר מתרחב עד למקסימום שצוין אם השימוש בתנועה מחייב זאת. צריך להשתמש בערכים בין
לוחצים על יצירה.
כשהמחבר יהיה מוכן לשימוש, יופיע סימן וי ירוק ליד השם שלו.
gcloud
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מעדכנים את הרכיבים של
gcloudלגרסה האחרונה:gcloud components update
מוודאים שה-API של "חיבור לרשת (VPC) מאפליקציית serverless" מופעל בפרויקט:
gcloud services enable vpcaccess.googleapis.com
יוצרים את המחבר באחת מהאפשרויות הבאות:
לפרטים נוספים ולארגומנטים אופציונליים, עיינו במפרט של
gcloud.יצירת מחבר באמצעות רשת משנה קיימת:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
מחליפים את מה שכתוב בשדות הבאים:
-
CONNECTOR_NAME: שם למחבר, שתואם למוסכמות מתן השמות של Compute Engine, עם דרישות נוספות: השם חייב להיות באורך של פחות מ-21 תווים, ומקפים (-) נספרים כשני תווים. -
REGION: אזור למחבר, שתואם לאזור של השירות או המשימה ללא שרת (serverless). -
SUBNET_NAME: השם של תת-הרשת הקיימת. -
HOST_PROJECT_ID: מזהה הפרויקט המארח של ה-VPC המשותף. אם המחבר ורשת המשנה הקיימת נמצאים באותו פרויקט, משמיטים את הדגל--subnet-project. -
MIN: המספר המינימלי של המכונות שבהן ישתמש המחבר. צריך להשתמש במספר שלם בין2(ברירת המחדל) לבין9. -
MAX: המספר המקסימלי של המכונות שבהן אפשר להשתמש במחבר. צריך להשתמש במספר שלם בין3ל-10(ברירת המחדל). -
MACHINE_TYPE: צריך להיות אחד מהערכים הבאים:f1-micro, e2-microאוe2-standard-4.
-
יצירת מחבר ורשת משנה חדשה:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
מחליפים את מה שכתוב בשדות הבאים:
-
CONNECTOR_NAME: שם למחבר, שתואם למוסכמות מתן השמות של Compute Engine, עם דרישות נוספות: השם חייב להיות באורך של פחות מ-21 תווים, ומקפים (-) נספרים כשני תווים. -
REGION: אזור למחבר, שתואם לאזור של השירות או המשימה ללא שרת (serverless). -
VPC_NETWORK: השם של רשת ה-VPC שאליה רוצים לחבר את המחבר. המחבר ורשת ה-VPC צריכים להיות באותו פרויקט. -
IP_RANGE: צריך לספק CIDR של/28שלא נמצא בשימוש (לדוגמה10.8.0.0/28) כדי להשתמש בו כטווח הראשי של כתובות IPv4 של רשת משנה חדשה שנוצרת על ידי Google Cloud ברשת ה-VPC של המחבר. חשוב לוודא שטווח כתובות ה-IP לא מתנגש עם מסלולים קיימים ברשת ה-VPC של המחבר. השם של רשת המשנה החדשה מתחיל בקידומת "aet-". -
MIN: המספר המינימלי של המכונות שבהן ישתמש המחבר. צריך להשתמש במספר שלם בין2(ברירת המחדל) לבין9. -
MAX: המספר המקסימלי של המכונות שבהן אפשר להשתמש במחבר. צריך להשתמש במספר שלם בין3ל-10(ברירת המחדל). אם המחבר מגיע למספר המקסימלי של מכונות, הוא לא יורד בחזרה. -
MACHINE_TYPE: צריך להיות אחד מהערכים הבאים:f1-micro, e2-microאוe2-standard-4.
-
לפני שמשתמשים במחבר, מוודאים שהוא במצב
READY:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
מחליפים את מה שכתוב בשדות הבאים:
-
CONNECTOR_NAME: השם של המחבר שציינתם בשלב הקודם. -
REGION: האזור של המחבר, שציינתם בשלב הקודם.
הפלט צריך להכיל את השורה
state: READY.-
Terraform
אתם יכולים להשתמש במשאב של Terraform כדי להפעיל את ה-API של vpcaccess.googleapis.com.
אתם יכולים להשתמש במודולים של Terraform כדי ליצור רשת VPC ותת-רשת, ואז ליצור את המחבר.
הגדרת השירות לשימוש במחבר
אחרי שיוצרים מחבר של חיבור לרשת (VPC) מאפליקציית serverless, צריך להגדיר כל שירות באפליקציית App Engine שרוצים לחבר לרשת ה-VPC.
כדי לציין מחבר לשירות באפליקציה:
מוסיפים את השדה
vpc_access_connectorלקובץapp.yamlשל השירות:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
PROJECT_IDהוא מזהה הפרויקט ב- Google Cloud , REGIONהוא האזור שבו נמצא המחבר ו-CONNECTOR_NAMEהוא שם המחבר.פורסים את השירות:
gcloud app deploy
אחרי פריסת השירות, הוא יכול לשלוח בקשות לכתובות IP פנימיות כדי לגשת למשאבים ברשת ה-VPC.
גישה למשאבי VPC
כללי חומת האש שנדרשים למחברים בפרויקטים של שירותים
אם יוצרים מחבר ברשת VPC נפרדת או בפרויקט המארח של רשת VPC משותפת, Google Cloud יוצר את כל כללי חומת האש שנדרשים לפעולת המחבר. מידע נוסף זמין במאמר כללי חומת אש למחברים ברשתות VPC נפרדות או בפרויקטים מארחים של VPC משותף.
עם זאת, אם יוצרים מחבר בפרויקט שירות והמחבר מטרגט רשת VPC משותפת בפרויקט המארח, צריך להוסיף כללי חומת אש כדי לאפשר תנועה שנדרשת לפעולת המחבר מהטווחים הבאים:
- טווח כתובות ה-IP של התשתית ללא שרת (serverless):
35.199.224.0/19 - טווחי כתובות ה-IP של בדיקת התקינות:
35.191.0.0/16,35.191.192.0/18ו-130.211.0.0/22
הטווחים האלה משמשים את התשתית של Google שעליה מבוססים Cloud Run, פונקציות Cloud Run וסביבת ברירת המחדל ב-App Engine. כל הבקשות מכתובות ה-IP האלה מגיעות מהתשתית של Google, כדי לוודא שכל משאב בלי שרת (serverless) מתקשר רק עם המחבר שאליו הוא מחובר.
בנוסף, צריך לאפשר תנועה מרשת המשנה של המחבר למשאבים ברשת ה-VPC.
כדי לבצע את השלבים האלה, צריך להיות לכם אחד מהתפקידים הבאים בפרויקט המארח:
- בעלים (
roles/owner) - התפקיד "Security Admin ב-Compute" (
roles/compute.securityAdmin) - תפקיד בהתאמה אישית בניהול זהויות והרשאות גישה (IAM) עם ההרשאה
compute.firewalls.create
בהגדרה בסיסית, מחילים את הכללים כדי לאפשר למשאבים בלי שרת (serverless) בכל פרויקט שירות שמחובר לרשת ה-VPC המשותפת לשלוח בקשות לכל משאב ברשת.
כדי להחיל את הכללים האלה, מריצים את הפקודות הבאות בפרויקט המארח:
יוצרים כללים של חומת אש שמאפשרים לבקשות מתשתית ה-Serverless של Google ומבדיקות תקינות להגיע לכל המחברים ברשת. בפקודות האלה, יציאות ה-UDP וה-TCP משמשות כשרתי proxy ולבדיקות תקינות של HTTP, בהתאמה. אל תשנו את היציאות שצוינו.
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
מחליפים את
VPC_NETWORKבשם של רשת ה-VPC שאליה רוצים לצרף את המחבר.יוצרים כלל של חומת אש לתעבורת נתונים נכנסת ברשת ה-VPC, כדי לאפשר בקשות ממחברים שמטרגטים את הרשת הזו:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
הכלל הזה נותן למחבר גישה לכל משאב ברשת. כדי להגביל את המשאבים שסביבת ה-serverless יכולה להגיע אליהם באמצעות חיבור לרשת (VPC) מאפליקציית serverless, קראו את המאמר הגבלת הגישה של המכונה הווירטואלית של המחבר למשאבים של רשת ה-VPC.
יצירת כללים לחומת האש למחברים ספציפיים
אם תפעלו לפי ההוראות במאמר כללי חומת האש הנדרשים למחברים בפרויקטים של שירות, כללי חומת האש יחולו על כל המחברים – גם אלה שקיימים וגם אלה שייווצרו בעתיד. אם אתם לא רוצים שזה יקרה, אלא רוצים ליצור כללים למחברים ספציפיים בלבד, אתם יכולים להגדיר את היקף הכללים כך שיחולו רק על המחברים האלה.
כדי להגביל את היקף הכללים למחברים ספציפיים, אפשר להשתמש באחד מהמנגנונים הבאים:
- תגי רשת: לכל מחבר יש שני תגי רשת:
vpc-connectorו-vpc-connector-REGION-CONNECTOR_NAME. השתמשו בפורמט השני כדי להגביל את ההיקף של כללי חומת האש למחבר ספציפי. - טווחי כתובות IP: אפשר להשתמש בהם רק לכללי תעבורת נתונים יוצאת, כי הם לא פועלים לכללי תעבורת נתונים נכנסת. אתם יכולים להשתמש בטווח ה-IP של רשת המשנה של המחבר כדי להגביל את ההיקף של כללי חומת האש למחבר VPC אחד.
הגבלת הגישה של ה-VM של המחבר למשאבים של רשת ה-VPC
אתם יכולים להגביל את הגישה של המחבר למשאבים ברשת VPC היעד שלו באמצעות כללי חומת אש של VPC או כללים במדיניות חומת אש. כדי להגביל את הגישה, אפשר להשתמש באחת מהשיטות הבאות:
- יוצרים כללי תעבורת נתונים נכנסת שהיעדים שלהם מייצגים את המשאבים שרוצים להגביל את הגישה של המכונות הווירטואליות של המחבר אליהם, והמקורות שלהם מייצגים את המכונות הווירטואליות של המחבר.
- יוצרים כללי תעבורת נתונים יוצאת שהיעדים שלהם מייצגים את המכונות הווירטואליות של המחבר, והיעדים שלהם מייצגים את המשאבים שאליהם רוצים להגביל את הגישה של המכונות הווירטואליות של המחבר.
הדוגמאות הבאות ממחישות כל אחת מהאסטרטגיות.
הגבלת הגישה באמצעות כללי תעבורת נתונים נכנסת (ingress)
בוחרים תגי רשת או טווחי CIDR כדי לשלוט בתנועה הנכנסת לרשת ה-VPC.
תגי רשת
בשלבים הבאים מוסבר איך ליצור כללי תעבורת נתונים נכנסת שמגבילים את הגישה של מחבר לרשת ה-VPC, על סמך תגי הרשת של המחבר.
חשוב לוודא שיש לכם את ההרשאות הנדרשות כדי להוסיף כללי חומת אש. אתם צריכים אחד מהתפקידים הבאים בניהול זהויות והרשאות גישה (IAM):
- תפקיד Security Admin ב-Compute
- תפקיד IAM בהתאמה אישית עם ההרשאה
compute.firewalls.create
דחיית תנועה של מחברים ברשת ה-VPC.
יוצרים כלל חומת אש לתעבורת נתונים נכנסת (ingress) עם עדיפות נמוכה מ-1,000 ברשת ה-VPC, כדי לדחות תעבורת נתונים נכנסת מתג הרשת של המחבר. הכלל הזה מבטל את כלל חומת האש המשתמע שנוצר כברירת מחדל ברשת ה-VPC על ידי החיבור לרשת (VPC) מאפליקציית serverless.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
מחליפים את מה שכתוב בשדות הבאים:
RULE_NAME: השם של כלל חומת האש החדש. לדוגמה,
deny-vpc-connector.PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם
tcpאוudp. לדוגמה,tcp:80,udpמאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגלallow.למטרות אבטחה ואימות, אתם יכולים גם להגדיר כללי דחייה כדי לחסום תנועה בפרוטוקולים הבאים שלא נתמכים:
ah,all,esp,icmp,ipipו-sctp.VPC_CONNECTOR_NETWORK_TAG: תג הרשת של המחבר האוניברסלי, אם רוצים להגביל את הגישה לכל המחברים (כולל מחברים שייווצרו בעתיד), או תג הרשת הייחודי, אם רוצים להגביל את הגישה למחבר ספציפי.
- תג רשת אוניברסלי:
vpc-connector תג רשת ייחודי:
vpc-connector-REGION-CONNECTOR_NAMEמחליפים את:
- REGION: האזור של המחבר שרוצים להגביל
- CONNECTOR_NAME: שם המחבר שרוצים להגביל
למידע נוסף על תגי רשת של מחברים, ראו תגי רשת.
- תג רשת אוניברסלי:
VPC_NETWORK: השם של רשת ה-VPC
PRIORITY: מספר שלם בין 0 ל-65535. לדוגמה, הערך 0 מגדיר את העדיפות הגבוהה ביותר.
מאפשרים תנועה מהמחבר למשאב שאמור לקבל תנועה מהמחבר.
משתמשים בדגלים
allowו-target-tagsכדי ליצור כלל חומת אש לתעבורת נתונים נכנסת, שמטרגט את המשאב ברשת ה-VPC שאליו רוצים שמחבר ה-VPC ייגש. מגדירים את העדיפות של הכלל הזה לערך נמוך יותר מהעדיפות של הכלל שיצרתם בשלב הקודם.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
מחליפים את מה שכתוב בשדות הבאים:
RULE_NAME: השם של כלל חומת האש החדש. לדוגמה,
allow-vpc-connector-for-select-resources.PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם
tcpאוudp. לדוגמה,tcp:80,udpמאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגלallow.VPC_CONNECTOR_NETWORK_TAG: תג הרשת של המחבר האוניברסלי, אם רוצים להגביל את הגישה לכל המחברים (כולל מחברים שייווצרו בעתיד), או תג הרשת הייחודי, אם רוצים להגביל את הגישה למחבר ספציפי. הוא צריך להתאים לתג הרשת שציינתם בשלב הקודם.
- תג רשת אוניברסלי:
vpc-connector תג רשת ייחודי:
vpc-connector-REGION-CONNECTOR_NAMEמחליפים את:
- REGION: האזור של המחבר שרוצים להגביל
- CONNECTOR_NAME: שם המחבר שרוצים להגביל
למידע נוסף על תגי רשת של מחברים, ראו תגי רשת.
- תג רשת אוניברסלי:
VPC_NETWORK: השם של רשת ה-VPC
RESOURCE_TAG: תג הרשת של משאב ה-VPC שאליו רוצים שמחבר ה-VPC ייגש
PRIORITY: מספר שלם שקטן מהעדיפות שהגדרתם בשלב הקודם. לדוגמה, אם הגדרתם את העדיפות של הכלל שיצרתם בשלב הקודם ל-990, נסו 980.
למידע נוסף על הדגלים הנדרשים והאופציונליים ליצירת כללים של חומת אש, קראו את המסמכים של gcloud compute firewall-rules create.
טווח CIDR
בשלבים הבאים מוסבר איך ליצור כללי תעבורת נתונים נכנסת שמגבילים את הגישה של המחבר לרשת ה-VPC, על סמך טווח ה-CIDR של המחבר.
חשוב לוודא שיש לכם את ההרשאות הנדרשות כדי להוסיף כללי חומת אש. אתם צריכים אחד מהתפקידים הבאים בניהול זהויות והרשאות גישה (IAM):
- תפקיד Security Admin ב-Compute
- תפקיד IAM בהתאמה אישית עם ההרשאה
compute.firewalls.create
דחיית תנועה של מחברים ברשת ה-VPC.
ברשת ה-VPC, יוצרים כלל חומת אש לתעבורת נתונים נכנסת עם עדיפות נמוכה מ-1,000, כדי לדחות תעבורת נתונים נכנסת מטווח ה-CIDR של המחבר. הכלל הזה מבטל את כלל חומת האש המשתמע שנוצר כברירת מחדל ברשת ה-VPC על ידי החיבור לרשת (VPC) מאפליקציית serverless.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
מחליפים את מה שכתוב בשדות הבאים:
RULE_NAME: השם של כלל חומת האש החדש. לדוגמה,
deny-vpc-connector.PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם
tcpאוudp. לדוגמה,tcp:80,udpמאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגלallow.למטרות אבטחה ואימות, אתם יכולים גם להגדיר כללי דחייה כדי לחסום תנועה בפרוטוקולים הבאים שלא נתמכים:
ah,all,esp,icmp,ipipו-sctp.VPC_CONNECTOR_CIDR_RANGE: טווח ה-CIDR של המחבר שהגישה אליו מוגבלת
VPC_NETWORK: השם של רשת ה-VPC
PRIORITY: מספר שלם בין 0 ל-65535. לדוגמה, הערך 0 מגדיר את העדיפות הגבוהה ביותר.
מאפשרים תנועה מהמחבר למשאב שאמור לקבל תנועה מהמחבר.
משתמשים בדגלים
allowו-target-tagsכדי ליצור כלל חומת אש לתעבורת נתונים נכנסת, שמטרגט את המשאב ברשת ה-VPC שאליו רוצים שמחבר ה-VPC ייגש. מגדירים את העדיפות של הכלל הזה לערך נמוך יותר מהעדיפות של הכלל שיצרתם בשלב הקודם.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
מחליפים את מה שכתוב בשדות הבאים:
RULE_NAME: השם של כלל חומת האש החדש. לדוגמה,
allow-vpc-connector-for-select-resources.PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם
tcpאוudp. לדוגמה,tcp:80,udpמאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגלallow.VPC_CONNECTOR_CIDR_RANGE: טווח ה-CIDR של המחבר שאת הגישה שלו אתם מגבילים
VPC_NETWORK: השם של רשת ה-VPC
RESOURCE_TAG: תג הרשת של משאב ה-VPC שאליו רוצים שמחבר ה-VPC ייגש
PRIORITY: מספר שלם שקטן מהעדיפות שהגדרתם בשלב הקודם. לדוגמה, אם הגדרתם את העדיפות של הכלל שיצרתם בשלב הקודם ל-990, נסו 980.
למידע נוסף על הדגלים הנדרשים והאופציונליים ליצירת כללים של חומת האש, קראו את המאמר בנושא gcloud compute firewall-rules create.
הגבלת הגישה באמצעות כללים לתעבורת נתונים יוצאת (egress)
כך יוצרים כללי תעבורת נתונים יוצאת כדי להגביל את הגישה למחבר:
חשוב לוודא שיש לכם את ההרשאות הנדרשות כדי להוסיף כללי חומת אש. צריך להיות לכם אחד מהתפקידים הבאים בממשק ניהול הזהויות והרשאות הגישה (IAM):
- תפקיד Security Admin ב-Compute
- תפקיד IAM בהתאמה אישית עם ההרשאה
compute.firewalls.create
דחיית תעבורת נתונים יוצאת מהמחבר.
יוצרים כלל של חומת אש לתעבורת נתונים יוצאת במחבר של Serverless VPC Access, כדי למנוע ממנו לשלוח תעבורת נתונים יוצאת לכל יעד, למעט תגובות מבוססות.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
מחליפים את מה שכתוב בשדות הבאים:
RULE_NAME: השם של כלל חומת האש החדש. לדוגמה,
deny-vpc-connector.PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם
tcpאוudp. לדוגמה,tcp:80,udpמאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגלallow.למטרות אבטחה ואימות, אתם יכולים גם להגדיר כללי דחייה כדי לחסום תנועה בפרוטוקולים הבאים שלא נתמכים:
ah,all,esp,icmp,ipipו-sctp.VPC_CONNECTOR_NETWORK_TAG: תג הרשת האוניברסלי של מחבר ה-VPC, אם רוצים שהכלל יחול על כל מחברי ה-VPC הקיימים ועל כל מחברי ה-VPC שייווצרו בעתיד. או תג הרשת הייחודי של מחבר ה-VPC, אם רוצים לשלוט במחבר ספציפי.
VPC_NETWORK: השם של רשת ה-VPC
PRIORITY: מספר שלם בין 0 ל-65535. לדוגמה, הערך 0 מגדיר את העדיפות הגבוהה ביותר.
מאפשרים תנועה יוצאת כשהיעד נמצא בטווח ה-CIDR שאליו רוצים שהמחבר ייגש.
משתמשים בדגלים
allowו-destination-rangesכדי ליצור כלל חומת אש שמאפשר תעבורת נתונים יוצאת מהמחבר לטווח יעדים ספציפי. מגדירים את טווח היעד לטווח ה-CIDR של המשאב ברשת ה-VPC שאליו רוצים שהמחבר יוכל לגשת. מגדירים את העדיפות של הכלל הזה לערך נמוך יותר מהעדיפות של הכלל שיצרתם בשלב הקודם.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
מחליפים את מה שכתוב בשדות הבאים:
RULE_NAME: השם של כלל חומת האש החדש. לדוגמה,
allow-vpc-connector-for-select-resources.PROTOCOL: פרוטוקול אחד או יותר שרוצים לאפשר ממחבר ה-VPC. הפרוטוקולים הנתמכים הם
tcpאוudp. לדוגמה,tcp:80,udpמאפשר תנועת TCP דרך יציאה 80 ותנועת UDP. מידע נוסף זמין במאמרי העזרה בנושא הדגלallow.RESOURCE_CIDR_RANGE: טווח ה-CIDR של המחבר שהגישה אליו מוגבלת
VPC_NETWORK: השם של רשת ה-VPC
VPC_CONNECTOR_NETWORK_TAG: תג הרשת האוניברסלי של מחבר ה-VPC, אם רוצים שהכלל יחול על כל מחברי ה-VPC הקיימים ועל כל מחברי ה-VPC שייווצרו בעתיד. או תג הרשת הייחודי של מחבר ה-VPC, אם רוצים לשלוט במחבר ספציפי. אם השתמשתם בתג הרשת הייחודי בשלב הקודם, השתמשו בתג הרשת הייחודי.
PRIORITY: מספר שלם שקטן מהעדיפות שהגדרתם בשלב הקודם. לדוגמה, אם הגדרתם את העדיפות של הכלל שיצרתם בשלב הקודם ל-990, נסו 980.
למידע נוסף על הדגלים הנדרשים והאופציונליים ליצירת כללים של חומת אש, קראו את המסמכים של gcloud compute firewall-rules create.
ניהול המחבר
שליטה בתנועה יוצאת משירות
כברירת מחדל, רק בקשות לכתובות IP פנימיות ולשמות DNS פנימיים מנותבות דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless. אתם יכולים לציין את הגדרת תעבורת הנתונים היוצאת של השירות בקובץ app.yaml.
הגדרות תעבורת הנתונים היוצאת לא תואמות לשירות אחזור של כתובות אתרים.
כשמשתמשים בספרייה urlfetch, המערכת מתעלמת מהגדרות התעבורה היוצאת, והבקשות לא מנותבות דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless.
כדי להגדיר את התנהגות תעבורת הנתונים היוצאת של שירות App Engine:
מוסיפים את המאפיין
egress_settingלשדהvpc_access_connectorבקובץapp.yamlשל השירות:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
מחליפים את:
-
PROJECT_IDבמזהה הפרויקט ב- Google Cloud REGIONבאזור שבו נמצא המחברCONNECTOR_NAMEבשם של המחבר.EGRESS_SETTINGבאחת מהאפשרויות הבאות:- ברירת מחדל:
private-ranges-only. רק בקשות לטווחי כתובות IP מסוג RFC 1918 ו-RFC 6598 או לשמות DNS פנימיים מנותבות לרשת ה-VPC. כל שאר הבקשות מנותבות ישירות לאינטרנט. all-trafficכל הבקשות היוצאות מהשירות מנותבות לרשת ה-VPC. לאחר מכן, הבקשות כפופות לכללי חומת האש, ה-DNS וכללי המסלול של רשת ה-VPC. חשוב לזכור שניתוב כל הבקשות היוצאות לרשת ה-VPC מגדיל את כמות תעבורת הנתונים היוצאת שמטופלת על ידי המחבר של "גישה ל-VPC ללא שרת (Serverless)", ועלול לגרור חיובים.
- ברירת מחדל:
-
פורסים את השירות:
gcloud app deploy
כשמשתמשים ב-private-ranges-only, בקשות יוצאות לאינטרנט הציבורי משתמשות במאגר אזורי של כתובות IP דינמיות שמשותפות לעומסי עבודה ללא שרת (serverless).
כדי להגן על חיבורים חיצוניים שרגישים למוניטין מפני חסימות של חומת אש של צד שלישי, או כדי לבודד עומסי עבודה מורשים של סריקת רשת ובדיקת עומסים, צריך להגדיר את הגדרת תעבורת הנתונים היוצאת ל-all-traffic ולהגדיר את Cloud NAT עם כתובת IP סטטית לתעבורת נתונים יוצאת.
ניתוק שירות מרשת VPC
כדי לנתק שירות מרשת VPC, מסירים את השדה vpc_access_connector מהקובץ app.yaml ופורסים מחדש את השירות.
החיובים על מחברים ממשיכים גם אם אין בהם תנועה והם מנותקים. לפרטים נוספים, קראו את התמחור. אם אתם לא צריכים יותר את המחבר, הקפידו למחוק אותו כדי להימנע מחיובים נוספים.
עדכון מחבר
אתם יכולים לעדכן ולעקוב אחרי המאפיינים הבאים של המחבר באמצעות מסוף Google Cloud , Google Cloud CLI או ה-API:
- סוג המכונה (המכונה הווירטואלית)
- מספר מינימלי ומקסימלי של מכונות
- קצב העברת הנתונים, מספר המכונות וניצול המעבד (CPU) לאחרונה
עדכון סוג המכונה
המסוף
נכנסים לדף הסקירה הכללית של Serverless VPC Access.
בוחרים את המחבר שרוצים לערוך ולוחצים על עריכה.
ברשימה Instance type, בוחרים את סוג המכונה (המכונה הווירטואלית) הרצוי. למידע על סוגי המכונות הזמינים, קראו את המאמר קצב העברת נתונים ושינוי קנה מידה.
gcloud
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי לעדכן את סוג המכונה של המחבר, מריצים את הפקודה הבאה בטרמינל:
מחליפים את הערכים בשדות הבאים:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
-
CONNECTOR_NAME: השם של המחבר -
REGION: שם האזור של המחבר -
MACHINE_TYPE: סוג המכונה המועדף. במאמר קצב העברת נתונים ושינוי קנה מידה מפורטים סוגי המכונות הזמינים.
-
הקטנת המספר המינימלי והמקסימלי של המכונות
כדי להקטין את המספר המינימלי והמקסימלי של המכונות:
- יוצרים מחבר חדש עם הערכים הרצויים.
- מעדכנים את השירות או הפונקציה כדי להשתמש במחבר החדש.
- מוחקים את המחבר הישן אחרי שמעבירים את התנועה שלו.
הגדלת המספר המינימלי והמקסימלי של המכונות
המסוף
נכנסים לדף הסקירה הכללית של Serverless VPC Access.
בוחרים את המחבר שרוצים לערוך ולוחצים על עריכה.
בשדה Minimum instances, בוחרים את המספר המינימלי הרצוי של מכונות.
הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי. הערך המקסימלי שאפשר להזין בשדה הזה הוא הערך הנוכחי בשדה Maximum instances פחות 1. לדוגמה, אם הערך בשדה Maximum instances הוא 8, הערך הגבוה ביותר שאפשר להזין בשדה Minimum instances הוא 7.
בשדה Maximum instances, בוחרים את המספר המקסימלי הרצוי של מכונות.
הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי. הערך המקסימלי שאפשר להזין בשדה הזה הוא 10.
gcloud
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי להגדיל את המספר המינימלי או המקסימלי של המכונות במחבר, מריצים את הפקודה הבאה בטרמינל:
מחליפים את הערכים בשדות הבאים:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
-
CONNECTOR_NAME: השם של המחבר -
REGION: שם האזור של המחבר -
MIN_INSTANCES: המספר המינימלי המועדף של המכונות.- הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של
min_instances. כדי למצוא את הערך הנוכחי, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים. - הערך הגדול ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של
max_instancesפחות 1, כי הערך שלmin_instancesחייב להיות קטן מהערך שלmax_instances. לדוגמה, אם הערך שלmax_instancesהוא 8, הערך המקסימלי האפשרי בשדה הזה הוא 7. אם המחבר משתמש בערך ברירת המחדל שלmax-instances, שהוא 10, הערך הגדול ביותר האפשרי בשדה הזה הוא 9. כדי למצוא את הערך שלmax-instances, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים.
- הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של
MAX_INSTANCES:- הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של
max_instances. כדי למצוא את הערך הנוכחי, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים. - הערך המקסימלי שאפשר להזין בשדה הזה הוא 10.
אם רוצים להגדיל רק את המספר המינימלי של המכונות ולא את המספר המקסימלי, עדיין צריך לציין את המספר המקסימלי של המכונות. לעומת זאת, אם רוצים לעדכן רק את המספר המקסימלי של המכונות ולא את המספר המינימלי, עדיין צריך לציין את המספר המינימלי של המכונות. כדי לשמור על המספר המינימלי או המקסימלי של המכונות בערך הנוכחי, צריך לציין את הערך הנוכחי שלהן. כדי למצוא את הערך הנוכחי שלהם, עיינו בקטע חיפוש ערכי המאפיינים הנוכחיים.
- הערך הקטן ביותר שאפשר להזין בשדה הזה הוא הערך הנוכחי של
איך למצוא את ערכי המאפיינים הנוכחיים
כדי למצוא את ערכי המאפיינים הנוכחיים של המחבר, מריצים את הפקודה הבאה בטרמינל:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
-
CONNECTOR_NAME: השם של המחבר -
REGION: שם האזור של המחבר -
PROJECT: שם הפרויקט ב- Google Cloud
מעקב אחרי השימוש במחברים
מעקב אחרי השימוש לאורך זמן יכול לעזור לכם להחליט מתי לשנות את ההגדרות של המחבר. לדוגמה, אם יש עלייה חדה בשימוש במעבד (CPU), אפשר לנסות להגדיל את המספר המקסימלי של המכונות כדי לקבל תוצאות טובות יותר. אם אתם מנצלים את מלוא רוחב הפס, אתם יכולים לעבור למכונה מסוג גדול יותר.
כדי להציג תרשימים של מדדי התפוקה, מספר המכונות וניצול המעבד (CPU) של המחבר לאורך זמן באמצעות מסוף Google Cloud :
נכנסים לדף הסקירה הכללית של Serverless VPC Access.
לוחצים על שם המחבר שרוצים לעקוב אחריו.
בוחרים את מספר הימים שרוצים להציג, בין יום אחד ל-90 ימים.
בתרשים Throughput, מעבירים את הסמן מעל התרשים כדי לראות את קצב הנתונים האחרון של המחבר.
בתרשים Number of instances, מעבירים את העכבר מעל התרשים כדי לראות את מספר המכונות שהמחבר השתמש בהן לאחרונה.
בתרשים CPU Utilization, מציבים את הסמן מעל התרשים כדי לראות את השימוש האחרון של המחבר במעבד. בתרשים מוצג השימוש ב-CPU שמתחלק בין המכונות באחוזונים ה-50, ה-95 וה-99.
מחיקת מחבר
לפני שמוחקים מחבר, צריך להסיר אותו מכל המשאבים ללא שרת (serverless) שעדיין משתמשים בו. אם תמחקו מחבר לפני שתסירו אותו מהמשאבים ללא שרת (serverless), לא תוכלו למחוק את רשת ה-VPC מאוחר יותר.
משתמשי VPC משותף שמגדירים מחברים בפרויקט המארח של ה-VPC המשותף יכולים להשתמש בפקודה gcloud compute networks vpc-access connectors describe כדי להציג את רשימת הפרויקטים שבהם יש משאבים ללא שרת (serverless) שמשתמשים במחבר נתון.
כדי למחוק מחבר, משתמשים במסוף Google Cloud או ב-Google Cloud CLI:
המסוף
נכנסים לדף הסקירה הכללית של Serverless VPC Access במסוףGoogle Cloud :
בוחרים את המחבר שרוצים למחוק.
לוחצים על Delete.
gcloud
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי למחוק מחבר, משתמשים בפקודה הבאה של
gcloud:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
מחליפים את מה שכתוב בשדות הבאים:
- CONNECTOR_NAME בשם של המחבר שרוצים למחוק.
- REGION באזור שבו נמצא המחבר.
ניהול אילוצים בהתאמה אישית לפרויקטים
בקטע הזה מוסבר איך ליצור אילוצים בהתאמה אישית למחברים של גישה ל-VPC ללא שרת (Serverless), ולאכוף אותם ברמת הפרויקט. במאמר יצירה וניהול של מדיניות ארגונית בהתאמה אישית מוסבר איך יוצרים מדיניות ארגונית בהתאמה אישית.
Google Cloud שירות מדיניות הארגון נותן לכם שליטה מרוכזת ופרוגרמטית על המשאבים של הארגון. אדמינים של מדיניות הארגון יכולים להגדיר את מדיניות הארגון, שהיא קבוצה של הגבלות שנקראות אילוצים. האילוצים האלה חלים על משאביGoogle Cloud ועל הצאצאים של המשאבים האלה בהיררכיית המשאבים שלGoogle Cloud . אפשר לאכוף את מדיניות הארגון ברמת הארגון, התיקייה או הפרויקט.
מדיניות הארגון מספקת אילוצים מוגדרים מראש לשירותים שונים שלGoogle Cloud . עם זאת, אם אתם רוצים שליטה מפורטת יותר וניתנת להתאמה אישית על השדות הספציפיים שמוגבלים במדיניות הארגון, אתם יכולים גם ליצור מדיניות ארגון בהתאמה אישית.
יתרונות
חיבור לרשת (VPC) מאפליקציית serverless מאפשר לכם לכתוב מספר כלשהו של אילוצים בהתאמה אישית, באמצעות רוב השדות שמוגדרים על ידי המשתמש ב-Serverless VPC Access API. לדוגמה, אתם יכולים ליצור אילוץ בהתאמה אישית שמציין באילו רשתות משנה אפשר להשתמש במחבר של חיבור לרשת (VPC) מאפליקציית serverless.
אחרי שמחילים את האילוץ, בקשות שמפירות מדיניות שאוכפת אילוץ בהתאמה אישית מציגות הודעת שגיאה ב-CLI של gcloud וביומנים של "גישה ל-VPC ללא שרת (Serverless)". הודעת השגיאה מכילה את מזהה האילוץ ואת התיאור של האילוץ המותאם אישית שהופר.
ירושה של מדיניות
כברירת מחדל, מדיניות הארגון עוברת בירושה לצאצאים של המשאבים שעליהם אתם אוכפים את המדיניות. לדוגמה, אם אוכפים מדיניות בתיקייה, Google Cloud אוכף את המדיניות בכל הפרויקטים שבתיקייה. במאמר כללי הערכה של היררכיה מוסבר בהרחבה על ההתנהגות הזו ואיך לשנות אותה.
מגבלות
אי אפשר לציין סוג מכונה, מספר מינימלי של מכונות או מספר מקסימלי של מכונות.
לפני שמתחילים
חשוב לוודא שאתם יודעים מהו מזהה הארגון שלכם.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול מדיניות הארגון, בקשו מהאדמין להקצות לכם את התפקיד אדמין של מדיניות הארגון (roles/orgpolicy.policyAdmin) ב-IAM במשאב הארגון.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת אילוץ בהתאמה אישית
אילוץ מותאם אישית מוגדר בקובץ YAML לפי המשאבים, השיטות, התנאים והפעולות שנתמכים בשירות שבו אתם אוכפים את מדיניות הארגון. התנאים של האילוצים המותאמים אישית מוגדרים באמצעות Common Expression Language (CEL). בקטע CEL במאמר יצירה וניהול של אילוצים בהתאמה אישית מוסבר איך ליצור תנאים באילוצים בהתאמה אישית באמצעות CEL.
כדי ליצור קובץ YAML לאילוץ בהתאמה אישית של חיבור לרשת (VPC) מאפליקציית serverless, אפשר להיעזר בדוגמה הבאה:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
מחליפים את מה שכתוב בשדות הבאים:
ORGANIZATION_ID: מזהה הארגון, למשל123456789.
CONSTRAINT_NAME: השם שרוצים לתת לאילוץ המותאם אישית החדש. אילוץ בהתאמה אישית חייב להתחיל ב-custom., ויכול לכלול רק אותיות רישיות, אותיות קטנות או מספרים, לדוגמה, custom.defaultNetworkConstraint. האורך המקסימלי של השדה הזה הוא 70 תווים, לא כולל הקידומת.
CONDITION: תנאי CEL שנכתב כנגד ייצוג של משאב שירות נתמך. האורך המקסימלי של השדה הזה הוא 1,000 תווים. לדוגמה:"resource.network == default".
ACTION: הפעולה שצריך לבצע אם מתקיים התנאיcondition. הערך יכול להיותALLOWאוDENY.
DISPLAY_NAME: שם קריא לאנשים של האילוץ. האורך המקסימלי של השדה הזה הוא 200 תווים.
DESCRIPTION: תיאור קריא של האילוץ שיוצג כהודעת שגיאה במקרה של הפרת המדיניות, לדוגמה,"Require network to not be set to default.". האורך המקסימלי של השדה הזה הוא 2,000 תווים.
למידע נוסף על יצירת אילוץ בהתאמה אישית, ראו הגדרת אילוצים בהתאמה אישית.
הגדרת אילוץ בהתאמה אישית
המסוף
כדי ליצור אילוץ בהתאמה אישית:
- במסוף Google Cloud , נכנסים לדף מדיניות הארגון.
- בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
- לוחצים על Custom constraint.
- בתיבה Display name, מזינים שם לאילוץ שיהיה קריא לאנשים. השם הזה מופיע בהודעות שגיאה ואפשר להשתמש בו לזיהוי ולניפוי באגים. אל תשתמשו בפרטים אישיים מזהים (PII) או במידע רגיש בשמות לתצוגה, כי השם הזה עלול להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 200 תווים.
-
בתיבה Constraint ID, מזינים את המזהה שרוצים לתת לאילוץ החדש בהתאמה אישית. אילוץ בהתאמה אישית יכול להכיל רק אותיות (כולל אותיות רישיות וקטנות) או מספרים, לדוגמה
custom.defaultNetworkConstraint. השדה הזה יכול להכיל עד 70 תווים, לא כולל הקידומת (custom.), לדוגמה,organizations/123456789/customConstraints/custom. אל תכללו פרטים אישיים מזהים או מידע רגיש במזהה האילוץ, כי הם עלולים להיחשף בהודעות שגיאה. - בתיבה Description, מזינים תיאור של האילוץ שקריא לאנשים. התיאור הזה משמש כהודעת שגיאה כשיש הפרה של המדיניות. ציינו פרטים על הסיבה להפרת המדיניות ואיך לפתור את הבעיה. אל תכללו פרטים אישיים מזהים או מידע רגיש בתיאור, כי הם עלולים להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 2,000 תווים.
-
בתיבה Resource type, בוחרים את השם של משאב ה- Google Cloud REST שמכיל את האובייקט והשדה שרוצים להגביל, לדוגמה
container.googleapis.com/Cluster. רוב סוגי המשאבים תומכים בעד 20 אילוצים בהתאמה אישית. אם תנסו ליצור יותר אילוצים בהתאמה אישית, הפעולה תיכשל. -
אפשר לאכוף את האילוץ הזה רק ב-REST
CREATE. - כדי להגדיר תנאי, לוחצים על עריכת התנאי.
-
בחלונית Add condition, יוצרים תנאי CEL שמתייחס למשאב שירות נתמך, לדוגמה
resource.management.autoUpgrade == false. השדה הזה יכול להכיל עד 1,000 תווים. לפרטים על השימוש ב-CEL, קראו את המאמר Common Expression Language. מידע נוסף על משאבי השירות שבהם אפשר להשתמש באילוצים המותאמים אישית מופיע במאמר שירותים שנתמכים באילוצים מותאמים אישית. - לוחצים על Save.
- בקטע Action, בוחרים אם לאשר או לדחות את השיטה שנבדקה אם התנאי מתקיים.
- לוחצים על Create constraint.
כדי לראות את השיטות הנתמכות לכל שירות, חפשו את השירות במאמר שירותים שתומכים באילוצים בהתאמה אישית.
פעולת הדחייה פירושה שהפעולה ליצירה או לעדכון של המשאב נחסמת אם התנאי מקבל את הערך true.
פעולת ההרשאה מאפשרת ליצור או לעדכן את המשאב רק אם התנאי מתקיים. כל מקרה אחר, מלבד אלה שרשומים במפורש בתנאי, נחסם.
אחרי שמזינים ערך בכל שדה, הגדרת ה-YAML המקבילה לאילוץ המותאם אישית הזה מופיעה בצד שמאל.
gcloud
- כדי ליצור אילוץ בהתאמה אישית, יוצרים קובץ YAML בפורמט הבא:
-
ORGANIZATION_ID: מזהה הארגון, למשל123456789. -
CONSTRAINT_NAME: השם שרוצים לתת לאילוץ החדש בהתאמה אישית. אילוץ בהתאמה אישית יכול להכיל רק אותיות (כולל אותיות רישיות וקטנות) או מספרים, לדוגמה,custom.defaultNetworkConstraint. השדה הזה יכול להכיל עד 70 תווים, לא כולל הקידומת (custom.) – לדוגמה,organizations/123456789/customConstraints/custom. אל תכללו פרטים אישיים מזהים (PII) או מידע רגיש במזהה האילוץ, כי הם עלולים להיחשף בהודעות שגיאה. -
RESOURCE_NAME: השם המלא של המשאב ב- Google Cloudשמכיל את האובייקט והשדה שרוצים להגביל. לדוגמה,vpcaccess.googleapis.com/Connector. רוב סוגי המשאבים תומכים בעד 20 אילוצים בהתאמה אישית. אם תנסו ליצור יותר אילוצים בהתאמה אישית, הפעולה תיכשל. -
methodTypes: שיטות ה-REST שעליהן נאכף האילוץ. הערך יכול להיות רקCREATE. -
CONDITION: תנאי CEL שנכתב כנגד ייצוג של משאב שירות נתמך. השדה הזה יכול להכיל עד 1,000 תווים. לדוגמה,"resource.network == default". -
ACTION: הפעולה שצריך לבצע אם התנאיconditionמתקיים. הערך יכול להיות רקALLOW. -
DISPLAY_NAME: שם קריא לאנשים של האילוץ. השם הזה מופיע בהודעות שגיאה ואפשר להשתמש בו לזיהוי ולניפוי באגים. אל תשתמשו בפרטים אישיים מזהים (PII) או במידע רגיש בשמות המוצגים, כי השם הזה עלול להיחשף בהודעות שגיאה. השדה הזה יכול להכיל עד 200 תווים. -
DESCRIPTION: תיאור ידידותי למשתמש של האילוץ, שיוצג כהודעת שגיאה במקרה של הפרת המדיניות. השדה הזה יכול להכיל עד 2,000 תווים. -
אחרי שיוצרים את קובץ ה-YAML לאילוץ חדש בהתאמה אישית, צריך להגדיר אותו כדי שיהיה זמין למדיניות הארגון. כדי להגדיר אילוץ בהתאמה אישית, משתמשים בפקודה
gcloud org-policies set-custom-constraint: -
כדי לוודא שהאילוץ המותאם אישית קיים, משתמשים בפקודה
gcloud org-policies list-custom-constraints:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: RESOURCE_NAME methodTypes: - CREATE condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
מחליפים את מה שכתוב בשדות הבאים:
כדי לראות את השיטות הנתמכות בכל שירות, חפשו את השירות במאמר שירותים שתומכים באילוצים בהתאמה אישית.
למידע נוסף על המשאבים הזמינים לכתיבת תנאים, ראו משאבים נתמכים.
הפעולה allow פירושה שאם התנאי מקבל את הערך true, מותר ליצור או לעדכן את המשאב. זה גם אומר שכל מקרה אחר, מלבד המקרה שמופיע במפורש בתנאי, חסום.
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
מחליפים את CONSTRAINT_PATH בנתיב המלא לקובץ האילוץ בהתאמה אישית. לדוגמה, /home/user/customconstraint.yaml.
בסיום הפעולה, האילוצים המותאמים אישית יהיו זמינים כמדיניות של הארגון ברשימת Google Cloud כללי המדיניות של הארגון.
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
מחליפים את ORGANIZATION_ID במזהה של משאב הארגון.
למידע נוסף, קראו את המאמר הצגת מדיניות הארגון.
אכיפה של אילוץ בהתאמה אישית
כדי לאכוף אילוץ, אתם יכולים ליצור מדיניות ארגון שמפנה אליו, ואז להחיל את מדיניות הארגון על משאב ב- Google Cloud .המסוף
- במסוף Google Cloud , נכנסים לדף מדיניות הארגון.
- בכלי לבחירת פרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
- ברשימה שבדף מדיניות הארגון, בוחרים את האילוץ כדי להציג את הדף Policy details של אותו אילוץ.
- כדי להגדיר את מדיניות הארגון למשאב הזה, לוחצים על ניהול המדיניות.
- בדף עריכת המדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
- לוחצים על Add a rule.
- בקטע Enforcement, בוחרים אם לאכוף את מדיניות הארגון הזו או לא.
- אופציונלי: כדי להוסיף תנאי למדיניות הארגון על סמך תג, לוחצים על Add condition. שימו לב: אם מוסיפים כלל מותנה למדיניות הארגון, צריך להוסיף לפחות כלל אחד לא מותנה, אחרת אי אפשר לשמור את המדיניות. מידע נוסף מופיע במאמר הגדרת ההיקף של מדיניות הארגון באמצעות תגים.
- לוחצים על בדיקת השינויים כדי לדמות את ההשפעה של מדיניות הארגון. למידע נוסף, קראו את המאמר בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.
- כדי לאכוף את מדיניות הארגון במצב פרימטר לבדיקות, לוחצים על הגדרת המדיניות להרצת בדיקה. למידע נוסף, קראו את המאמר בדיקת כללי מדיניות של הארגון.
- אחרי שמוודאים שמדיניות הארגון במצב פרימטר לבדיקות פועלת כמו שצריך, לוחצים על Set policy כדי להגדיר את המדיניות הפעילה.
gcloud
- כדי ליצור מדיניות ארגונית עם כללים בוליאניים, יוצרים קובץ YAML של מדיניות שמפנה לאילוץ:
-
PROJECT_ID: הפרויקט שבו רוצים לאכוף את האילוץ. -
CONSTRAINT_NAME: השם שהגדרתם לאילוץ המותאם אישית. לדוגמה,custom.defaultNetworkConstraint. -
כדי לאכוף את מדיניות הארגון במצב פרימטר לבדיקות, מריצים את הפקודה הבאה עם הדגל
dryRunSpec: -
אחרי שמוודאים שמדיניות הארגון במצב פרימטר לבדיקות פועלת כמצופה, מגדירים את המדיניות הפעילה באמצעות הפקודה
org-policies set-policyוהדגלspec:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true dryRunSpec: rules: - enforce: true
מחליפים את מה שכתוב בשדות הבאים:
gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec
מחליפים את POLICY_PATH בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות תיכנס לתוקף תוך 15 דקות לכל היותר.
gcloud org-policies set-policy POLICY_PATH --update-mask=spec
מחליפים את POLICY_PATH בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות תיכנס לתוקף תוך 15 דקות לכל היותר.
בדיקת האילוץ המותאם אישית
כדי לבדוק את הדוגמה שמגבילה את הגדרות התעבורה הנכנסת, פורסים מחבר בפרויקט כשהרשת מוגדרת ל-default:
gcloud compute networks vpc-access connectors create org-policy-test \
--project=PROJECT_ID \
--region=REGION_ID \
--network=default
הפלט שיתקבל:
Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]
דוגמאות למדיניות ארגונית בהתאמה אישית לתרחישים נפוצים
בטבלה הבאה מפורטות דוגמאות לאילוצים בהתאמה אישית שיכולים להיות שימושיים לחיבורים לרשת VPC ללא שרת:
| תיאור | תחביר של אילוצים |
|---|---|
| דרישה שמחברי חיבור לרשת VPC יוכלו להשתמש רק ברשת ספציפית. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.network == 'allowlisted-network'" actionType: ALLOW displayName: allowlistNetworks description: Require connectors to use a specific network. |
| תיאור | תחביר של אילוצים |
| לדרוש שלמחברים של חיבור לרשת (VPC) מאפליקציית serverless תהיה גישה רק לרשת משנה ספציפית. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.subnet.name == 'allocated-subnet'" actionType: ALLOW displayName: restrictSubnetForProject description: This project is only allowed to use the subnet "allocated-subnet". |
פתרון בעיות
הרשאות של חשבון שירות
סוכן שירות של גישה ל-VPC ללא שרת (Serverless)
כדי לבצע פעולות בפרויקט Google Cloud , החיבור לרשת (VPC) מאפליקציית serverless משתמש בחשבון השירות Serverless VPC Access Service Agent. כתובת האימייל של חשבון השירות הזה היא בפורמט הבא:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
כברירת מחדל, לחשבון השירות הזה יש את התפקיד סוכן שירות של גישה ל-VPC ללא שרת (Serverless) (roles/vpcaccess.serviceAgent). אם תשנו את ההרשאות של החשבון הזה, יכול להיות שהפעולות של הגישה ל-VPC ללא שרת ייכשלו.
סוכן שירות של Google APIs
Serverless VPC Access API תלוי ב-Deployment Manager כדי להקצות את המשאבים הבסיסיים שמטמיעים את המחבר. כדי לבצע פעולות בפרויקט ב- Google Cloud , Deployment Manager משתמש בסוכן שירות של Google APIs. כתובת האימייל של חשבון השירות הזה היא בפורמט הבא:
PROJECT_NUMBER@cloudservices.gserviceaccount.com
כברירת מחדל, לחשבון השירות הזה יש את התפקיד "עריכה" (roles/project.editor) או את ההרשאות של התפקיד "עריכה". אם אתם רוצים לתת לסוכן השירות של Google APIs הרשאות מוגבלות יותר, בלי להשפיע על הפונקציונליות של חיבור לרשת VPC ללא שרת, אתם יכולים לתת לחשבון השירות הזה את התפקיד סוכן שירות של גישה ל-VPC ללא שרת (roles/vpcaccess.serviceAgent).
שירותים מסוימים, מלבד Deployment Manager, מסתמכים גם על הרשאות ברירת המחדל של תפקיד העריכה של סוכן השירות של Google APIs. הסרת התפקיד הזה עלולה להשפיע על שירותים ומשאבים אחרים, מלבד Serverless VPC Access API. למידע נוסף על ההשלכות של הסרת התפקיד "עריכה" מסוכן השירות של Google APIs, קראו את המאמר סוכן שירות של Google APIs.
ביצועים חלשים ברשת או ניצול גבוה של המעבד (CPU) במצב חוסר פעילות
שימוש במחבר אחד לאלפי מכונות עלול לגרום לירידה בביצועים ולניצול מוגבר של המעבד (CPU) במצב חוסר פעילות. כדי לפתור את הבעיה, צריך לפצל את השירותים בין כמה מחברים.
בעיות ב-MTU בהתאמה אישית
אם נתקלתם בבעיות עם MTU בהתאמה אישית, ודאו שאתם משתמשים בהגדרת ברירת המחדל של MTU ב-Cloud Run.
שגיאות
שגיאה: לחשבון השירות נדרש תפקיד של סוכן שירות
אם אתם משתמשים באילוץ על מדיניות הארגון Restrict Resource Service Usage כדי לחסום את Cloud Deployment Manager (deploymentmanager.googleapis.com), יכול להיות שתופיע הודעת השגיאה הבאה:
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
מגדירים את מדיניות הארגון כך ש-Deployment Manager יוסר מרשימת הישויות שנחסמו או יתווסף לרשימת ההיתרים.
שגיאה ביצירת המחבר
אם אתם מקבלים הודעת שגיאה כשאתם מנסים ליצור מחבר, נסו את הפעולות הבאות:
- מציינים טווח כתובות IP פנימיות מסוג RFC 1918 שלא חופף לאף אחת מהכתובות השמורות ברשת ה-VPC.
- נותנים לפרויקט הרשאה להשתמש בתמונות של מכונות וירטואליות ב-Compute Engine מהפרויקט עם המזהה
serverless-vpc-access-images. למידע נוסף על עדכון מדיניות הארגון בהתאם, ראו הגדרת אילוצי גישה לתמונות.
אין גישה למשאבים
אם ציינתם מחבר אבל עדיין אין לכם גישה למשאבים ברשת ה-VPC, ודאו שאין ברשת ה-VPC כללי חומת אש עם עדיפות נמוכה מ-1,000 שמונעים תעבורת נתונים נכנסת מטווח כתובות ה-IP של המחבר.
אם אתם מגדירים מחבר בפרויקט שירות של VPC משותף, ודאו שכללי חומת האש מאפשרים תעבורת נתונים נכנסת (ingress) מהתשתית ללא שרת (serverless) אל המחבר.
שגיאה: החיבור נדחה
אם אתם מקבלים שגיאות מסוג connection refused או connection timeout שפוגעות בביצועי הרשת, יכול להיות שמספר החיבורים גדל ללא הגבלה בין הקריאות לאפליקציה ללא שרת (serverless). כדי להגביל את מספר החיבורים המקסימלי לכל מכונה, צריך להשתמש בספריית לקוח שתומכת במאגרי חיבורים. דוגמאות מפורטות לשימוש במאגרי חיבורים מופיעות במאמר ניהול חיבורים למסדי נתונים.
השגיאה "המשאב לא נמצא"
כשמוחקים רשת VPC או כלל של חומת אש, יכול להיות שתופיע הודעה דומה לזו: The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
למידע נוסף על השגיאה הזו ועל הפתרון שלה, קראו את הקטע השגיאה "המשאב לא נמצא" במסמכי התיעוד של כללי חומת האש של VPC.
השלבים הבאים
- מעקב אחרי פעילות האדמין באמצעות רישום ביומן הביקורת של חיבור לרשת (VPC) מאפליקציית serverless.
- כדי להגן על המשאבים והנתונים, אפשר ליצור גבולות גזרה לשירות באמצעות VPC Service Controls.
- מידע ולמידה על תפקידי ניהול הזהויות והרשאות הגישה (IAM) שמשויכים לחיבור לרשת VPC מאפליקציית Serverless. במאמר תפקידים של חיבור לרשת (VPC) מאפליקציית serverless שבמסמכי התיעוד של IAM, תוכלו לראות את רשימת ההרשאות שמשויכות לכל תפקיד.
- איך מתחברים ל-Memorystore מסביבת ברירת המחדל ב-App Engine.