בדף הזה מוסבר איך לאבטח מכונה של Compute Engine באמצעות שרת proxy לאימות זהויות (IAP).
לפני שמתחילים
כדי להפעיל את IAP ב-Compute Engine, צריך:
- פרויקט במסוף עם חיוב מופעל. Google Cloud
- קבוצה של מכונה וירטואלית אחת או יותר של Compute Engine, שמוגשת על ידי מאזן עומסים.
- שם דומיין שרשום לכתובת של מאזן העומסים.
- קוד האפליקציה לאימות שלכל הבקשות יש זהות.
אם עדיין לא הגדרתם את המכונה של Compute Engine, תוכלו להיעזר במדריך המלא בנושא הגדרת IAP ל-Compute Engine.
מערכת IAP משתמשת בלקוח OAuth שמנוהל על ידי Google כדי לאמת את המשתמשים. רק משתמשים בארגון יכולים לגשת לאפליקציה עם רכישות מתוך האפליקציה. אם רוצים לאפשר גישה למשתמשים מחוץ לארגון, אפשר לעיין במאמר בנושא הפעלת IAP לאפליקציות חיצוניות.
אפשר להפעיל את IAP בשירות קצה עורפי של Compute Engine או בכלל העברה של Compute Engine. כשמפעילים IAP בשירות לקצה העורפי של Compute Engine, רק השירות הזה מוגן על ידי IAP. כשמפעילים את IAP בכלל העברה ב-Compute Engine, כל המכונות ב-Compute Engine שמאחורי כלל ההעברה מוגנות על ידי IAP.
הפעלת IAP בכלל העברה
אפשר להפעיל את IAP בכלל העברה באמצעות מסגרת כללי ההרשאה של מאזן העומסים.
gcloud
- מריצים את הפקודה הבאה כדי להכין קובץ
policy.yaml. המדיניות מאפשרת ללקוחות עם טווח כתובות IP של10.0.0.0/24להפעיל IAP בכלל העברה.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
httpRules:
- from:
sources:
- ipBlocks:
- prefix: "10.0.0.0"
length: 24
customProvider:
cloudIap: {}
target:
loadBalancingScheme: EXTERNAL_MANAGED
resources:
- https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
- מריצים את הפקודה הבאה כדי להפעיל את IAP בכלל העברה.
gcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: האזור שבו נמצא המשאב.
- FORWARDING_RULE_ID: המזהה של משאב כלל ההעברה.
- AUTHZ_POLICY_NAME: השם של מדיניות ההרשאות.
API
- מריצים את הפקודה הבאה כדי להכין קובץ
policy.json.cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOF מריצים את הפקודה הבאה כדי להפעיל את IAP בכלל העברה.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://networksecurity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: האזור שבו נמצא המשאב.
- FORWARDING_RULE_ID: המזהה של משאב כלל ההעברה.
- AUTHZ_POLICY_NAME: השם של מדיניות ההרשאות.
אחרי שמפעילים את IAP בכלל העברה, אפשר להחיל הרשאות על משאבים.
הפעלת IAP בשירות לקצה העורפי של Compute Engine
אפשר להפעיל את IAP בשירות לקצה העורפי של Compute Engine דרך השירות הזה.
console
לקוח ה-OAuth שמנוהל על ידי Google לא זמין כשמפעילים את IAP באמצעות Google Cloud המסוף.
אם לא הגדרתם את מסך ההסכמה ל-OAuth של הפרויקט, תוצג לכם בקשה לעשות זאת. כדי להגדיר את מסך ההסכמה ל-OAuth, אפשר לעיין במאמר הגדרת מסך ההסכמה ל-OAuth.
אם אתם מריצים אשכולות GKE בגרסה 1.24 ואילך, אתם יכולים להגדיר IAP ו-GKE באמצעות Kubernetes Gateway API. כדי לעשות זאת, מבצעים את השלבים הבאים ואז פועלים לפי ההוראות במאמר בנושא הגדרת IAP.
לא מגדירים את BackendConfig.
הגדרת גישה ל-IAP
-
עוברים אל הדף של שרת proxy לאימות זהויות (IAP).
עוברים לדף של שרת proxy לאימות זהויות (IAP) - בוחרים את הפרויקט שרוצים לאבטח באמצעות IAP.
-
מסמנים את התיבה לצד המשאב שרוצים להעניק לו גישה.
אם לא רואים משאב, צריך לוודא שהמשאב נוצר ושהוא מסונכרן עם בקר הכניסה של BackendConfig Compute Engine.
כדי לוודא ששירות לקצה העורפי זמין, מריצים את פקודת gcloud הבאה:
gcloud compute backend-services list - בחלונית הצדדית בצד שמאל, לוחצים על הוספת ישות.
-
בתיבת הדו-שיח Add principals שמופיעה, מזינים את כתובות האימייל של קבוצות או של אנשים פרטיים שצריכים לקבל את התפקיד IAP-secured Web App User בפרויקט.
התפקיד הזה יכול להיות מוקצה לסוגים הבאים של חשבונות משתמשים:
- חשבון Google: user@gmail.com
- קבוצת Google: admins@googlegroups.com
- חשבון שירות: server@example.gserviceaccount.com
- דומיין ב-Google Workspace: example.com
חשוב להוסיף חשבון Google שיש לכם גישה אליו.
- בתפריט הנפתח תפקידים, בוחרים באפשרות Cloud IAP > IAP-secured Web App User (Cloud IAP > משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP).
- לוחצים על Save.
הפעלת IAP
-
בדף שרת proxy לאימות זהויות (IAP), בקטע APPLICATIONS, מוצאים את מאזן העומסים (LB) שמשרת את instance group שרוצים להגביל את הגישה אליו. כדי להפעיל את IAP למשאב,
כדי להפעיל את הרכישות מתוך האפליקציה:- לפחות פרוטוקול אחד בהגדרת הקצה הקדמי של מאזן העומסים חייב להיות HTTPS. מידע נוסף על הגדרת איזון עומסים
-
צריכות להיות לכם ההרשאות
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.updateו-clientauthconfig.clients.getWithSecret. ההרשאות האלה ניתנות על ידי תפקידים, כמו התפקיד Project Editor (עריכת פרויקט). מידע נוסף מופיע במאמר בנושא ניהול הגישה למשאבים שמוגנים באמצעות IAP.
- בחלון Turn on IAP שמופיע, לוחצים על Turn On כדי לאשר שרוצים ש-IAP יאבטח את המשאב. אחרי שמפעילים את IAP, נדרשים פרטי כניסה לכל החיבורים למאזן העומסים. רק לחשבונות עם התפקיד משתמש באפליקציית אינטרנט מאובטחת ב-IAP בפרויקט תהיה גישה.
gcloud
לפני שמגדירים את הפרויקט ואת הרכישות מתוך האפליקציה, צריך לוודא שיש לכם גרסה עדכנית של ה-CLI של gcloud. הוראות להתקנת ה-CLI של gcloud מופיעות במאמר התקנת ה-CLI של gcloud.
-
כדי לבצע אימות, משתמשים ב-CLI של Google Cloud ומריצים את הפקודה הבאה.
gcloud auth login - כדי להיכנס, לוחצים על כתובת ה-URL שמופיעה.
- אחרי הכניסה לחשבון, מעתיקים את קוד האימות שמופיע ומדביקים אותו בשורת הפקודה.
-
מריצים את הפקודה הבאה כדי לציין את הפרויקט שמכיל את המשאב שרוצים להגן עליו באמצעות IAP.
gcloud config set project PROJECT_ID -
כדי להפעיל את IAP, מריצים את הפקודה בהיקף גלובלי או אזורי.
היקף גלובלי היקף אזוריgcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabledgcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
אחרי שמפעילים את IAP, אפשר להשתמש ב-CLI של gcloud כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות
API
מריצים את הפקודה הבאה כדי להכין קובץ
settings.json.cat << EOF > settings.json { "iap": { "enabled":true } } EOFמריצים את הפקודה הבאה כדי להפעיל את IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
אחרי שמפעילים את IAP, אפשר להשתמש ב-Google Cloud CLI כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות