בדף הזה מוסבר איך להפעיל גישה מבוססת-אישורים (CBA) במכונות הווירטואליות שלכם ב- Google Cloud . אתם יכולים להשתמש ב-CBA כדי לאבטח גישה ממכשירים מהימנים למכונות וירטואליות (VM) של Google Cloud .
סקירה כללית
ב-CBA למכונות וירטואליות נעשה שימוש בתכונה Google Cloud בקרת גישה מבוססת-הקשר כדי לאבטח את הגישה באמצעות TLS הדדי (mTLS). אלה הרכיבים העיקריים שבהם משתמשים כדי להפעיל את CBA במכונות וירטואליות:
- Access Context Manager: מאפשר ליצור רמות גישה שדורשות אישורים כשקובעים גישה לאפליקציות אינטרנט.
- שרת proxy לאימות זהויות (IAP): העברת TCP של IAP מאפשרת ליצור מנהרה מוצפנת שדרכה אפשר להעביר תעבורת נתונים מסוג SSH, RDP ותעבורה אחרת למכונות וירטואליות. בנוסף, מדיניות IAP מאפשרת לכם לשלוט בצורה מדויקת באילו משתמשים מורשים ליצור מנהרות למכונות וירטואליות ספציפיות, ובאילו תנאי גישה המשתמשים צריכים לעמוד כדי להשתמש במנהרות כאלה.
- מדיניות Chrome Enterprise: מספקת אימות הדדי (mTLS) בין משתמשים לבין מכונות וירטואליות כשמשתמשים בדפדפן Chrome.
- Google Cloud CLI: מספק אימות הדדי (mTLS) בין משתמשים ומכונות וירטואליות כשמשתמשים ב-CLI של gcloud.
לפני שמתחילים
מוודאים שיצרתם רמות גישה מבוססות-אישורים לפרויקט Google Cloud .
מתן תפקידים לגישה למכונות וירטואליות באמצעות העברת TCP של IAP
כדי שמשתמשים או קבוצות משתמשים יוכלו להשתמש בהעברת TCP באמצעות IAP כדי לגשת למכונות וירטואליות, צריך להקצות להם את התפקידים המתאימים בניהול הזהויות והרשאות הגישה (IAM) בפרויקט.
בטבלה הבאה מוצגים התפקידים המוגדרים מראש שצריך להעניק לאדמינים מהימנים כדי להשתמש בהעברת TCP ולבצע משימות שקשורות אליה.
| משימה | תפקידים | מידע נוסף |
|---|---|---|
| העברת TCP |
משתמש מנהרה באבטחת IAP (roles/iap.tunnelResourceAccessor)
|
איך נותנים גישה לכל המכונות הווירטואליות בפרויקט או איך נותנים גישה למכונה וירטואלית ספציפית |
| גישת SSH |
Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
|
|
| OS Login (מומלץ) | שונים | הגדרת תפקידים ב-OS Login בחשבונות משתמשים |
| שימוש בחשבון שירות | משתמש בחשבון שירות (roles/iam.serviceAccountUser) |
התפקיד serviceAccountUser |
מידע נוסף על מתן תפקידים להעברת TCP ב-IAP זמין במאמר מתן תפקידים להעברת TCP ב-IAP.
הגדרת גישה למכונה וירטואלית שמבוססת על אישורים
למרות ש-IAP-TCP מאפשר לתת גישה לכל המכונות הווירטואליות בפרויקט, צריך להגדיר גישה מבוססת-אישורים לכל מכונה וירטואלית בנפרד.
כדי לתת למשתמש או לקבוצת משתמשים גישה למכונה וירטואלית על סמך אישור, צריך לתת את התפקיד roles/iap.tunnelResourceAccessor במכונה הווירטואלית. אפשר להקצות את התפקידים האחרים בפרויקט.
המסוף
פותחים את דף האדמין של IAP ובוחרים בכרטיסייה SSH and TCP Resources (משאבי SSH ו-TCP).
בוחרים את מכונות ה-VM שרוצים להגדיר. אם חלונית המידע לא מוצגת, לוחצים על Show info panel.
לוחצים על Add principal ומגדירים את האפשרויות הבאות:
- New principals (גורמים חדשים): מציינים את המשתמש או קבוצת המשתמשים שרוצים להעניק להם גישה.
- Select a role: בוחרים באפשרות Cloud IAP > IAP-Secured Tunnel User.
לוחצים על Add IAM condition ומגדירים תנאי:
- שם: מזינים שם לתנאי.
- בונה התנאים: בתפריט הנפתח סוג התנאי בוחרים באפשרות רמת גישה, ואז בוחרים את רמת הגישה שמבוססת על אישור שנוצרה קודם.
לוחצים על Save.
API
כדי להגדיר גישה ל-VM שמבוססת על אישורים, משנים את הקובץ policy.json של האפליקציה.
מידע נוסף על שימוש בממשק ה-API של IAM לניהול מדיניות הגישה זמין במאמר ניהול הגישה למשאבים שמאובטחים באמצעות IAP.
מייצאים את המשתנים הבאים.
export IAP_BASE_URL=https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_tunnel # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy export JSON_NEW_POLICY=POLICY_FILE.JSONמקבלים את מדיניות IAM של מכונת Compute Engine באמצעות השיטה
getIamPolicy. הביט הריק של הנתונים בסוף הופך את בקשת ה-curl ל-POSTבמקום ל-GET.curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \ -d ''כדי לתת לחשבונות המשתמשים שלכם את התפקיד
iap.tunnelResourceAccessorואת הגישה שמבוססת על אישורים, צריך לשנות את קובץ ה-JSON של מדיניות ה-IAM.הנה דוגמה לקובץ
policy.jsonשמעניק את התפקידiap.tunnelResourceAccessorלקבוצת אדמינים של מכונות וירטואליות, ומאפשר להם גישה למשאבי מנהרות מאובטחים ב-IAP על סמך אישורים.הערה: אם לחשבון משתמש יש תפקיד בעלים, הוא יכול להשתמש ב-IAP להעברת TCP.
{ "policy": { "bindings": [ { "role": "roles/iap.tunnelResourceAccessor", "members": ["group:instance-admins@example.com"], "condition": { "expression": "\"accessPolicies/POLICY_NAME/accessLevels/CERTIFICATE_BASED_ACCESS_LEVEL_NAME\" in request.auth.access_levels, "title": "CERTIFICATE_BASED_CONDITION_NAME" } } ] } }כדי למצוא שם מדיניות, מבצעים קריאה ל-method
accessPolicies.list.GET https://accesscontextmanager.googleapis.com/v1/accessPoliciesמגדירים את קובץ
policy.jsonהחדש באמצעות ה-methodsetIamPolicy.curl -i -H "Content-Type:application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:setIamPolicy \ -d @${JSON_NEW_POLICY}
גישה למכונות וירטואליות באמצעות אישורי לקוח
כדי לגשת למכונות וירטואליות באמצעות אישורי לקוח, אפשר להשתמש באחת מהשיטות הבאות.
- שימוש באישור ארגוני: משתמשים בשיטה הזו אם יש לכם תשתית PKI.
- שימוש באישורים שהוקצו על ידי Endpoint Verification: משתמשים בשיטה הזו אם אין לכם תשתית PKI. הכלי Endpoint Verification (אימות של נקודת קצה) מקצה ומירשם אוטומטית אישורים בחתימה עצמית ב-Google Cloud לכל מכשיר.
שימוש באישורי לקוח בדפדפן Chrome כדי לגשת למכונות וירטואליות
- מגדירים את דפדפן Chrome באחת מהדרכים הבאות.
- בדפדפן Chrome, מזינים את הדומיין הבא כדי לגשת למסוףGoogle Cloud :
console-secure.cloud.google.com. - גישה למכונות וירטואליות באמצעות IAP Tunneling. Google Cloud
שימוש באישורי לקוח ב-CLI של gcloud כדי לגשת למכונות וירטואליות
מגדירים את ה-CLI של gcloud באמצעות אחת מהשיטות הבאות.
גישה Google Cloud למכונות וירטואליות באמצעות IAP Tunneling.