בדף הזה מוסבר איך לאבטח מכונה של Compute Engine באמצעות שרת proxy לאימות זהויות (IAP).
לפני שמתחילים
כדי להפעיל את IAP ל-Compute Engine, צריך:
- פרויקט במסוף Google Cloud שהחיוב מופעל בו.
קבוצה של מכונה אחת או יותר של Compute Engine, שמקבלת שירות ממאזן עומסים.
שם דומיין שרשום בכתובת של מאזן העומסים.
קוד אפליקציה כדי לוודא שלכל הבקשות יש זהות.
אם עדיין לא הגדרתם מכונה של Compute Engine, תוכלו לקרוא את המדריך המלא הגדרת IAP ל-Compute Engine.
IAP משתמש בלקוח OAuth שמנוהל על ידי Google כדי לאמת משתמשים. רק משתמשים בארגון יכולים לגשת לאפליקציה שמופעל בה IAP. אם רוצים לאפשר גישה למשתמשים מחוץ לארגון, אפשר לעיין במאמר הפעלת IAP לאפליקציות חיצוניות.אתם יכולים להפעיל את IAP בשירות לקצה העורפי או בכלל העברה של 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 项目 ID。
LOCATION:资源所在的区域。
FORWARDING_RULE_ID:转发规则资源的 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 项目 ID。
LOCATION:资源所在的区域。
FORWARDING_RULE_ID:转发规则资源的 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
-
נכנסים לדף Identity-Aware Proxy.
כניסה לדף Identity-Aware Proxy - בוחרים את הפרויקט שרוצים לאבטח באמצעות IAP.
-
מסמנים את התיבה לצד המשאב שרוצים לתת גישה אליו.
אם המשאב לא מופיע, צריך לוודא שהוא נוצר ושה-BackendConfig ובקר ה-Ingress של Compute Engine מסונכרנים.
כדי לוודא ששירות הקצה העורפי זמין, מריצים את הפקודה הבאה של gcloud:
gcloud compute backend-services list - בחלונית שבצד שמאל, לוחצים על Add principal.
-
בתיבת הדו-שיח Add principals שמופיעה, מזינים את כתובות האימייל של הקבוצות או המשתמשים שצריכים לקבל את התפקיד משתמש באפליקציית אינטרנט שמאובטחת באמצעות IAP בפרויקט.
אפשר להקצות את התפקיד הזה לחשבונות המשתמשים הבאים:
- חשבון Google: user@gmail.com
- קבוצת Google: admins@googlegroups.com
- חשבון שירות: server@example.
- דומיין ב-Google Workspace: example.com
חשוב להוסיף חשבון Google שיש לכם גישה אליו.
- ברשימה הנפתחת Roles, בוחרים באפשרות Cloud IAP > IAP-secured Web App User.
- לוחצים על Save.
הפעלת IAP
-
בדף שרת proxy לאימות זהויות (IAP), בקטע APPLICATIONS, מאתרים את מאזן העומסים שמשרת את instance group שרוצים להגביל את הגישה אליו. כדי להפעיל את IAP למשאב,
כדי להפעיל את IAP:- לפחות פרוטוקול אחד בהגדרת ממשק המשתמש של מאזן העומסים חייב להיות HTTPS. מידע על הגדרת מאזן עומסים
-
אתם צריכים את ההרשאות
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.updateו-clientauthconfig.clients.getWithSecret. ההרשאות האלה ניתנות על ידי תפקידים, כמו התפקיד "עריכת פרויקט". מידע נוסף זמין במאמר ניהול הגישה למשאבים שמאובטחים באמצעות IAP.
- בחלון Turn on IAP שמופיע, לוחצים על Turn On כדי לאשר שרוצים לאבטח את המשאב באמצעות IAP. אחרי שמפעילים את IAP, צריך להזין פרטי כניסה לכל החיבורים למאזן העומסים. רק חשבונות עם התפקיד משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP בפרויקט יקבלו גישה.
gcloud
לפני שמגדירים את הפרויקט ואת IAP, צריך גרסה עדכנית של ה-CLI של gcloud. איך מתקינים את ה-CLI של gcloud
-
כדי לבצע אימות, משתמשים ב-Google Cloud CLI ומריצים את הפקודה הבאה.
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 באמצעות התפקיד roles/iap.httpsResourceAccessor ב-IAM. מידע נוסף על ניהול תפקידים והרשאות
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 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。