יצירה של רמות גישה שמבוססות על מכשירים

במאמר הזה מוסבר איך אדמינים יכולים ליצור רמות גישה על סמך מאפייני מכשיר (רמות גישה מבוססות מכשיר) באמצעות Access Context Manager.

רמת גישה היא קבוצה של מאפיינים שמשמשת להרשאת גישה למשאבים על סמך מידע הקשרי על הבקשה. אדמינים יכולים ליצור רמות גישה בסיסיות או רמות גישה מותאמות אישית באמצעות מאפייני המכשיר שנאספים על ידי אימות נקודות קצה.

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

יצירה של רמת גישה

המסוף

  1. נכנסים לדף Access Context Manager במסוף Google Cloud .

    מעבר אל Access Context Manager

  2. אם מוצגת בקשה לעשות זאת, בוחרים את הארגון.

  3. בדף Access Context Manager, לוחצים על יצירת רמת גישה.

  4. בחלונית רמת גישה חדשה, יוצרים רמת גישה בסיסית או רמת גישה בהתאמה אישית. כדי לעיין בהוראות, מרחיבים את הקטע הרלוונטי.

    יצירה של רמת גישה בסיסית

    1. בתיבה שם רמת הגישה, מזינים שם לרמת הגישה.

      השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות, קווים תחתונים ורווחים.

    2. בקטע Create Conditions in (יצירת תנאים ב), בוחרים באפשרות Basic mode (מצב בסיסי).

      .
    3. בקטע תנאים, בוחרים מאפייני מכשיר:
      1. לוחצים על מדיניות המכשיר.
      2. בוחרים את המאפיינים הנדרשים.

        לדוגמה, אם רוצים לאכוף אישור אדמין במכשירים, בוחרים באפשרות דרישת אישור אדמין.

    4. לוחצים על Save.

    רמת הגישה החדשה שנוצרה מוצגת בדף Access Context Manager.

    יצירה של רמת גישה בהתאמה אישית

    1. בתיבה שם רמת הגישה, מזינים שם לרמת הגישה.

      השם צריך להיות באורך של עד 50 תווים, להתחיל באות ויכול להכיל רק מספרים, אותיות, קווים תחתונים ורווחים.

    2. בקטע Create Conditions in, בוחרים באפשרות Advanced mode.
    3. בקטע תנאים, מזינים את הביטויים של רמת הגישה המותאמת אישית. התנאי חייב להניב ערך בוליאני יחיד.

      כדי למצוא את מאפייני המכשיר שזמינים לשימוש בביטוי CEL, אפשר לעיין במאפייני המכשיר שנאספים על ידי אימות נקודת הקצה.

      הביטוי הבא ב-CEL מאפשר גישה רק ממכשירים מוצפנים:

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      דוגמאות ומידע נוסף על תמיכה ב-Common Expression Language ‏(CEL) ועל רמות גישה מותאמות אישית זמינים במפרט של רמות גישה מותאמות אישית.

    4. לוחצים על Save.

    רמת הגישה החדשה שנוצרה מוצגת בדף Access Context Manager.

‫CLI של gcloud

כדי ליצור רמות גישה, משתמשים בשיטה gcloud access-context-manager levels create.

  1. יוצרים קובץ .yaml.

    • ברמת גישה בסיסית, מציינים מאפיינים של מדיניות המכשיר עבור רמת הגישה.

      דוגמה: כדי להגביל את הגישה רק למשתמשים עם אחסון מוצפן במכשיר, צריך להזין את הערך הבא בקובץ .yaml.

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • לגבי רמת גישה מותאמת אישית, מציינים ביטוי CEL בפורמט של צמד מפתח/ערך יחיד: expression: "CEL_EXPRESSION"

      דוגמה: כדי להגביל את הגישה רק למשתמשים עם אחסון מוצפן במכשיר ועם סטטוס מכשיר מאושר, מזינים את הערך הבא בקובץ .yaml.

      expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
      

    רשימת המאפיינים של מדיניות המכשיר לרמות גישה ופורמט ה-YAML שלהם מופיעה במאמר מאפיינים של מדיניות המכשיר. כדי לראות קובץ YAML מקיף של כל המאפיינים האפשריים, אפשר לעיין בדוגמה הזו של קובץ YAML של רמת גישה.

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

  2. יוצרים את רמת הגישה.

    • כדי להגדיר רמת גישה בסיסית, מריצים את הפקודה הבאה:

      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"
      }
    }
  }
}

מידע נוסף על יצירת רמות גישה עם תנאים שונים ויחסי תלות בין רמות גישה זמין במאמר בנושא יצירת רמת גישה בסיסית.

המאמרים הבאים