בדף הזה מוסבר איך להשתמש בכללי מדיניות הרשאה כדי להגדיר את Identity-Aware Proxy (IAP) כמנוע ההרשאה המותאם אישית במדיניות הרשאה למאזני עומסים של אפליקציות.
כדי להעביר את הרשאת הגישה ל-IAP ולניהול הזהויות והרשאות הגישה (IAM), אתם מאשרים תנועה לכלל העברה שמבוסס על IAM או על זהויות של משתמשי קצה למאזני עומסים מנוהלים. כך תוכלו לאכוף בקרת גישה מבוססת-IAP לשירותי הקצה העורפי שלכם.
לפני שמתחילים
להבין את המושגים שקשורים לכללי מדיניות ההרשאות.
מוודאים ש-IAP לא מופעל בשירותי הקצה העורפי של כללי ההעברה. אם IAP מופעל, תופיע הודעת שגיאה כשתשלחו את ההגדרות.
יצירת מדיניות ההרשאה והפעלת IAP
כדי ליצור מדיניות הרשאה, יוצרים קובץ מדיניות שמגדיר את היעד והכללים, ואז מפעילים את IAP בכלל ההעברה. אפשר להחיל את IAP רק על בקשות ספציפיות, על ידי הגדרת תנאים בקטע httpRules של קובץ המדיניות. אם משמיטים את הקטע httpRules, 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 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: השם או המזהה של כלל ההעברה.