בדף הזה מוסבר איך להגדיר מדיניות הרשאות למאזני עומסים של אפליקציות.
לפני שמתחילים
- מומלץ לקרוא את סקירת מדיניות ההרשאות.
-
- Network Security API
- Network Services API
הגדרת מאזן העומסים
אם לא יצרתם מאזן עומסים, תוכלו לעיין בדפים הבאים כדי להגדיר את מאזן העומסים של אפליקציות (ALB) המועדף שלכם:
- כדי ליצור מאזן עומסים גלובלי חיצוני של אפליקציות (ALB), אפשר לעיין במאמר הגדרה של מאזן עומסים גלובלי חיצוני של אפליקציות עם מערכות בק-אנד של קבוצת מופעי מכונה.
כדי ליצור מאזן עומסים חיצוני אזורי של אפליקציות, אפשר לעיין במאמר בנושא הגדרה של מאזן עומסים חיצוני אזורי של אפליקציות עם מערכות בק-אנד של קבוצת מופעי מכונה וירטואלית.
כדי ליצור מאזן עומסים פנימי אזורי של אפליקציות, אפשר לעיין במאמר הגדרת מאזן עומסים פנימי אזורי של אפליקציות עם בק-אנד של קבוצת מכונות וירטואליות.
- כדי ליצור מאזן עומסים פנימי של אפליקציות (ALB) בכמה אזורים, אפשר לעיין במאמר בנושא הגדרת מאזן עומסים פנימי של אפליקציות (ALB) בכמה אזורים עם קבוצות של מכונות וירטואליות (VM) בתור בק-אנד.
יצירת מדיניות הרשאות
כדי ליצור מדיניות הרשאות, יוצרים קובץ YAML שמגדיר את היעד והכללים, ואז מייבאים את הקובץ באמצעות הפקודה gcloud network-security authz-policies.
בקטע הזה מוסבר איך ליצור מדיניות הרשאות שמצורפת לכלל ההעברה של מאזני עומסים של אפליקציות.
מידע נוסף על יצירת מדיניות הרשאות ל-Agent Gateway שמקצה הרשאות באמצעות Service Extensions זמין במאמר בנושא הקצאת הרשאות באמצעות Service Extensions.
מידע נוסף על יצירת מדיניות הרשאות ל-Secure Web Proxy זמין במאמר הגדרת מדיניות הרשאות ל-Secure Web Proxy.
מדיניות הרשאות לדחיית בקשות
בקטע הזה מופיעות דוגמאות למדיניות הרשאות שדוחות בקשות על סמך מאפיינים מסוימים של הבקשה.
דחיית בקשות על סמך טווחי כתובות IP
בקטע הזה מופיעה דוגמה למדיניות הרשאות שדוחה בקשות שמקורן בטווחים ספציפיים של כתובות IP.
גלובליים ובין-אזוריים
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-deny.yamlלכלל ההעברהLB_FORWARDING_RULEבמיקוםglobal. המדיניות הזו מונעת מלקוחות עם כתובות IP בטווח10.0.0.0/24לגשת לנתיב כתובת ה-URL/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים גלובליים חיצוניים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים, צריך להגדיר את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
אזורי
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-deny.yamlלכלל ההעברהLB_FORWARDING_RULEבאזורGoogle Cloud . המדיניות הזו מונעת מלקוחות עם כתובות IP בטווח10.0.0.0/24לגשת לנתיב כתובת ה-URL/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים חיצוניים אזוריים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
דחיית בקשות על סמך עקרונות של אישורי לקוח
בקטע הזה מופיעה דוגמה למדיניות הרשאות שדוחה בקשות על סמך עקרונות של אישורי לקוח.
גלובליים ובין-אזוריים
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-deny.yamlלכלל ההעברהLB_FORWARDING_RULEבמיקוםglobal.המדיניות דוחה את הגישה לנתיב כתובת ה-URL/api/paymentsללקוחות שיש להםwww.example.comבשמות החלופיים (SAN) של שמות ה-DNS של אישורי הלקוח שלהם.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים גלובליים חיצוניים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים, צריך להגדיר את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
אזורי
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-deny.yamlלכלל ההעברהLB_FORWARDING_RULEבאזורGoogle Cloud . המדיניות הזו מונעת גישה לנתיב כתובת ה-URL/api/paymentsללקוחות ששם ה-DNS של אישור הלקוח שלהם מכיל אתwww.example.com.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים חיצוניים אזוריים של אפליקציות (ALB), מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכמה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: האזור שלכם ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
מדיניות הרשאות שמאפשרת בקשות
בקטע הזה מופיעה דוגמה למדיניות הרשאות שמאפשרת בקשות שמגיעות מטווחים ספציפיים של כתובות IP.
גלובליים ובין-אזוריים
אם אתם משתמשים במאזן עומסים גלובלי חיצוני של אפליקציות (ALB) או במאזן עומסים פנימי של אפליקציות (ALB) שפועל בכמה אזורים, אתם צריכים לבצע את השלבים הבאים כדי ליצור מדיניות הרשאות:
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-allow.yamlלכלל ההעברהLB_FORWARDING_RULEבמיקוםglobal. המדיניות מאפשרת ללקוחות עם כתובות IP בטווח10.0.0.0/24לגשת לנתיב כתובת ה-URL/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים גלובליים חיצוניים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים, צריך להגדיר את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
אזורי
אם אתם משתמשים במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי אזורי של אפליקציות (ALB), אתם יכולים ליצור ולייבא מדיניות הרשאות באופן הבא:
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-allow.yamlלכלל ההעברהLB_FORWARDING_RULEבאזור Google Cloud ספציפי. המדיניות מאפשרת ללקוחות עם כתובות IP בטווח10.0.0.0/24לגשת לנתיב כתובת ה-URL/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים חיצוניים אזוריים של אפליקציות (ALB), מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכמה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: האזור שלכם ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
מדיניות הרשאות שמבוססת על חשבונות שירות או על תגים
אפשר להחיל מדיניות הרשאות שמבוססת על חשבונות שירות או על תגים מאובטחים שמצורפים למשאבים שונים של Google Cloud .
בדוגמה הזו אנחנו יוצאים מנקודת הנחה שביצעתם את הפעולות הבאות:
יצר תג מאובטח וצירף אותו למשאב Google Cloud כצמד מפתח/ערך. כשיוצרים תג, מגדירים את הדגל
--purposeשלו לערךGCE_FIREWALL. כדי להחיל את התג, צריך להגדיר את המטרהGCE_FIREWALLבמדיניות ההרשאות.
חשבון שירות
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-deny.yamlלכלל ההעברהLB_FORWARDING_RULEשל מאזן עומסים פנימי אזורי של אפליקציות. המדיניות מוגדרת כך שהיא דוחה בקשות ממשאב Google Cloud , כמו מכונה וירטואלית ב-Compute Engine, עם חשבון השירותmy-sa-123@PROJECT_ID.iam.gserviceaccount.com, להגיע לנתיב/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. למאזני עומסים פנימיים של אפליקציות (ALB) אזוריים ולמאזני עומסים פנימיים של אפליקציות (ALB) חוצי-אזורים, מגדירים את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: האזור שלכם ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATIONמחליפים את
LOCATIONבאזור Google Cloud .
תג
מגדירים את מדיניות ההרשאות בקובץ YAML.
בדוגמה הבאה נוצר קובץ
authz-policy-allow.yamlעבור כלל ההעברהLB_FORWARDING_RULEשל מאזן עומסים פנימי אזורי של אפליקציות. המדיניות מאפשרת רק בקשות שמקורן במשאב Google Cloud , כמו מכונה וירטואלית של Compute Engine, עם ערך תג מאובטחTAG_VALUE_PERMANENT_ID, לגשת לנתיב כתובת ה-URL/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: resources: - tagValueIdSet: - ids: "TAG_VALUE_PERMANENT_ID" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. למאזני עומסים פנימיים של אפליקציות (ALB) אזוריים ולמאזני עומסים פנימיים של אפליקציות (ALB) חוצי-אזורים, מגדירים את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: האזור שלכם ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים. -
TAG_VALUE_PERMANENT_ID: המזהה הקבוע של ערך התג.
-
כדי ליצור את מדיניות ההרשאות, מייבאים את קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה gcloud network-security authz-policies import.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור שלכם ב- Google Cloud .
-
מדיניות הרשאות להקצאת הרשאות
בדוגמאות שבקטע הזה נוצרת מדיניות הרשאות שמקצה את ההחלטות בנוגע להרשאות לשירותים הבאים באמצעות Service Extensions:
- שירות שמנוהל על ידי המשתמש
- שירות שמנוהל על ידי Google
העברת ההחלטה לגבי הרשאה לשירות שמנוהל על ידי משתמש
אתם יכולים להגדיר מדיניות הרשאות כדי להעביר את ההחלטה לגבי הרשאות לחשבון שירות בניהול המשתמשים באמצעות Service Extensions, ובאופן ספציפי, תוסף הרשאות.
במאזני עומסים גלובליים ובמאזני עומסים חוצי-אזורים, תוסף ההרשאה יכול לפעול בשירות קצה עורפי Google Cloud שמנוהל על ידי המשתמש.
במאזני עומסים אזוריים, תוסף ההרשאה יכול לפעול גם בשירות קצה עורפי Google Cloud שמנוהל על ידי המשתמש וגם בשירות שמבוסס על FQDN.
ההגדרה בדוגמה הזו מניחה שיצרתם שירות קצה עורפי מנוהל על ידי משתמש Google Cloud , שנקרא גם שירות קצה עורפי של קריאה חיצונית, בשם authz-service.
מידע נוסף על יצירת שירות כזה זמין במאמר הגדרת שירות לקצה העורפי של קריאות ל-API בניהול משתמשים.
במקרה של שירות שמבוסס על FQDN, ההגדרה לדוגמה הזו מניחה שהשירות המותאם אישית פרוס ב-VPC שלכם, תומך בפרוטוקול ext_authz ונגיש באמצעות שם הדומיין שמוגדר במלואו mycustomauthz.internal.net.
גלובליים ובין-אזוריים
אם אתם משתמשים במאזן עומסים גלובלי-חיצוני של אפליקציות (ALB) או במאזן עומסים פנימי של אפליקציות (ALB) בין אזורים, אתם צריכים לבצע את השלבים הבאים כדי להעביר את החלטת ההרשאה לשירות שמנוהל על ידי המשתמש.
מגדירים את תוסף ההרשאה בקובץ YAML. תוסף ההרשאות פועל בשירות קצה עורפי (
authz-service) ותומך בפרוטוקולext_authz.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFכדי ליצור את תוסף ההרשאה, מייבאים את קובץ ה-YAML של תוסף ההרשאה באמצעות הפקודה
gcloud service-extensions authz-extensions import.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=globalמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים, צריך להגדיר את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
מגדירים את מדיניות ההרשאות בקובץ YAML. מדיניות ההרשאות מעבירה את ההרשאה לתוסף ההרשאות בשדה
customProvider.המדיניות קוראת לתוסף ההרשאות
my-authz-extלכל התנועה לנתיב כתובת ה-URLexample.com/api/paymentsכשהבקשה מכילה כותרתAuthorizationלא ריקה.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/global/authzExtensions/my-authz-ext" EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים, צריך להגדיר את הסכמה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
יוצרים את מדיניות ההרשאות על ידי ייבוא קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=global
אזורי
אם אתם משתמשים במאזן עומסים חיצוני של אפליקציות (ALB) או במאזן עומסים פנימי של אפליקציות (ALB) ברמת האזור, בצעו את השלבים הבאים כדי להאציל את ההחלטה לגבי ההרשאה לשירות מנוהל על ידי המשתמש.
מגדירים את תוסף ההרשאה בקובץ YAML. תוסף ההרשאה יכול לפעול בשירות קצה עורפי או בשירות שמבוסס על שם דומיין מלא (FQDN).
cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: BACKEND_SERVICE_URI_OR_FQDN forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים חיצוניים אזוריים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכימה ל-INTERNAL_MANAGED. -
BACKEND_SERVICE_URI_OR_FQDN: השירות יכול להיות אחד מהשירותים הבאים:- כתובת URI של משאב שירות לקצה עורפי אזורי, בפורמט
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/backendServices/authz-service. - שם דומיין שמוגדר במלואו (לדוגמה,
mycustomauthz.extension.net) שאפשר לפענח אותו באמצעות Cloud DNS.
- כתובת URI של משאב שירות לקצה עורפי אזורי, בפורמט
-
כדי ליצור את תוסף ההרשאה, מייבאים את קובץ ה-YAML של תוסף ההרשאה באמצעות הפקודה
gcloud service-extensions authz-extensions import.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONמחליפים את LOCATION ב Google Cloudהאזור שבו מוגדר שירות הקצה העורפי של ההפניה.
מגדירים את מדיניות ההרשאות בקובץ YAML. מדיניות ההרשאות מעבירה את ההרשאה לתוסף ההרשאות בשדה
customProvider.המדיניות קוראת לתוסף ההרשאה
my-authz-extלכל התנועה בנתיב כתובת ה-URLexample.com/api/paymentsכשהבקשה מכילה כותרתAuthorizationלא ריקה.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים חיצוניים אזוריים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: Google Cloud האזור. -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
יוצרים את מדיניות ההרשאה על ידי ייבוא של קובץ ה-YAML של מדיניות ההרשאה באמצעות הפקודה
gcloud network-security authz-policies import.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONמחליפים את LOCATION ב Google Cloudאזור שבו מוגדר מאזן העומסים.
מידע נוסף על תוספי הרשאה זמין במאמר בנושא הגדרת תוסף הרשאה.
העברת ההחלטה לגבי הרשאה ל-Model Armor
אתם יכולים להגדיר מדיניות הרשאות כדי להעביר את ההחלטה לגבי הרשאות ל-Model Armor.
לפני שמתחילים, צריך ליצור תבנית של Model Armor. בהגדרה לדוגמה הזו, מדיניות ההרשאות מפנה לתוסף הרשאות, שבתורו מפנה ל-Model Armor.
אם אתם משתמשים במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי אזורי של אפליקציות (ALB), אתם צריכים לפעול לפי השלבים הבאים כדי להעביר את ההחלטה לגבי ההרשאה ל-Model Armor.
אזורי
מגדירים את תוסף ההרשאה בקובץ YAML. נקודות ההרחבה של ההרשאה מצביעות על תבניות של בקשות ותגובות של הגנה מוגברת על המודל.
cat >authz-extension.yaml <<EOF name: my-authz-extension loadBalancingScheme: INTERNAL_MANAGED service: modelarmor.LOCATION.rep.googleapis.com metadata: model_armor_settings: '[ { "response_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/RESPONSE_TEMPLATE_ID", "request_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/REQUEST_TEMPLATE_ID" } ]' failOpen: true EOFמחליפים את מה שכתוב בשדות הבאים:
- LOCATION: המיקום של התבנית
- PROJECT_ID: המזהה של הפרויקט שאליו שייך התבנית
- RESPONSE_TEMPLATE_ID: המזהה של תבנית התגובה
- REQUEST_TEMPLATE_ID: המזהה של תבנית הבקשה
כדי ליצור את תוסף ההרשאה, מייבאים את קובץ ה-YAML של תוסף ההרשאה באמצעות הפקודה
gcloud beta service-extensions authz-extensions import.gcloud beta service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATION
מחליפים את LOCATION ב Google Cloudאזור שבו נמצא מאזן העומסים.
מגדירים את מדיניות ההרשאות בקובץ YAML. מדיניות ההרשאות מעבירה את ההרשאה לתוסף ההרשאות בשדה
customProvider.הערך של
policyProfileהואCONTENT_AUTHZ.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: INTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: Google Cloud האזור. -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
יוצרים את מדיניות ההרשאה על ידי ייבוא של קובץ ה-YAML של מדיניות ההרשאה באמצעות הפקודה
gcloud beta network-security authz-policies import.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATION
מחליפים את LOCATION ב Google Cloudאזור שבו מוגדר מאזן העומסים.
העברת סמכות ההחלטה לגבי הרשאה לשרת proxy לאימות זהויות (IAP)
במאזני עומסים גלובליים חיצוניים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות שפועלים בכמה אזורים, אי אפשר להעביר את ההחלטה לגבי הרשאה ל-IAP באמצעות תוסף הרשאה. במאזני העומסים האלה, אפשר להעביר את ההחלטה לגבי הרשאות ל-IAP דרך השדה customProvider במשאב של מדיניות ההרשאות.
במאזני עומסים חיצוניים אזוריים של אפליקציות (ALB) ובמאזני עומסים פנימיים אזוריים של אפליקציות (ALB), אפשר להגדיר מדיניות הרשאות כדי להעביר את ההחלטה לגבי הרשאות ל-IAP באמצעות תוסף הרשאות.
גלובליים ובין-אזוריים
בדוגמה הבאה, כל החלטות ההרשאה מועברות ל-IAP לכל הבקשות שמגיעות מבלוק כתובות ה-IP 10.0.0.0/24. אם הבקשות מגיעות מכתובת IP מחוץ ל-10.0.0.0/24, הן לא תואמות למדיניות הזו ולא נבדקות על ידי IAP במסגרת הכלל הספציפי הזה.
מגדירים את מדיניות ההרשאות בקובץ YAML. מדיניות ההרשאות מעבירה את ההרשאה ל-IAP דרך השדה
customProvider.cat >authz-policy-iap.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlock: - prefix: "10.0.0.0" length: 24 action: CUSTOM customProvider: cloudIap: {} EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים גלובליים חיצוניים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים של אפליקציות (ALB) שפועלים בכמה אזורים, צריך להגדיר את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
יוצרים את מדיניות ההרשאות על ידי ייבוא קובץ ה-YAML של מדיניות ההרשאות באמצעות הפקודה
gcloud network-security authz-policies import.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-iap.yaml \ --location=global
אזורי
אם אתם משתמשים במאזן עומסים חיצוני אזורי של אפליקציות או במאזן עומסים פנימי אזורי של אפליקציות, אתם יכולים להשתמש בתוסף הרשאות כדי להעביר את ההחלטה לגבי הרשאות ל-IAP.
מגדירים את תוסף ההרשאה בקובץ YAML. נקודות ההרחבה של ההרשאה מפנות אל IAP.
cat >authz-extension.yaml <<EOF name: my-authz-ext loadBalancingScheme: LB_SCHEME service: iap.googleapis.com failOpen: false EOFמחליפים את מה שכתוב בשדות הבאים:
- LB_SCHEME: סכמת איזון העומסים.
במאזני עומסים חיצוניים אזוריים של אפליקציות, מגדירים את הסכימה ל-
EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכימה ל-INTERNAL_MANAGED.
- LB_SCHEME: סכמת איזון העומסים.
במאזני עומסים חיצוניים אזוריים של אפליקציות, מגדירים את הסכימה ל-
כדי ליצור את תוסף ההרשאה, מייבאים את קובץ ה-YAML של תוסף ההרשאה באמצעות הפקודה
gcloud service-extensions authz-extensions import.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONמחליפים את LOCATION ב Google Cloudהאזור שבו מוגדר תוסף ההרשאה.
מגדירים את מדיניות ההרשאות בקובץ YAML. מדיניות ההרשאות מעבירה את ההרשאה לתוסף ההרשאות בשדה
customProvider.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFמחליפים את מה שכתוב בשדות הבאים:
-
LB_SCHEME: סכמת איזון העומסים. במאזני עומסים חיצוניים אזוריים של אפליקציות, מגדירים את הסכימה ל-EXTERNAL_MANAGED. במאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הסכימה ל-INTERNAL_MANAGED. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: Google Cloud האזור. -
LB_FORWARDING_RULE: השם של כלל ההעברה של מאזן העומסים.
-
יוצרים את מדיניות ההרשאה על ידי ייבוא של קובץ ה-YAML של מדיניות ההרשאה באמצעות הפקודה
gcloud network-security authz-policies import.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONמחליפים את LOCATION ב Google Cloudאזור שבו מוגדר מאזן העומסים.
הסבר על יומנים של מדיניות הרשאות ב-Cloud Logging
כדי להבין איך מתבצעת רישום ביומן של מדיניות הרשאות כשבקשה מאושרת או נדחית, אפשר לעיין בקטעים הבאים.
הבקשה לא תואמת למדיניות ALLOW או למדיניות DENY
אם בקשה לא תואמת למדיניות ALLOW או למדיניות DENY, מדיניות DENY מאשרת את הבקשה ומתעדת אותה כ-allowed_as_no_deny_policies_matched_request. לעומת זאת, מדיניות ALLOW דוחה את הבקשה ומתעדת אותה כdenied_as_no_allow_policies_matched_request. הבקשה נדחית כי אחת מהמדיניות דוחה אותה.
אם אתם משתמשים במאזן עומסים גלובלי חיצוני של אפליקציות (ALB), הערך של
statusDetailsביומן הואdenied_by_authz_policy. מקרה לדוגמה:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }אם אתם משתמשים במאזן עומסים פנימי אזורי של אפליקציות (ALB), במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי של אפליקציות (ALB) בין אזורים, הערך של
proxyStatusביומן הואerror=\"http_request_error\"; details=\"denied_by_authz_policy\". מקרה לדוגמה:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
הבקשה תואמת למדיניות של DENY
כשבקשה תואמת למדיניות DENY, היא נדחית והמדיניות שגרמה לדחייה מתועדת.
אם אתם משתמשים במאזן עומסים חיצוני גלובלי של אפליקציות (ALB), הערך של
statusDetailsהואdenied_by_authz_policyביומן, ושם המדיניות שדחתה את הבקשה נרשם ביומן ב-policies. מקרה לדוגמה:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/global/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }אם אתם משתמשים במאזן עומסים פנימי אזורי של אפליקציות (ALB), במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי חוצה אזורים של אפליקציות (ALB), הערך של
proxyStatusמוגדר כ-error=\"http_request_error\"; details=\"denied_by_authz_policy\"והשם של המדיניות מתועד ב-policies. מקרה לדוגמה:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
הבקשה לא תואמת למדיניות בנושא DENY, אבל תואמת למדיניות בנושא ALLOW
אם בקשה לא תואמת למדיניות DENY, אבל תואמת למדיניות ALLOW, הבקשה תאושר. ביומן, הפעולה הזו מתועדת כ-allowed_as_no_deny_policies_matched_request עבור מדיניות DENY. המדיניות שאפשרה את הבקשה מתועדת גם היא.
אם אתם משתמשים במאזן עומסים גלובלי חיצוני של אפליקציות (ALB), לא מופיע
statusDetailsביומן. המדיניות שאפשרה את הבקשה מתועדת גם ב-policies. דוגמה:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/global/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }אם אתם משתמשים במאזן עומסים פנימי אזורי של אפליקציות (ALB), במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי של אפליקציות (ALB) שפועל בכמה אזורים, לא מופיע השדה
proxyStatusביומן. המדיניות שאפשרה את הבקשה מתועדת גם ב-policies. דוגמה:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }