הפעלת גישה למכונות וירטואליות שמבוססת על אישורים

בדף הזה מוסבר איך להפעיל גישה מבוססת-אישורים (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 במכונה הווירטואלית. אפשר להקצות את התפקידים האחרים בפרויקט.

המסוף

  1. פותחים את דף האדמין של IAP ובוחרים בכרטיסייה SSH and TCP Resources (משאבי SSH ו-TCP).

    כניסה לדף IAP

  2. בוחרים את מכונות ה-VM שרוצים להגדיר. אם חלונית המידע לא מוצגת, לוחצים על Show info panel.

  3. לוחצים על Add principal ומגדירים את האפשרויות הבאות:

    • New principals (גורמים חדשים): מציינים את המשתמש או קבוצת המשתמשים שרוצים להעניק להם גישה.
    • Select a role: בוחרים באפשרות Cloud IAP > IAP-Secured Tunnel User.
  4. לוחצים על Add IAM condition ומגדירים תנאי:

    • שם: מזינים שם לתנאי.
    • בונה התנאים: בתפריט הנפתח סוג התנאי בוחרים באפשרות רמת גישה, ואז בוחרים את רמת הגישה שמבוססת על אישור שנוצרה קודם.
  5. לוחצים על Save.

API

כדי להגדיר גישה ל-VM שמבוססת על אישורים, משנים את הקובץ policy.json של האפליקציה.

מידע נוסף על שימוש בממשק ה-API של IAM לניהול מדיניות הגישה זמין במאמר ניהול הגישה למשאבים שמאובטחים באמצעות IAP.

  1. מייצאים את המשתנים הבאים.

    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
    
  2. מקבלים את מדיניות 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 ''
    
  3. כדי לתת לחשבונות המשתמשים שלכם את התפקיד 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
    
  4. מגדירים את קובץ policy.json החדש באמצעות ה-method‏ setIamPolicy.

    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}
    

גישה למכונות וירטואליות באמצעות אישורי לקוח

כדי לגשת למכונות וירטואליות באמצעות אישורי לקוח, אפשר להשתמש באחת מהשיטות הבאות.

שימוש באישורי לקוח בדפדפן Chrome כדי לגשת למכונות וירטואליות

  1. מגדירים את דפדפן Chrome באחת מהדרכים הבאות.
  2. בדפדפן Chrome, מזינים את הדומיין הבא כדי לגשת למסוףGoogle Cloud : console-secure.cloud.google.com.
  3. גישה למכונות וירטואליות באמצעות IAP Tunneling. Google Cloud

שימוש באישורי לקוח ב-CLI של gcloud כדי לגשת למכונות וירטואליות

  1. מגדירים את ה-CLI של gcloud באמצעות אחת מהשיטות הבאות.

  2. גישה Google Cloud למכונות וירטואליות באמצעות IAP Tunneling.