במאמר הזה מוסבר איך אדמינים יכולים ליצור רמות גישה על סמך מאפייני מכשיר (רמות גישה מבוססות מכשיר) באמצעות Access Context Manager.
רמת גישה היא קבוצה של מאפיינים שמשמשת להרשאת גישה למשאבים על סמך מידע הקשרי על הבקשה. אדמינים יכולים ליצור רמות גישה בסיסיות או רמות גישה מותאמות אישית באמצעות מאפייני המכשיר שנאספים על ידי אימות נקודות קצה.
לפני שמתחילים
כדי להשלים את המשימה בדף הזה, צריך להיות לכם אחד מהתפקידים הבאים:
- אדמין של Access Context Manager (
roles/accesscontextmanager.policyAdmin) - עריכה ב-Access Context Manager (
roles/accesscontextmanager.policyEditor)
- אדמין של Access Context Manager (
יצירה של רמת גישה
המסוף
נכנסים לדף Access Context Manager במסוף Google Cloud .
אם מוצגת בקשה לעשות זאת, בוחרים את הארגון.
בדף Access Context Manager, לוחצים על יצירת רמת גישה.
בחלונית רמת גישה חדשה, יוצרים רמת גישה בסיסית או רמת גישה בהתאמה אישית. כדי לעיין בהוראות, מרחיבים את הקטע הרלוונטי.
יצירה של רמת גישה בסיסית
בתיבה שם רמת הגישה, מזינים שם לרמת הגישה.
השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות, קווים תחתונים ורווחים.
בקטע Create Conditions in (יצירת תנאים ב), בוחרים באפשרות Basic mode (מצב בסיסי).
.
- בקטע תנאים, בוחרים מאפייני מכשיר:
- לוחצים על מדיניות המכשיר.
בוחרים את המאפיינים הנדרשים.
לדוגמה, אם רוצים לאכוף אישור אדמין במכשירים, בוחרים באפשרות דרישת אישור אדמין.
- לוחצים על Save.
רמת הגישה החדשה שנוצרה מוצגת בדף Access Context Manager.
יצירה של רמת גישה בהתאמה אישית
בתיבה שם רמת הגישה, מזינים שם לרמת הגישה.
השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות, קווים תחתונים ורווחים.
- בקטע Create Conditions in, בוחרים באפשרות Advanced mode.
בקטע תנאים, מזינים את הביטויים של רמת הגישה המותאמת אישית. התנאי חייב להניב ערך בוליאני יחיד.
כדי למצוא את מאפייני המכשיר שזמינים לשימוש בביטוי CEL, אפשר לעיין במאפייני המכשיר שנאספים על ידי אימות נקודת הקצה.
הביטוי הבא ב-CEL מאפשר גישה רק ממכשירים מוצפנים:
device.encryption_status == DeviceEncryptionStatus.ENCRYPTEDדוגמאות ומידע נוסף על תמיכה ב-Common Expression Language (CEL) ועל רמות גישה מותאמות אישית זמינים במפרט של רמות גישה מותאמות אישית.
- לוחצים על Save.
רמת הגישה החדשה שנוצרה מוצגת בדף Access Context Manager.
CLI של gcloud
כדי ליצור רמות גישה, משתמשים בשיטה gcloud access-context-manager levels create.
יוצרים קובץ
.yaml.ברמת גישה בסיסית, מציינים מאפיינים של מדיניות המכשיר עבור רמת הגישה.
דוגמה: כדי להגביל את הגישה רק למשתמשים עם אחסון מוצפן במכשיר, צריך להזין את הערך הבא בקובץ
.yaml.- devicePolicy: allowedEncryptionStatuses - ENCRYPTEDלגבי רמת גישה מותאמת אישית, מציינים ביטוי CEL בפורמט של צמד מפתח/ערך יחיד:
expression: "CEL_EXPRESSION"דוגמה: כדי להגביל את הגישה רק למשתמשים עם אחסון מוצפן במכשיר ועם סטטוס מכשיר מאושר, מזינים את הערך הבא בקובץ
.yaml.expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
רשימת המאפיינים של מדיניות המכשיר לרמות גישה ופורמט ה-YAML שלהם מופיעה במאמר מאפיינים של מדיניות המכשיר. כדי לראות קובץ YAML מקיף של כל המאפיינים האפשריים, אפשר לעיין בדוגמה הזו של קובץ YAML של רמת גישה.
כדי לראות את מאפייני המכשיר שזמינים להגדרות מותאמות אישית של רמות גישה, אפשר לעיין במאמר מאפייני המכשיר שנאספים על ידי אימות בנקודת קצה.
יוצרים את רמת הגישה.
כדי להגדיר רמת גישה בסיסית, מריצים את הפקודה הבאה:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title=TITLE \ --basic-level-spec=FILE_NAME.yaml\ --policy=POLICY_NAME
כדי ליצור רמת גישה בהתאמה אישית, מריצים את הפקודה הבאה:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title=TITLE \ --custom-level-spec=FILE_NAME.yaml\ --policy=POLICY_NAME
כאשר:
ACCESS_LEVEL_NAME הוא השם הייחודי של רמת הגישה. הפורמט הנדרש הוא:
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.LEVEL_ID הוא שם רמת הגישה. השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות וקווים תחתונים.
TITLE הוא שם שקריא לבני אדם. הוא חייב להיות ייחודי למדיניות.
FILE_NAME הוא שם הקובץ
.yaml. ברמת גישה בסיסית, היא מכילה מאפיינים של מדיניות מכשיר. לרמת גישה מותאמת אישית, הוא מכיל ביטוי CEL שמעוצב כצמד מפתח/ערך יחיד: `expression: "CEL_EXPRESSION".POLICY_NAME הוא השם של מדיניות הגישה של הארגון.
הפלט אמור להיראות כך:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
יוצרים רמת גישה באמצעות השיטה accessPolicies.accessLevels.create.
יצירה של רמת גישה בסיסית
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- POLICY_ID: המזהה של מדיניות הגישה של הארגון.
- LEVEL_ID: שם לרמת הגישה. השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות וקווים תחתונים.
- ACCESS_LEVEL_NAME: השם הייחודי של רמת הגישה. הפורמט הנדרש הוא:
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID. - TITLE: שם קריא לאנשים. היא חייבת להיות ייחודית למדיניות.
- DESCRIPTION: תיאור של רמת הגישה והשימוש בה.
- CONDITION: רשימה של דרישות לקבלת רמת הגישה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevelsגוף בקשת JSON:
For basic access levels:
{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
"description": DESCRIPTION,
"basic": {
"conditions": [
{
CONDITION
}
],
}
},
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "operations/accessPolicies/84961948973/accessLevels/deviceEncrypted/create/1666896068847514",
"metadata": {
"@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
"name": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
"title": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
"basic": {
"conditions": [
{
"devicePolicy": {
"allowedEncryptionStatuses": [
"ENCRYPTED"
]
}
}
]
}
}
}
יצירה של רמת גישה בהתאמה אישית
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- POLICY_ID: המזהה של מדיניות הגישה של הארגון.
- LEVEL_ID: שם לרמת הגישה. השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות וקווים תחתונים.
- ACCESS_LEVEL_NAME: השם הייחודי של רמת הגישה. הפורמט הנדרש הוא:
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID. - TITLE: שם קריא לאנשים. היא חייבת להיות ייחודית למדיניות.
- DESCRIPTION: תיאור של רמת הגישה והשימוש בה.
- CEL_EXPRESSION: ביטוי CEL שהערך המחושב שלו הוא בוליאני.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevelsגוף בקשת JSON:
{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
"description": DESCRIPTION,
"custom": {
"conditions": [
{
"expr": {
CEL_EXPRESSION
}
}
]
}
},
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "operations/accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName/create/1666936427127701",
"metadata": {
"@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
"name": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName",
"title": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelTitle",
"custom": {
"expr": {
"expression": "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED"
}
}
}
}
מידע נוסף על יצירת רמות גישה עם תנאים שונים ויחסי תלות בין רמות גישה זמין במאמר בנושא יצירת רמת גישה בסיסית.