שימוש במדיניות הרשאות כדי להעביר הרשאות ל-IAP ול-IAM

בדף הזה מוסבר איך משתמשים במדיניות הרשאות כדי להגדיר את Identity-Aware Proxy ‏ (IAP) כמנוע ההרשאות המותאם אישית במדיניות הרשאות למאזני עומסים של אפליקציות.

כדי להקצות הרשאה ל-IAP ולניהול הזהויות והרשאות הגישה (IAM), אתם מאשרים תנועה לכלל העברה על סמך IAM או זהויות של משתמשי קצה עבור מאזני עומסים מנוהלים. כך תוכלו לאכוף בקרת גישה מבוססת-IAP בשירותי ה-Backend שלכם.

לפני שמתחילים

יצירת מדיניות ההרשאות והפעלת IAP

כדי ליצור מדיניות הרשאות, יוצרים קובץ מדיניות שמגדיר את היעד והכללים, ואז מפעילים את IAP בכלל ההעברה. אפשר להגדיר תנאים בקטע httpRules של קובץ המדיניות כדי להחיל את IAP רק על בקשות ספציפיות. אם הקטע httpRules לא מופיע, IAP נאכף על כל הבקשות.

gcloud

  1. מריצים את הפקודה הבאה כדי להכין קובץ 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
  1. מריצים את הפקודה הבאה כדי להפעיל את 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

  1. מריצים את הפקודה הבאה כדי להכין קובץ 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
    
  2. מריצים את הפקודה הבאה כדי להפעיל את 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 API כדי להחיל הרשאות IAM על משאבים ספציפיים בפרויקט שמוגן באמצעות IAP. הרשאות IAM שניתנות ברמה מסוימת חלות על כל הרמות שמתחתיה. לדוגמה, הרשאה שניתנת ברמת הפרויקט חלה על כל Google Cloud המשאבים בפרויקט.

בהמשך מופיעות כמה דוגמאות לפקודות להגדרת הרשאות. מידע נוסף זמין במאמר gcloud iap web set-iam-policy.

gcloud

בפקודות לדוגמה, מחליפים את POLICY_FILE בנתיב לקובץ בפורמט YAML שמכיל מדיניות תקינה. קובץ YAML לדוגמה:

bindings:
  members: user:example@example.com
  role: roles/iap.httpsResourceAccessor

עדכון ההרשאה לגישה למשאב של כלל העברת השיחות

gcloud iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \
--folder=FOLDER --project=PROJECT_ID \
--resource-type=RESOURCE_TYPE --service=SERVICE]

הגדרת הרשאה ברמת הארגון

gcloud iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

הגדרת הרשאה ברמת התיקייה

gcloud iap web set-iam-policy POLICY_FILE --folder=FOLDER

הגדרת הרשאה ברמת הפרויקט

gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web

הגדרת הרשאה לכל כללי ההעברה הגלובליים בפרויקט

gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule

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

gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --region=REGION

הגדרת הרשאה לכלל ספציפי להעברה גלובלית בפרויקט

gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --service=SERVICE

הגדרת הרשאה לכלל העברה ספציפי בפרויקט באזור מסוים

gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --service=SERVICE --region=REGION

מחליפים את מה שכתוב בשדות הבאים:

  • POLICY_FILE: הנתיב לקובץ YAML שמכיל מדיניות תקינה.
  • ORGANIZATION: מזהה הארגון.
  • FOLDER: התיקייה שמכילה את האפליקציה.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • RESOURCE_TYPE: סוג משאב IAP. סוג המשאב צריך להיות app-engine,‏ iap_web,‏ compute,‏ organization או folder.
  • SERVICE: המזהה או השם של כלל ההעברה.
  • REGION: האזור שבו נמצא המשאב.

API

הגדרת הרשאה ברמת הארגון

organization/ORGANIZATION

הגדרת הרשאה ברמת התיקייה

folders/FOLDER

הגדרת הרשאה ברמת הפרויקט

projects/PROJECT_ID

הגדרת הרשאה לכל כללי ההעברה הגלובליים בפרויקט

projects/PROJECT_ID/forwarding_rule

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

projects/PROJECT_ID/iap_web/forwarding_rule-REGION

הגדרת הרשאה לכלל ספציפי להעברה גלובלית בפרויקט

projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE

הגדרת הרשאה לכלל העברה ספציפי בפרויקט באזור מסוים

projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE

הגדרת מדיניות ההרשאות

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @policy.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"

כדי ליצור את קובץ ה-JSON עבור policy.json, מריצים את הפקודה הבאה. מעדכנים את הערכים לפי הצורך.

cat << EOF > policy.json
{
  "bindings": {
     "members": "user:example@example.com",
     "role": "roles/iap.httpsResourceAccessor",
   }
}
EOF

מחליפים את מה שכתוב בשדות הבאים:

  • ORGANIZATION: מזהה הארגון.
  • FOLDER: התיקייה שמכילה את האפליקציה.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: האזור שבו נמצא המשאב.
  • SERVICE: המזהה או השם של כלל ההעברה.