בדף הזה מוסבר איך להגדיר מדיניות של בקרת גישה מבוססת-הקשר באמצעות רמות גישה.
רמת גישה היא קבוצה של מאפיינים שמוקצים לבקשות על סמך המקור שלהן. באמצעות מידע כמו סוג המכשיר, כתובת ה-IP וזהות המשתמש, אתם יכולים להגדיר איזו רמת גישה להעניק. לדוגמה, אתם יכולים להקצות רמה של High_Trust לחיבורים מתוך הרשת הארגונית ורמה של Medium_Trust למכשירים חיצוניים שמופעלות בהם מערכות הפעלה מאושרות.
מדיניות גישה היא מאגר לכל המשאבים של Access Context Manager, כמו רמות גישה וגבולות שירות.
מידע נוסף על רמות גישה ומדיניות גישה זמין במאמר סקירה כללית של Access Context Manager.
מגבלות
כשמגדירים רמת גישה, חלות ההגבלות הבאות:
- אי אפשר להשתמש בכתובת IP כמאפיין לחיבורי Docker, וגם אי אפשר להשתמש בכתובות IP פרטיות כשמתחברים לאשכולות פרטיים באמצעות
kubectlאו מופע מנוהל של Looker. - ל-Data Studio תמיד יש גישה בלתי מוגבלת לממשקי ה-API שלGoogle Cloud , בלי קשר למדיניות Access Context Manager.
- מאפייני המכשיר לא זמינים לאפליקציות לקוח OAuth שאינן של Google.
- אי אפשר להשתמש ברמת גישה עם היקף.
הגדרת המדיניות באמצעות רמות גישה
המסוף
יצירת רמת גישה בסיסית:
במסוף Google Cloud , פותחים את הדף Access Context Manager.
אם מתבקשים, בוחרים פרויקט.
בדף Access Context Manager, לוחצים על New.
בחלונית New Access Level (רמת גישה חדשה):
בשדה שם רמת הגישה, מזינים שם לרמת הגישה. הכותרת צריכה להיות באורך של עד 50 תווים, להתחיל באות ולהכיל רק מספרים, אותיות, קווים תחתונים ורווחים.
בקטע תנאים, לוחצים על לחצן הוספה של סוג המאפיין שרוצים להוסיף, ואז מציינים את הערכים שרוצים להחיל על המאפיין הזה.
רשימה מלאה של המאפיינים שאפשר להוסיף מופיעה במאמר בנושא מאפיינים של רמת גישה.
לדוגמה, אם רוצים שרמת הגישה תתייחס למיקום שממנו מגיעה בקשה בתוך הרשת, בוחרים במאפיין IP Subnetworks.
כדי להוסיף כמה מאפיינים לאותו תנאי, חוזרים על השלב הזה. אם תנאי מכיל כמה מאפיינים, בקשת הגישה צריכה לעמוד בכל המאפיינים.
תנאי של רמת גישה יכול לכלול מאפיין אחד מכל סוג. חלק מהמאפיינים כוללים אפשרויות נוספות, כמו המאפיין מדיניות המכשיר.
רמות הגישה תומכות בתנאים שמבוססים על זהות המשתמש. עם זאת, כדי להוסיף זהויות לתנאי, צריך ליצור או לעדכן את רמת הגישה באמצעות ה-CLI של gcloud או ה-API.
משתמשים באפשרות When condition is met, return (כשהתנאי מתקיים, מחזירים) כדי לציין אם התנאי צריך לדרוש שבקשה תעמוד בכל המאפיינים שצוינו (TRUE) או אם הבקשה צריכה לעמוד בכל המאפיינים חוץ מאלה (FALSE).
לדוגמה, אם רוצים לדחות בקשות מטווח מסוים של כתובות IP ברשת, מציינים את טווח כתובות ה-IP באמצעות המאפיין IP Subnetworks ואז מגדירים את התנאי ל-FALSE.
אופציונלי: לוחצים על הוספת תנאי נוסף כדי להוסיף תנאי נוסף לרמת הגישה, ואז חוזרים על שני השלבים הקודמים.
לדוגמה, אם רוצים לחסום גישה לקבוצת משנה של כתובות IP בתוך טווח רחב יותר של כתובות IP, יוצרים תנאי חדש, מציינים את טווח כתובות ה-IP של קבוצת המשנה במאפיין IP Subnetworks ומגדירים את התנאי להחזרת הערך FALSE.
חוזרים על השלב הזה כדי להוסיף כמה תנאים לאותה רמת גישה.
אם יצרתם יותר מתנאי אחד, משתמשים באפשרות שילוב תנאי עם כדי לציין אם רמת הגישה דורשת שהבקשה תעמוד לפחות באחד מהתנאים (OR) או בכל התנאים (AND).
לוחצים על Save.
gcloud
אם אין לארגון מדיניות גישה, צריך ליצור אחת לפני שממשיכים.
משתמשים בפקודה gcloud access-context-manager levels create כדי ליצור רמת גישה:
gcloud access-context-manager levels create LEVEL_NAME OPTIONS \ --policy=POLICY
מחליפים את מה שכתוב בשדות הבאים:
LEVEL_NAME: השם הייחודי של רמת הגישה. הוא חייב להתחיל באות ולהכיל רק אותיות, מספרים וקווים תחתונים. השם יכול לכלול עד 50 תווים.
OPTIONS: האפשרויות הנדרשות מהטבלה הבאה.
אפשרויות basic-level-specקובץ YAML שמציין תנאי אחד או יותר לרמת הגישה.
titleשם קצר לרמת הגישה. השם של רמת הגישה מוצג במסוף Google Cloud .
combine-function(אופציונלי) קובע איך התנאים משולבים.
ערכים תקינים:
AND, ORdescription(אופציונלי) תיאור ארוך של רמת הגישה.
POLICY: המזהה של מדיניות הגישה של הארגון. אם הגדרתם מדיניות ברירת מחדל, הפרמטר הזה הוא אופציונלי.
אפשר גם לכלול את הדגלים של gcloud.
קובץ YAML של מפרט ברמה בסיסית
כשמשתמשים ב-CLI של gcloud כדי ליצור רמת גישה, צריך לספק קובץ YAML לאפשרות basic-level-spec. קובץ ה-YAML מגדיר תנאי אחד או יותר לרמת הגישה. התנאים צריכים להכיל לפחות מאפיין אחד. אם תנאי מכיל יותר ממאפיין אחד, הם ישולבו כפעולת AND (כולם צריכים להיות נכונים) או כפעולת NAND (אף אחד לא יכול להיות נכון), בהתאם לשאלה אם המאפיין negate נכלל בתנאי.
רשימה מלאה של המאפיינים שאפשר לכלול בקובץ ה-YAML זמינה במאמר בנושא מאפייני רמת הגישה.
מידע נוסף על רמות גישה ו-YAML זמין בדוגמה ל-YAML של רמת גישה.
פקודה לדוגמה
gcloud access-context-manager levels create Device_Trust \
--basic-level-spec=corpdevspec.yaml \
--combine-function=AND \
--description='Access level that conforms to corporate spec.' \
--title='Device_Trust Extended' \
--policy=1521580097614100
API
אם אין לארגון מדיניות גישה, צריך ליצור אחת לפני שממשיכים.
כדי ליצור רמת גישה, קוראים ל-accessLevels.create.
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY הוא המזהה של מדיניות הגישה של הארגון.
גוף הבקשה
גוף הבקשה חייב לכלול משאב AccessLevel שמציין את התנאים שרוצים להגדיר לרמת הגישה החדשה.
לכל Condition יש מאפיינים אחד או יותר שמוערכים כפעולת AND (כולם צריכים להיות true) או כפעולת NAND (אף אחד לא יכול להיות true), בהתאם להגדרה של השדה negate כ-true. התוצאה של החישוב קובעת אם התנאי מתקיים או לא.
גוף התשובה
אם הפעולה בוצעה ללא שגיאות, גוף התגובה של הקריאה יכיל משאב Operation עם פרטים על הפעולה POST.
הגדרות מדיניות נפוצות
בדוגמאות הבאות מוסבר על כמה מהדרכים המעשיות שבהן הארגון שלכם יכול להשתמש ברמות גישה. בדוגמאות מניחים שלארגון שלכם כבר יש מדיניות גישה.
הגבלת הגישה ברשת ארגונית
בדוגמה הזו מוסבר איך ליצור תנאי לרמת גישה שמאפשר גישה רק מטווח כתובות IP שצוין (לדוגמה, כתובות שנמצאות ברשת ארגונית).
הגבלת טווח כתובות ה-IP שמוענקת להן גישה יכולה להקשות על תוקף שנמצא בתוך הארגון או מחוצה לו לבצע אקספילטרציה של נתונים.
בדוגמה הזו, נניח שאתם רוצים ליצור רמת גישה שתאפשר לקבוצה של מבקרים פנימיים לגשת לשירות Cloud Logging בפרויקט בשם sensitive-data. לכל המכשירים של המבקרים מוקצות כתובות IP ברשת משנה בטווח שבין 203.0.113.0 לבין 203.0.113.127. אתם יודעים שלא יוקצו לרשת המשנה הזו מכשירים אחרים מלבד אלה שבהם משתמשים המבקרים.
אם רוצים להשתמש בטווח כתובות IP פרטיות (לדוגמה, 192.168.0.0/16 או 172.16.0.0/12), אפשר לעיין במאמר איך מאפשרים גישה למשאבים מוגנים מכתובת IP פנימית למידע נוסף ולדוגמה להטמעה באמצעות VPC Service Controls.
המסוף
במסוף Google Cloud , פותחים את Access Context Manager.
אם מוצגת הנחיה, בוחרים פרויקט.
בחלק העליון של הדף Access Context Manager, לוחצים על New (חדש).
בחלונית New Access Level (רמת גישה חדשה), בקטע Conditions (תנאים), לוחצים על Add attribute (הוספת מאפיין) ואז על IP Subnetworks (רשתות משנה של כתובות IP).
בתיבה IP Subnetworks (רשתות משנה של כתובות IP), בוחרים באפשרות Public IP (כתובת IP ציבורית) או Private IP (כתובת IP פרטית).
אם בוחרים באפשרות Public IP, מזינים טווח אחד או יותר של כתובות IPv4 או IPv6 בפורמט של בלוקים CIDR.
בדוגמה הזו, כדי להגביל את הגישה רק לרואי החשבון, מזינים
203.0.113.0/25בתיבה IP Subnetworks.אם בוחרים באפשרות IP פרטי, לוחצים על בחירת רשתות VPC. אפשר לציין רשתות VPC באמצעות אחת משלוש האפשרויות שזמינות ברשימה אפשרויות ייבוא.
אפשרות 1:
בוחרים באפשרות Browse for VPC networks in your organization (עיון ברשתות VPC בארגון) ובוחרים את רשתות ה-VPC.
לוחצים על הוספת רשתות VPC נבחרות.
לוחצים על בחירת רשתות משנה של כתובות IP ובוחרים את רשתות המשנה.
לוחצים על הוספת רשתות משנה של כתובות IP.
אפשרות 2:
בוחרים באפשרות הזנה ידנית של כתובת רשת VPC ומזינים רשת VPC אחת או יותר.
לוחצים על הוספת רשת VPC.
לוחצים על בחירת רשתות משנה של כתובות IP ובוחרים את רשתות המשנה.
לוחצים על הוספת רשתות משנה של כתובות IP.
אפשרות 3:
בוחרים באפשרות העלאת קובץ CSV (החלפת רשתות קיימות).
אם משתמשים בקובץ CSV כדי להוסיף רשתות VPC ותת-רשתות לרמת גישה, הכלי Access Context Manager מחליף את רשתות ה-VPC ותת-הרשתות שנבחרו קודם.
לוחצים על עיון ומעלים את קובץ ה-CSV. בקובץ ה-CSV, צריך לציין את רשתות ה-VPC ואת רשתות המשנה בפורמט הבא:
VPC_NETWORK_NAME_1 | IP_RANGE_1 | IP_RANGE_2 | ... VPC_NETWORK_NAME_2 | . | . | ... . | . | . | ... . | . | . | ...
לוחצים על ייבוא רשתות.
בעזרת קובץ ה-CSV, הכלי לניהול הקשרים בין ישויות מאכלס את שמות רשתות ה-VPC ואת פרטי רשתות המשנה בתיבות כתובת רשת ה-VPC ורשתות משנה של כתובות IP, בהתאמה.
מידע על השם של רשת ה-VPC ועל הפורמט של כתובת ה-IP הפרטית זמין במאמר שימוש בכתובת IP פנימית ברמות גישה.
לוחצים על Save.
gcloud
יוצרים קובץ YAML לרמת גישה שכולל טווח אחד או יותר של כתובות IPv4 או IPv6 בפורמט של בלוקים של CIDR.
בדוגמה הזו, כדי להגביל את הגישה רק למבקרים, צריך להזין את הטקסט הבא בקובץ ה-YAML:
- ipSubnetworks: - 203.0.113.0/25אם רוצים להשתמש בכתובת IP פרטית, צריך להזין את הפרטים הבאים בקובץ ה-YAML:
- vpcNetworkSources: - vpcSubnetwork: network: VPC_NETWORK_NAME vpcIpSubnetworks: - IP_RANGEמחליפים את VPC_NETWORK_NAME ואת IP_RANGE בערכים שמתוארים בקטע שימוש בכתובת IP פנימית ברמות גישה.
שומרים את הקובץ. בדוגמה הזו, שם הקובץ הוא
CONDITIONS.yaml.יוצרים את רמת הגישה.
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
מחליפים את מה שכתוב בשדות הבאים:
NAME: השם הייחודי של רמת הגישה. הוא חייב להתחיל באות ולהכיל רק אותיות, מספרים וקווים תחתונים.
TITLE: שם קריא לאנשים. הוא חייב להיות ייחודי למדיניות.
POLICY: המזהה של מדיניות הגישה של הארגון. אם הגדרתם מדיניות ברירת מחדל, הפרמטר הזה הוא אופציונלי.
הפלט אמור להיראות כך:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
יוצרים גוף בקשה כדי ליצור משאב
AccessLevelשכולל טווח אחד או יותר של כתובות IPv4 או IPv6 בפורמט של בלוקים CIDR.בדוגמה הזו, כדי להגביל את הגישה רק לרואי החשבון, צריך להזין את הטקסט הבא בגוף הבקשה:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "ipSubnetworks": [ "203.0.113.0/25" ] } ] } }
מחליפים את מה שכתוב בשדות הבאים:
NAME: השם הייחודי של רמת הגישה. הוא חייב להתחיל באות ולהכיל רק אותיות, מספרים וקווים תחתונים.
TITLE: שם קריא לאנשים. הוא חייב להיות ייחודי למדיניות.
אם רוצים להשתמש בכתובת IP פרטית, צריך להזין את הפרטים הבאים בגוף הבקשה:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "vpcNetworkSources": [ { "vpcSubnetwork": { "network": VPC_NETWORK_NAME, "vpcIpSubnetworks": [ IP_RANGE ] } } ] } ] } }
מחליפים את VPC_NETWORK_NAME ואת IP_RANGE בערכים שמתוארים בקטע שימוש בכתובת IP פנימית ברמות גישה.
יוצרים את רמת הגישה באמצעות קריאה ל-
accessLevels.create.POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY הוא המזהה של מדיניות הגישה של הארגון.
אחרי שיוצרים את רמת הגישה, צריך להחיל אותה באמצעות קישור גישה כדי שהיא תיאכף.
הגבלת הגישה לפי מאפייני המכשיר
בדוגמה הזו מוסבר איך ליצור רמת גישה שמעניקה גישה רק למכשירים שעומדים בסדרה מסוימת של דרישות, כמו גרסה מסוימת של מערכת הפעלה (OS).
מידע על מכשירים מסופק ל-Access Context Manager באמצעות אימות בנקודת קצה (Endpoint). אפשר לבדוק את הקריטריונים הבאים כדי לקבוע אם לאשר גישה:
- נעילת המסך מופעלת
- הצפנת האחסון מופעלת
- המכשיר מריץ סוג וגרסה ספציפיים של מערכת הפעלה
בדוגמה הזו, נניח שהארגון שלכם משתמש רק במחשבים שמותקנות בהם מערכות ההפעלה ChromeOS או Windows. כדי להוסיף שכבת אבטחה, כדאי ליצור רמת גישה שתמנע גישה של משתמשים במערכות הפעלה אחרות. בנוסף, כדי לנהל את הסיכון, חשוב לוודא שרק גרסאות מסוימות של מערכות ההפעלה יכולות לקבל גישה.
המסוף
במסוף Google Cloud , פותחים את הדף Access Context Manager.
אם מתבקשים, בוחרים פרויקט.
בחלק העליון של הדף Access Context Manager, לוחצים על New (חדש).
בחלונית New Access Level (רמת גישה חדשה), בקטע Conditions (תנאים), לוחצים על Add attribute (הוספת מאפיין) ואז על Device Policy (מדיניות מכשירים).
מוסיפים את מאפייני מדיניות המכשיר:
לוחצים על הוספה של מדיניות מערכת הפעלה ואז על מדיניות ChromeOS.
בתיבה גרסה מינימלית, מזינים את הגרסה המינימלית של ChromeOS שרוצים לאפשר.
חוזרים על שלבים 1 ו-2 עבור Windows OS Policy.
לוחצים על Save.
gcloud
יוצרים קובץ YAML לרמת גישה שכולל מדיניות מכשירים עם אילוצים של מערכת הפעלה.
בדוגמה הזו, כדי לאפשר רק למכשירים עם גרסה מינימלית מקובלת של ChromeOS ו-Windows, צריך להזין את הערכים הבאים בקובץ ה-YAML:
- devicePolicy: osConstraints: - osType: DESKTOP_CHROME_OS minimumVersion: 11316.165.0 - osType: DESKTOP_WINDOWS minimumVersion: 10.0.1809שומרים את הקובץ. בדוגמה הזו, שם הקובץ הוא
CONDITIONS.yaml.יוצרים את רמת הגישה.
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
מחליפים את מה שכתוב בשדות הבאים:
NAME: השם הייחודי של רמת הגישה. הוא חייב להתחיל באות ולהכיל רק אותיות, מספרים וקווים תחתונים.
TITLE: שם קריא לאנשים. הוא חייב להיות ייחודי למדיניות.
POLICY: המזהה של מדיניות הגישה של הארגון. אם הגדרתם מדיניות ברירת מחדל, הפרמטר הזה הוא אופציונלי.
הפלט אמור להיראות כך:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
יוצרים גוף בקשה כדי ליצור משאב
AccessLevelשכולל מדיניות מכשיר עם אילוצים של מערכת הפעלה.בדוגמה הזו, כדי לאפשר רק למכשירים עם גרסה מינימלית מקובלת של ChromeOS ו-Windows, צריך להזין את הפרטים הבאים בגוף הבקשה:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "devicePolicy": { "osConstraints": [ { "osType": "DESKTOP_CHROME_OS", "minimumVersion": "11316.165.0" }, { "osType": "DESKTOP_WINDOWS", "minimumVersion": "10.0.1809" } ] { } ] } }
מחליפים את מה שכתוב בשדות הבאים:
NAME: השם הייחודי של רמת הגישה. הוא חייב להתחיל באות ולהכיל רק אותיות, מספרים וקווים תחתונים.
TITLE: שם קריא לאנשים. הוא חייב להיות ייחודי למדיניות.
יוצרים את רמת הגישה באמצעות קריאה ל-
accessLevels.create.POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY הוא המזהה של מדיניות הגישה של הארגון.
אחרי שיוצרים את רמת הגישה, צריך להחיל אותה באמצעות קישור גישה כדי שהיא תיאכף.
הגבלת הגישה למכשירים מהימנים של הארגון עם אישורים תקפים
אתם יכולים להשתמש בגישה שמבוססת על אישורים (CBA) כדי לדרוש אישורי X.509 מאומתים לגישה למשאבי Google Cloud. פרטי הכניסה הנוספים מספקים אות חזק יותר לגבי זהות המכשיר, ועוזרים להגן על הארגון מפני גניבת פרטי כניסה או אובדן מקרי שלהם. כדי לקבל גישה, צריך להזין גם את פרטי הכניסה של המשתמש וגם את אישור המכשיר המקורי.
לפני שממשיכים, צריך לוודא שהתוסף Endpoint Verification ל-Chrome ואפליקציית העזר Endpoint Verification פרוסים בכל המכשירים שנדרשת להם גישה למשאביGoogle Cloud . הם הופכים למכשירים מהימנים שאפשר להעניק להם גישה. פרטים נוספים זמינים במאמר בנושא פריסת אימות נקודות קצה לשימוש עם גישה מבוססת-אישורים.
כדי ליצור מדיניות שדורשת גישה שמבוססת על אישורים, צריך רמת גישה עם מפרט מותאם אישית של רמת הגישה.
המסוף
במסוף Google Cloud , פותחים את הדף Access Context Manager.
אם מתבקשים, בוחרים פרויקט.
לוחצים על יצירה של רמת גישה.
בחלונית רמת גישה חדשה, בוחרים באפשרות מצב מתקדם. כדי להשתמש במצב הזה, צריך רישיון ל-Chrome Enterprise Premium.
בקטע תנאים, מזינים את הביטוי הבא בתיבה ביטוי CEL.
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICEלוחצים על Save.
gcloud
יוצרים קובץ YAML לרמת גישה שכולל אכיפה של אישורים.
expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"שומרים את הקובץ. בדוגמה הזו, שם הקובץ הוא
CONDITIONS.yaml.יוצרים את רמת הגישה.
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
מחליפים את מה שכתוב בשדות הבאים:
NAME: השם הייחודי של רמת הגישה. השם צריך להתחיל באות, והוא יכול לכלול רק אותיות, מספרים וקווים תחתונים.
TITLE: שם קריא לאנשים. היא חייבת להיות ייחודית למדיניות.
POLICY: המזהה של מדיניות הגישה של הארגון. אם הגדרתם מדיניות ברירת מחדל, הפרמטר הזה הוא אופציונלי.
הפלט אמור להיראות כך:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1234] to complete...done. Created level NAME.
API
יוצרים קובץ של גוף הבקשה לרמת גישה שכולל מדיניות מכשירים עם מגבלות של מערכת הפעלה.
{ "name": "require_certificate", "title": "Certificate-Based Access", "description": "An example certificate-based access level.", "custom": { "expr": { "expression": "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE", "title": "Require a valid certificate", "description": "Permits requests from a device with a valid mTLS certificate." } } }
יוצרים את רמת הגישה באמצעות קריאה ל-
accessLevels.create.POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY הוא המזהה של מדיניות הגישה של הארגון.
אחרי שיוצרים את רמת הגישה, צריך להחיל אותה באמצעות קישור גישה כדי שהיא תיאכף.