אתם יכולים להקצות כתובות IP חיצוניות סטטיות למכונות הווירטואליות (VM) ולמכונות Bare Metal. אפשר גם לשנות, לרשום ולשחרר כתובות IP סטטיות למכונות. כדי לשמור כתובת IP חיצונית סטטית, ראו שמירת כתובת IP חיצונית סטטית.
כתובות IP חיצוניות יכולות להיות סטטיות או זמניות. אם מכונה צריכה כתובת IP חיצונית קבועה שלא משתנה, צריך לבצע את הפעולות הבאות:
- מקבלים כתובת IP חיצונית סטטית. אתם יכולים לשמור כתובות IP חיצוניות חדשות או להפוך כתובות IP חיצוניות ארעיות קיימות לכתובות קבועות.
- מקצים את כתובת ה-IP השמורה למכונה וירטואלית קיימת, או מקצים אותה כשיוצרים מכונה וירטואלית חדשה.
אם אתם צריכים כתובת IP סטטית ברשת הפנימית של Compute Engine, כדאי לעיין במאמר שמירת כתובת IP פנימית סטטית.
מידע על שמירת כתובת IP חיצונית סטטית או על יצירת כתובת IP חיצונית גלובלית זמין במאמר בנושא שמירת כתובת IP חיצונית סטטית.
לפני שמתחילים
- מידע על כתובות IP
- מידע על מכסות ומגבלות של כתובות IP חיצוניות סטטיות
- מידע על תמחור של כתובות IP חיצוניות
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה ולניהול של כתובות IP סטטיות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
כדי ליצור ולעדכן מכונות: Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
כדי להגדיר מגבלות מדיניות לארגון: אדמין מדיניות הארגון (
roles/orgpolicy.policyAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות להגדרה ולניהול של כתובות IP סטטיות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להגדיר ולנהל כתובות IP סטטיות, נדרשות ההרשאות הבאות:
-
compute.instances.update -
compute.instances.updateNetworkInterface -
compute.instances.addAccessConfig -
compute.instances.deleteAccessConfig -
compute.networks.list -
compute.subnetworks.use -
compute.subnetworks.list -
כדי ליצור מופעים:
-
compute.instances.createבפרויקט - כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM):
compute.images.useReadOnlyבקובץ אימג' - כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית:
compute.snapshots.useReadOnlyבקובץ ה-snapshot - כדי להשתמש בתבנית של הגדרות מכונה ליצירת המכונה הווירטואלית:
compute.instanceTemplates.useReadOnlyבתבנית של הגדרות המכונה - כדי להקצות רשת מדור קודם למכונה הווירטואלית:
compute.networks.useבפרויקט - כדי לציין כתובת IP סטטית למכונה הווירטואלית:
compute.addresses.useבפרויקט - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם:
compute.networks.useExternalIpבפרויקט - כדי לציין רשת משנה למכונה הווירטואלית:
compute.subnetworks.useבפרויקט או ברשת המשנה שנבחרה - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC:
compute.subnetworks.useExternalIpבפרויקט או ברשת המשנה שנבחרה - כדי להגדיר מטא-נתונים של המכונה הווירטואלית:
compute.instances.setMetadataבפרויקט - כדי להגדיר תגים למכונה הווירטואלית:
compute.instances.setTagsבמכונה הווירטואלית - כדי להגדיר תוויות למכונה הווירטואלית:
compute.instances.setLabelsבמכונה הווירטואלית - כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית:
compute.instances.setServiceAccountבמכונה הווירטואלית - כדי ליצור דיסק חדש למכונה הווירטואלית:
compute.disks.createבפרויקט - כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה:
compute.disks.useבדיסק - כדי לצרף דיסק קיים במצב קריאה-בלבד:
compute.disks.useReadOnlyבדיסק
-
-
כדי לערוך את מדיניות הארגון:
-
orgpolicy.policy.get -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.update
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מגבלות
רק משאב אחד בכל פעם יכול להשתמש בכתובת IP חיצונית סטטית.
אין דרך לבדוק אם כתובת IP היא סטטית או זמנית אחרי שהיא הוקצתה למשאב. אפשר להשוות את כתובת ה-IP לרשימה של כתובות IP חיצוניות סטטיות ששמורות לפרויקט הזה. משתמשים בפקודת המשנה
gcloud compute addresses listכדי לראות רשימה של כתובות IP חיצוניות סטטיות שזמינות לפרויקט.לכל מכונה וירטואלית יכולים להיות כמה ממשקי רשת, ולכל ממשק יכולות להיות מוקצות כתובות IP מהסוגים הבאים, בהתאם לסוג המערך שלו:
- ממשקי IPv4 בלבד:
- כתובת IPv4 פנימית (חובה)
- כתובת IPv4 חיצונית (אופציונלי)
- ממשקי מחסנית כפולה (IPv4 ו-IPv6):
- כתובת IPv4 פנימית (חובה)
- כתובת IPv4 חיצונית (אופציונלי)
/96טווח כתובות IPv6, פנימי או חיצוני, אבל לא שניהם (חובה)
- ממשקי IPv6 בלבד:
/96טווח כתובות IPv6, פנימי או חיצוני, אבל לא שניהם (חובה)
- ממשקי IPv4 בלבד:
אי אפשר לבטל את ההקצאה של כתובת IPv6 חיצונית למכונה וירטואלית עם ממשק רשת IPv6 בלבד, או לשנות אותה. עם זאת, אתם יכולים להפוך כתובת IP חיצונית ארעית של משאב לכתובת IP חיצונית סטטית, כך שהכתובת תישאר שמורה גם אחרי שהמשאב יימחק.
אי אפשר לשנות את השם של כתובת IP סטטית.
הערה: ממשקי רשת יכולים לקבל תנועה מ
כללי העברה מרובים, שעשויים לשרת כתובות IP חיצוניות אחרות. כל מספר של כתובות IP חיצוניות יכול להפנות לממשק רשת באמצעות כללי ההעברה האלה, אבל לכל ממשק רשת אפשר להקצות רק כתובת IPv4 חיצונית אחת וטווח כתובות IPv6 חיצוני אחד /96.
מידע נוסף על איזון עומסים וכללי העברה זמין במאמרי העזרה בנושא איזון עומסים.
הצגת כתובות IP חיצוניות סטטיות זמינות
כדי להציג רשימה של כתובות IP חיצוניות סטטיות ששמרתם לפרויקט, פועלים לפי השלבים הבאים.
המסוף
נכנסים לדף IP addresses במסוף Cloud de Confiance .
לוחצים על External IP addresses (כתובות IP חיצוניות).
gcloud
משתמשים בפקודה gcloud compute addresses list:
כדי לראות את כל כתובות ה-IP, משתמשים בפקודה הבאה:
gcloud compute addresses list
כדי לראות רשימה של כל כתובות ה-IP הגלובליות, משתמשים בפקודה הבאה:
gcloud compute addresses list --global
כדי להציג רשימה של כל כתובות ה-IP האזוריות באזור מסוים, משתמשים בפקודה הבאה:
gcloud compute addresses list \ --regions=REGIONמחליפים את
REGIONבאזור שרוצים להציג את הכתובות שלו. אפשר לציין כתובות של כמה אזורים באמצעות רשימה של שמות אזורים מופרדים בפסיקים:gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
API
כדי להציג רשימה של כתובות IPv4 או IPv6 אזוריות, קוראים לשיטה
addresses.list:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של הבקשה הזו -
REGION: שם האזור של הבקשה
-
כדי להציג רשימה של כל הכתובות בכל האזורים, קוראים לשיטה
addresses.aggregatedList:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/aggregated/addresses
כדי להציג רשימה של כתובות IPv4 או IPv6 גלובליות, קוראים לשיטה
globalAddresses.list:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/global/addresses
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט של הבקשה הזו
המשך
Java
Python
הגדרת כתובות IP חיצוניות סטטיות
בקטעים הבאים מוסבר איך להגדיר כתובות IP חיצוניות סטטיות למופעים.
יצירת מכונה שמשתמשת בכתובת IP חיצונית סטטית
אחרי ששומרים כתובת IP חיצונית סטטית, אפשר להקצות אותה למכונה.
המסוף
נכנסים לדף Create an instance במסוף Cloud de Confiance .
כדי להקצות כתובת IP חיצונית סטטית למופע, מבצעים את הפעולות הבאות:
בתפריט הניווט, לוחצים על Networking (רשת).
בקטע Network interfaces (ממשקי רשת), מציינים את ממשקי הרשת שרוצים להגדיר למופע באמצעות האפשרויות הבאות:
כדי להוסיף ממשק רשת, לוחצים על הוספת ממשק רשת. אחר כך, בוחרים רשת מהרשימה רשת.
כדי למחוק ממשק רשת, לוחצים על מחיקה.
בוחרים באחת מהאפשרויות הבאות:
כדי להקצות כתובת IPv4 חיצונית סטטית, מבצעים את הפעולות הבאות:
- מרחיבים את ממשק הרשת.
- בוחרים את כתובת ה-IP מהרשימה External IPv4 address.
כדי להקצות כתובת IPv6 חיצונית סטטית, מבצעים את הפעולות הבאות:
- מרחיבים את ממשק הרשת שמכיל תת-רשת עם טווח כתובות IPv6 חיצוניות.
- בוחרים את רשת המשנה מהרשימה Subnetwork.
- בקטע IP stack type, בוחרים באפשרות IPv4 and IPv6 (dual-stack) או באפשרות IPv6 (single-stack).
- בוחרים את כתובת ה-IPv6 החיצונית החדשה שהוקצתה מהרשימה External IPv6 address. אפשר גם לבחור באפשרות שמירת כתובת IPv6 חיצונית סטטית ולשמור כתובת IPv6 חיצונית סטטית חדשה.
- בקטע Network Service Tier, לוחצים על Premium.
כדי לסיים את השינוי של ממשק הרשת, לוחצים על Done.
ממשיכים בתהליך יצירת המופע.
gcloud
אתם יכולים ליצור מכונה ולהקצות לה כתובת IP חיצונית סטטית אזורית שכבר שמרתם.
כדי להקצות כתובת IPv4 חיצונית סטטית, מבצעים את הפעולות הבאות:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --address=IPV4_ADDRESSכדי להקצות כתובת IPv6 חיצונית סטטית, מבצעים את הפעולות הבאות:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --subnet=SUBNET \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier=PREMIUMמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מכונת Compute. -
ZONE: האזור שבו רוצים ליצור את המכונה -
IPV4_ADDRESS: כתובת ה-IPv4 להקצאה למכונה. משתמשים בכתובת ה-IP החיצונית הסטטית השמורה, ולא בשם הכתובת. -
SUBNET: רשת משנה שמכילה כתובות IPv6 חיצוניות -
STACK_TYPE: סוג ה-stack של המכונה,IPV4_IPV6(dual-stack) אוIPV6_ONLY -
IPV6_ADDRESS: כתובת ה-IPv6 להקצאה למכונה. משתמשים בכתובת ה-IP החיצונית הסטטית השמורה, ולא בשם הכתובת.
-
Terraform
אתם יכולים להשתמש במשאב google_compute_instance כדי להקצות כתובת IP חיצונית.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
כדי להקצות כתובת IPv4 חיצונית סטטית למכונת Compute חדשה, מבצעים את הפעולות הבאות:
בבקשה ליצירת מכונה חדשה, צריך לציין במפורש את המאפיין
networkInterfaces[].accessConfigs[].natIPואת כתובת ה-IPv4 החיצונית שרוצים להשתמש בה, לדוגמה:{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IPV4_ADDRESS" }], "network": "global/networks/default" }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" } }] }מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מכונת ה-Compute -
ZONE: האזור שבו רוצים ליצור את המכונה -
MACHINE_TYPE: אופציונלי: כתובת URL מלאה או חלקית של משאב מסוג מכונה לשימוש כשיוצרים את המכונה, בפורמט:zones/ZONE/machineTypes/MACHINE_TYPE -
IPV4_ADDRESS: כתובת ה-IPv4 להקצאה למכונה. משתמשים בכתובת ה-IP החיצונית הסטטית השמורה, ולא בשם הכתובת. -
SOURCE_IMAGE: גרסה ספציפית של תמונה ציבורית, כמוprojects/debian-cloud/global/images/debian-10-buster-v20200309או משפחה של תמונות, כמוprojects/debian-cloud/global/images/family/debian-10
-
כדי להקצות כתובת IPv6 חיצונית סטטית למכונה חדשה, מבצעים את הפעולות הבאות:
בבקשה ליצירת מכונה וירטואלית חדשה, מציינים במפורש את המאפיין
networkInterfaces[].ipv6AccessConfigs[].externalIpv6ואת כתובת ה-IPv6 החיצונית שרוצים להשתמש בה, לדוגמה:{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "ipv6AccessConfigs": [{ "externalIpv6": "IPV6_ADDRESS", "externalIpv6PrefixLength": 96, "name": "external-ipv6-access-config", "networkTier": "PREMIUM", "type": "DIRECT_IPV6" }], "stackType": "STACK_TYPE", "subnetwork":"SUBNETWORK" }], "disks": [{ "autoDelete": "true", "boot": "true", "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, }], }מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מכונת ה-Compute -
ZONE: האזור שבו רוצים ליצור את המכונה -
MACHINE_TYPE: אופציונלי: כתובת URL מלאה או חלקית של משאב מסוג מכונה לשימוש כשיוצרים את המכונה, בפורמט:zones/ZONE/machineTypes/MACHINE_TYPE -
IPV6_ADDRESS: כתובת ה-IPv6 להקצאה למכונה. משתמשים בכתובת ה-IP החיצונית הסטטית השמורה, ולא בשם הכתובת. -
STACK_TYPE: סוג ה-stack של המכונה, יכול להיותIPV4_IPV6(dual-stack) אוIPV6_ONLY -
SUBNET: רשת משנה שמכילה כתובות IPv6 חיצוניות -
SOURCE_IMAGE: גרסה ספציפית של תמונה ציבורית, כמו"projects/debian-cloud/global/images/debian-10-buster-v20200309"או משפחה של תמונות, כמו"projects/debian-cloud/global/images/family/debian-10"
-
המשך
Java
Python
שינוי או הקצאה של כתובת IP חיצונית למכונה קיימת
אתם יכולים לשנות או להקצות כתובת IP חיצונית, ארעית או סטטית, למכונה קיימת עם IPv4 בלבד או עם תמיכה כפולה. ההליך הזה לא נתמך במופעים של IPv6 בלבד.
למכונת חישוב יכולים להיות כמה ממשקי רשת. לממשק עם מחסנית אחת יכולה להיות כתובת IP חיצונית אחת. לממשק עם תמיכה כפולה יכולה להיות כתובת IPv4 חיצונית אחת וכתובת IPv6 חיצונית אחת. אם למכונה כבר יש כתובת IP חיצונית, צריך קודם להסיר את הכתובת הזו. אחר כך תוכלו להקצות כתובת IP חיצונית חדשה למכונה הקיימת.
המסוף
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על השם של המכונה שרוצים להקצות לה כתובת IP חיצונית. יוצג הדף Instance details.
בדף Instance details (פרטי המופע), מבצעים את השלבים הבאים:
- לוחצים על Edit.
- מרחיבים את Network interfaces (ממשקי רשת).
- בוחרים את כתובת ה-IP החיצונית הנדרשת להקצאה למופע.
אם המכונה היא IPv4 בלבד ואתם רוצים להקצות לה כתובת IPv6, אתם צריכים קודם לשנות את סוג הערימה ל-dual-stack.
- בקטע External IPv4 address (כתובת IPv4 חיצונית), בוחרים באפשרות Ephemeral (זמנית) או בכתובת IPv4 חיצונית סטטית.
- בשדה External IPv6 address (כתובת IPv6 חיצונית), בוחרים באפשרות Ephemeral (Automatic) (זמנית (אוטומטית)), Ephemeral (Custom) (זמנית (בהתאמה אישית)) או בכתובת IPv6 חיצונית סטטית.
- לוחצים על סיום.
לוחצים על Save.
gcloud
אופציונלי: שומרים כתובת IP חיצונית סטטית.
אם רוצים להקצות כתובת IP חיצונית סטטית, צריך לשמור כתובת ולוודא שהיא לא בשימוש של משאב אחר. אם צריך, פועלים לפי ההוראות לשמירת כתובת IP חיצונית סטטית חדשה או לביטול ההקצאה של כתובת IP חיצונית סטטית.
אם אתם מתכוונים להשתמש בכתובת IP חיצונית ארעית, אתם יכולים לדלג על השלב הזה, ו-Compute Engine יקצה באופן אקראי כתובת IP חיצונית ארעית.
מסירים את ההקצאה הקיימת של כתובת ה-IP, כמו שמתואר במאמר בנושא ביטול ההקצאה של כתובת IP חיצונית סטטית.
מקצים את כתובת ה-IP החיצונית החדשה.
כדי להקצות כתובת IPv4, משתמשים בפקודת המשנה
instances add-access-config:הערה: אל תחליפו אתIP_ADDRESSבשם של כתובת ה-IP הסטטית. חובה להשתמש בכתובת ה-IP בפועל.gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה. -
ACCESS_CONFIG_NAME: השם שרוצים לתת להגדרת הגישה הזו. חשוב לכלול את השם המלא בין מרכאות. -
IP_ADDRESS: כתובת ה-IP שרוצים להוסיף.
אם רוצים שמערכת Compute Engine תקצה כתובת IP חיצונית ארעית במקום להשתמש בכתובת IP חיצונית סטטית, משמיטים את המאפיין
--address IP_ADDRESS:gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
-
כדי לשנות מכונה ל-dual-stack ולהקצות לה כתובת IPv6, משתמשים בפקודת המשנה
instance network-interfaces update:gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=NIC \ --ipv6-network-tier=PREMIUM \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה. -
NIC: השם של ממשק הרשת. -
STACK_TYPE: סוג הערימה של המופע, שחייב להיותIPV4_IPV6. אי אפשר לשנות את סוג ה-stack ל-IPV6_ONLY. -
IPV6_ADDRESS: כתובת ה-IPv6 להקצאה למכונה. מציינים את כתובת ה-IPv6 הראשונה בטווח/96. -
ZONE: האזור של המכונה.
-
REST
כדי לשנות את כתובת ה-IPv4 או ה-IPv6 החיצונית של מכונה, צריך להוסיף הגדרת גישה חדשה למכונה הזו.
מסירים את ההקצאה הקיימת של כתובת ה-IP, כמו שמתואר במאמר בנושא ביטול ההקצאה של כתובת IP חיצונית סטטית.
כדי למחוק את הגדרת הגישה הקיימת, שולחים בקשת
POSTאל ה-methodinstances.deleteAccessConfig.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
שולחים בקשת
POSTאל ה-methodinstances.addAccessConfigכדי להוסיף הגדרת גישה חדשה לממשק הרשת של המכונה.לכתובות IPv4, שולחים את הבקשה הבאה:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig { "natIP": "IPV4_ADDRESS", "name": "ACCESS_CONFIG_NAME" }לכתובות IPv6, מעדכנים את
stackTypeשל ממשק הרשת ל-IPV4_IPV6, ומעדכנים את המאפייןnetworkInterfaces[].ipv6AccessConfigs[].externalIpv6ואת כתובת ה-IPv6 החיצונית שרוצים להשתמש בה.מידע נוסף מופיע במאמר בנושא הקצאת כתובת IP חיצונית סטטית למכונה וירטואלית חדשה.
המשך
Java
Python
הגבלת כתובות IP חיצוניות למקרים ספציפיים
יכול להיות שלעומסי עבודה מסוימים יש דרישות חיוניות שכוללות הגבלות אבטחה והגבלות על הרשת. לדוגמה, יכול להיות שתרצו להגביל כתובות IP חיצוניות כך שרק מופעי מחשוב ספציפיים יוכלו להשתמש בהן. האפשרות הזו יכולה לעזור למנוע זליגת מידע או לשמור על בידוד הרשת. באמצעות מדיניות הארגון, אתם יכולים להגביל את השימוש בכתובות IP חיצוניות למכונות וירטואליות ספציפיות באמצעות אילוצים, כדי לשלוט בשימוש בכתובות IP חיצוניות למכונות הווירטואליות בארגון או בפרויקט.
האילוץ לשליטה בכתובות IP חיצוניות במופעים הוא:
constraints/compute.vmExternalIpAccess
כדי להשתמש באילוץ, צריך לציין מדיניות עם allowedList של מופעים שיכולים להיות להם כתובות IP חיצוניות. אם לא מציינים מדיניות, כל כתובות ה-IP החיצוניות מותרות לכל המקרים. כשהמדיניות מופעלת, רק למכונות שמפורטות ברשימה allowedValues אפשר להקצות כתובת IP חיצונית, ארעית או סטטית. למכונות אחרות של Compute Engine בארגון או בפרויקט שלא מוגדרות במפורש במדיניות, אסור להשתמש בכתובות IP חיצוניות.
מופעים מזוהים ברשימות ההיתרים והדחייה באמצעות ה-URI של המופע:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
הדרישות להגבלת כתובות IP חיצוניות
- אפשר להחיל את הגבלת הרשימה רק על מקרים.
- אי אפשר להחיל את ההגבלה רטרואקטיבית. כל המקרים שבהם יש כתובות IP חיצוניות לפני שמפעילים את המדיניות, שומרים על כתובות ה-IP החיצוניות שלהם.
- המגבלה הזו מקבלת
allowedListאוdeniedList, אבל לא את שניהם באותה מדיניות. - אתם או אדמין עם ההרשאות הנדרשות אחראים לניהול ולתחזוקה של מחזור החיים והתקינות של המכונה. האילוץ בודק רק את ה-URI של המופע, והוא לא מונע שינוי, מחיקה או יצירה מחדש של המופעים ברשימת ההיתרים.
ההרשאות שנדרשות להגבלת כתובות IP חיצוניות
כדי להגדיר אילוץ ברמת הפרויקט או ברמת הארגון, צריך לקבל את התפקיד orgpolicy.policyAdmin בארגון.
הגדרת אילוץ המדיניות ברמת הארגון
המסוף
- עוברים לדף מדיניות ארגונית.
- אם צריך, בוחרים את הארגון הנדרש מהתפריט הנפתח של הפרויקט.
בתפריט מסנן, מזינים את הטקסט
Define allowed.בטבלה Policies (מדיניות) אמורות להופיע שתי שורות.
לוחצים על שם המדיניות Define allowed external IPs for VM instances בעמודה Name בטבלה.
בדף פרטי המדיניות, לוחצים על ניהול המדיניות כדי לערוך את מדיניות כתובות ה-IP החיצוניות. אם אין לכם גישה לקישור ניהול מדיניות, סימן שאין לכם את ההרשאות המתאימות.
לוחצים על ניהול המדיניות.
ייפתח הדף עריכת מדיניות.
בקטע חל על, בוחרים באפשרות במקום המדיניות של המשאב הראשי.
בקטע אכיפת מדיניות, בוחרים באפשרות מיזוג עם ההורה.
לוחצים על Add a rule.
בשדה ערכי מדיניות, בוחרים באפשרות בהתאמה אישית.
בקטע סוג המדיניות, בוחרים אם מדיניות הארגון צריכה לקבל או לדחות את הערכים שצוינו.
בשדה ערך מותאם אישית, מזינים URI של מופע. ה-URI צריך להיות בפורמט הבא:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
כדי להוסיף עוד מופעי מחשוב, לוחצים על הוספת ערך ואז מזינים כתובות URI של מופעים נוספים.
כדי לאכוף את המדיניות, לוחצים על הגדרת מדיניות.
gcloud
כדי להגדיר אילוצי גישה לכתובות IP חיצוניות, קודם צריך את מזהה הארגון. כדי למצוא את מזהה הארגון, מריצים את הפקודה organizations list ומחפשים את המזהה המספרי בתשובה:
gcloud organizations list
ה-CLI של gcloud מחזיר רשימה של ארגונים בפורמט הבא:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
משתמשים בפקודה gcloud resource-manager org-policies set-policy כדי להגדיר את המדיניות. צריך לספק את המדיניות כקובץ JSON.
יוצרים קובץ JSON בפורמט הבא:
{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allowedValues": [
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME",
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME",
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"
]
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של הבקשה הזו, כמוexample-project. שימו לב: ההגדרה הזו שונה מהגדרה של כללי מדיניות הארגון, שדורשת את המזהה המספרי של הארגון. -
ZONE: האזור של המכונה -
INSTANCE_NAME: השם של המכונה
אפשר גם לציין deniedValues רשימה כדי לציין מקרים שבהם רוצים למנוע באופן מפורש הקצאה של כתובת IP חיצונית.
כל מופע שלא מופיע ברשימה יקבל באופן מרומז הרשאה להקצאת כתובת IP חיצונית. אפשר לציין רק את allowedValues או את deniedValues, אבל לא את שניהם.
לאחר מכן מעבירים את הקובץ עם הבקשה:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID
מחליפים את ORGANIZATION_ID במזהה המספרי של הארגון.
אם אתם לא רוצים שלמופעים תהיה גישה לכתובת IP חיצונית, אתם יכולים להגדיר מדיניות עם allValues שמוגדר ל-DENY:
{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allValues": "DENY"
}
}
REST
משתמשים ב-API של setOrgPolicy() כדי להגדיר את ההגבלה. למכונות ברשימה allowedValue שאתם מציינים מותרות כתובות IP חיצוניות. לחלופין, אפשר לציין deniedValues רשימה של מקרים שבהם רוצים למנוע באופן מפורש הקצאה של כתובת IP חיצונית. כל מופע שלא מופיע ברשימה יקבל באופן מרומז הרשאה להקצאת כתובת IP חיצונית. אפשר לציין רק את allowedValues או את deniedValues, אבל לא את שניהם.
לדוגמה, הבקשה הבאה היא להחלת האילוץ compute.vmExternalIpAccess על ארגון שבו מותר למכונות מפרויקטים מסוימים בארגון להשתמש בכתובות IP חיצוניות:
POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
כאשר ORGANIZATION_ID הוא המספר המזהה של הארגון.
עכשיו, בגוף הבקשה, מציינים את המדיניות של האילוץ הזה:
{
"policy": {
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allowedValues": [
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME",
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME",
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"
]
}
}
}אם אתם לא רוצים שלמופעים תהיה גישה לכתובת IP חיצונית, אתם יכולים להגדיר מדיניות עם allValues שמוגדר ל-DENY:
{
"policy": {
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allValues": "DENY"
}
}
}הגדרת המדיניות ברמת הפרויקט
הגדרת מדיניות ברמת הפרויקט מבטלת את המדיניות ברמת הארגון. לדוגמה, אם ברמת הארגון יש example-vm-1 ברשימה allowedValues, אבל במדיניות ברמת הפרויקט יש את אותו מופע ברשימה deniedValues, למופע לא תהיה אפשרות לקבל כתובת IP חיצונית.
המסוף
פועלים לפי אותו תהליך שמתואר במאמר הגדרת מגבלת מדיניות ברמת הארגון, אבל בוחרים את הפרויקט בכלי לבחירת פרויקטים במקום לבחור את הארגון.
gcloud
משתמשים בפקודה gcloud resource-manager org-policies set-policy כדי להגדיר את המדיניות. צריך לספק את המדיניות כקובץ JSON. יוצרים קובץ JSON בפורמט הבא:
{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allowedValues": [
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"
]
}
}מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של הבקשה הזו, כמוexample-project. שימו לב: ההגדרה הזו שונה מהגדרה של כללי מדיניות הארגון, שדורשת את המזהה המספרי של הארגון. -
ZONE: האזור של המכונה. -
INSTANCE_NAME: השם של המכונה.
לחלופין, אפשר לציין deniedValues רשימה של מכונות שרוצים לאסור עליהן באופן מפורש להחזיק כתובת IP חיצונית. כל מכונה שלא מופיעה ברשימה הזו תורשה באופן מרומז להקצות כתובת IP חיצונית.
אפשר לציין רק את allowedValues או את deniedValues, אבל לא את שניהם.
לאחר מכן מעבירים את הקובץ עם הבקשה:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project
REST
משתמשים ב-API של setOrgPolicy כדי להגדיר את ההגבלה. למכונות ברשימה allowedValue שאתם מציינים מותרות כתובות IP חיצוניות. אפשרות אחרת היא לציין deniedValues רשימה של מכונות שרוצים למנוע מהן באופן מפורש להחזיק כתובת IP חיצונית. לכל מופע שלא מופיע ברשימה מותר באופן מרומז להקצות כתובת IP חיצונית. אפשר לציין רק את allowedValues או את deniedValues, אבל לא את שניהם.
לדוגמה, הבקשה הבאה מגדירה את האילוץ compute.vmExternalIpAccess בפרויקט כדי לאפשר למופעים ספציפיים לקבל כתובות IP חיצוניות:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
מחליפים את PROJECT_ID במזהה הפרויקט של הבקשה הזו.
גוף הבקשה מכיל את המדיניות של האילוץ הזה:
{
"policy": {
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allowedValues": [
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"
]
}
}
}
שיטות מומלצות להגבלת כתובות IP חיצוניות
אל תשתמשו ברשימה
deniedValuesעם המגבלה הזו. אם מגדירים ערכים ברשימהdeniedValues, המשמעות היא שרק המכונות ברשימהdeniedValuesמוגבלות משימוש בכתובות IP חיצוניות. זה עלול להיות בעיה מבחינת אבטחה אם אתם רוצים לשלוט בדיוק באילו מכונות יכולות להיות כתובות IP חיצוניות. אם רוצים להסיר מקרים מסוימים מהרשימהallowedValues, צריך לעדכן את המדיניות הקיימת כדי להסיר את המקרים מהרשימהallowedListבמקום להוסיף אותם לרשימהdeniedValuesבהיררכיה נמוכה יותר.אם רוצים להגדיר מדיניות על חלק גדול בהיררכיית המשאבים, אבל להחריג פרויקטים מסוימים, צריך לשחזר את מדיניות ברירת המחדל באמצעות השיטה
setOrgPolicy, ולציין את האובייקטrestoreDefaultכדי לאפשר לכל המכונות בפרויקטים להיות משויכות לכתובות IP חיצוניות. המדיניות הנוכחית לגבי פרויקטים לא מושפעת מהגדרת ברירת המחדל.כדי לשלוט טוב יותר בסביבה שלכם, מומלץ להשתמש במדיניות הארגון יחד עם תפקידי IAM. המדיניות הזו חלה רק על מקרים, אבל אם רוצים לשלוט טוב יותר בכתובות IP חיצוניות במכשירי רשת ולהגביל אותן, אפשר להעניק את התפקיד
compute.networkAdminלצדדים המתאימים.כל השירותים והמוצרים שפועלים ב-Compute Engine בארגון או בפרויקט שהמדיניות מופעלת בהם כפופים למדיניות הארגון הזו. השירותים שמושפעים מהמדיניות הזו הם למשל Google Kubernetes Engine, Dataflow, Managed Service for Apache Spark ו-Cloud SQL. אם זו בעיה, Google ממליצה להגדיר שירותים ומוצרים אחרים בפרויקט אחר שלא חלה עליו מדיניות הארגון, ולהשתמש ב-VPC משותף, אם צריך.
ניהול כתובות IP חיצוניות סטטיות
בקטעים הבאים מוסבר איך לנהל כתובות IP חיצוניות סטטיות עבור המופעים.
איך קובעים אם כתובת IP פנימית היא ארעית או סטטית
כתובות IP פנימיות סטטיות וזמניות מתנהגות ונראות אותו הדבר ברוב ההקשרים. עם זאת, אם משתמשים בכתובות IP פנימיות סטטיות, אפשר להשתמש באותה כתובת IP לאותו משאב גם אם מוחקים את המשאב ויוצרים אותו מחדש. באופן כללי, כתובת IP זמנית משוחררת אם מפסיקים או מוחקים את המשאב.
כדי לקבוע אם כתובת היא סטטית או זמנית, מבצעים את הפעולות הבאות:
נכנסים לדף IP addresses במסוף Cloud de Confiance .
מחפשים את הכתובת ברשימה ובודקים את העמודה סוג כדי לראות מה סוג כתובת ה-IP.
ביטול ההקצאה של כתובת IP חיצונית סטטית
ביטול ההקצאה של כתובת IP מסיר אותה מהמשאב, אבל כתובת ה-IP נשארת שמורה. אחרי שמבטלים את ההקצאה של כתובת ה-IP, אפשר להקצות אותה מחדש למשאב אחר. התהליך הזה נתמך במופעים עם כתובות IPv4 ו-IPv6, אבל לא במופעים עם כתובות IPv6 בלבד.
אפשר גם לבטל את ההקצאה של כתובת IPv4 או IPv6 על ידי מחיקת המכונה.
המסוף
נכנסים לדף IP addresses במסוף Cloud de Confiance .
לוחצים על External IP addresses (כתובות IP חיצוניות).
בוחרים את כתובת ה-IP הסטטית שרוצים לבטל את ההקצאה שלה.
לוחצים על הצגת פעולות ובוחרים באפשרות הקצאה מחדש למשאב אחר.
ברשימה הנפתחת צירוף אל, בוחרים באפשרות ללא.
לוחצים על OK.
gcloud
כדי לבדוק אם כתובת IP סטטית נמצאת בשימוש, משתמשים בפקודה
gcloud compute addresses list:gcloud compute addresses list
הפלט אמור להיראות כך:
NAME REGION ADDRESS STATUS example-address-ipv4 REGION 198.51.100.1 RESERVED example-address-new-ipv4 REGION 203.0.113.1 IN_USE example-address-ipv6 REGION 2001:db8:1:1:1:1:1:1 RESERVED example-address-new-ipv6 REGION 2001:db8:4:4:4:4:4:4 IN_USE
- אם כתובת ה-IP לא נמצאת בשימוש, הסטטוס הוא
RESERVED. - אם כתובת ה-IP נמצאת בשימוש, הסטטוס הוא
IN_USE.
- אם כתובת ה-IP לא נמצאת בשימוש, הסטטוס הוא
מאחזרים את שם המכונה שמשתמשת בכתובת ה-IP:
gcloud compute addresses describe ADDRESS_NAME \ --region=REGION
מחליפים את מה שכתוב בשדות הבאים:
-
ADDRESS_NAME: השם של משאב כתובת ה-IPv6. -
REGION: האזור של משאב כתובת ה-IPv6.
הפלט אמור להיראות כך:
address: IP_ADDRESS addressType: EXTERNAL ... region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME status: IN_USE subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET users: - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/INSTANCE_NAME
בשדה
usersמוצג השם של המופע שמשתמש בכתובת ה-IP.-
מבטלים את ההקצאה של כתובת ה-IP למכונה.
כדי לבטל את ההקצאה של כתובת IPv4, מוחקים את קובץ הגדרות הגישה של המכונה:
משיגים את השם של הגדרת הגישה שרוצים למחוק. כדי לקבל את השם, משתמשים בפקודה
gcloud compute instances describe. מחליפים אתINSTANCE_NAMEבשם המכונה.gcloud compute instances describe INSTANCE_NAME
הגדרת הגישה מופיעה בפורמט הבא:
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NATכדי למחוק את הגדרת הגישה, משתמשים בפקודה
gcloud compute instances delete-access-config:gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה. -
ACCESS_CONFIG_NAME: השם של הגדרות הגישה שרוצים למחוק. חשוב לכלול את השם המלא בין מרכאות.
-
כדי לבטל את ההקצאה של טווח כתובות IPv6, משתמשים בפקודה
instance network-interfaces update:gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=nic0 \ --stack-type=IPV4_ONLY \ --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה שמשתמשת בכתובת ה-IP. -
ZONE: האזור של המכונה.
-
בודקים שכתובת ה-IP החיצונית הסטטית זמינה עכשיו ומסומנת כ-
RESERVEDבמקום כ-IN_USE.gcloud compute addresses list \ --filter="ADDRESS_NAME AND region=REGION"
מחליפים את מה שכתוב בשדות הבאים:
-
ADDRESS_NAME: השם של משאב כתובת ה-IP. -
REGION: האזור של משאב כתובת ה-IP.
-
עכשיו כתובת ה-IP החיצונית הסטטית זמינה, ואפשר להקצות אותה למופע אחר.
REST
כדי לבטל את ההקצאה של כתובת IPv4 או IPv6 חיצונית סטטית, מבצעים את השלבים הבאים:
במקרה של כתובות IPv4, מוחקים את הגדרת הגישה שמצורפת למכונה שמשתמשת בכתובת.
כדי לבדוק את פרטי הגדרת הגישה של מכונה, שולחים בקשת
GETאל ה-methodinstances.get.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
כדי למחוק את הגדרת הגישה הקיימת, שולחים בקשת
POSTאל ה-methodinstances.deleteAccessConfig.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של הבקשה הזו -
ZONE: האזור שבו נמצאת המכונה -
INSTANCE_NAME: השם של המכונה
-
לגבי כתובות IPv6, צריך לעדכן את סוג הערימה של ממשק הרשת של המכונה שאליה מצורפת כתובת ה-IPv6.
שולחים בקשת
PATCHאל ה-methodinstances.updateNetworkInterface.בגוף הבקשה, מעדכנים את הערך של השדה
stackTypeל-IPV4_ONLY.לדוגמה:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface { "networkInterfaces": [{ ... "stackType" : "IPV4_ONLY" ... }] }
Java
Python
שחרור כתובת IP חיצונית סטטית
אם כבר אין לכם צורך בכתובת IPv4 או IPv6 חיצונית סטטית, אתם יכולים למחוק את משאב כתובת ה-IP כדי לבטל את ההקצאה של כתובת ה-IP. מחיקה של מופע לא גורמת לשחרור אוטומטי של כתובת IP חיצונית סטטית. כשאין יותר צורך בכתובות IP חיצוניות סטטיות, צריך לבטל את ההקצאה שלהן באופן ידני.
הוראות לביטול השמירה של כתובת IP חיצונית סטטית מופיעות במאמר ביטול השמירה של כתובת IP חיצונית סטטית במסמכי ה-VPC.