创建基于设备的访问权限级别

本文档介绍了管理员如何根据以下内容创建访问权限级别: 使用 Access Context Manager

访问权限级别 是一组属性,用于允许对资源的访问 与请求的上下文信息有关作为管理员,您可以创建 基本访问权限级别或自定义访问权限级别(使用设备属性) 端点验证收集的所有信息

准备工作

创建访问权限级别

控制台

  1. 在 Google Cloud 控制台中,前往 Access Context Manager 页面。

    转到 Access Context Manager

  2. 如果收到提示,请选择您的组织。

  3. Access Context Manager 页面上,点击 创建访问权限级别

  4. 新建访问权限级别窗格中,创建基本访问权限级别或 自定义访问权限级别有关说明,请展开必需的部分。

    创建基本访问权限级别

    1. 访问权限级别标题框中,输入以下访问权限级别的标题: 访问权限级别

      标题不得超过 50 个字符,以字母开头, 只能包含数字、字母、下划线和空格。

    2. 在以下中创建条件部分中: 选择基本模式

      ,了解所有最新动态。 <ph type="x-smartling-placeholder"></ph>
    3. Conditions 部分中,选择设备属性:
      1. 点击 Device Policy
      2. 选择必需属性。

        例如,如果您想在设备上强制执行管理员批准, 选择需要管理员批准

    4. 点击保存

    新创建的访问权限级别会显示在 Access Context Manager 页面。

    创建自定义访问权限级别

    1. 访问权限级别标题框中,输入以下访问权限级别的标题: 访问权限级别

      标题不得超过 50 个字符,以字母开头, 只能包含数字、字母、下划线和空格。

    2. 在以下中创建条件部分中: 选择高级模式
    3. 条件部分中,输入 您的自定义访问权限级别条件必须解析为单个布尔值 值。

      要查找可用于 CEL 表达式的设备属性, 请参阅设备属性 端点验证收集的所有信息

      以下 CEL 表达式仅允许通过已加密设备进行访问:

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      如需查看通用表达式语言的示例和详细信息 (CEL) 支持和自定义访问权限级别,请参阅 自定义访问权限级别规范

    4. 点击保存

    新创建的访问权限级别会显示在 Access Context Manager 页面。

gcloud CLI

要创建访问权限级别,请使用 gcloud access-context-managerLEVEL create 方法。

  1. 创建 .yaml 文件。

    • 对于基本访问权限级别,请为以下各项指定设备政策属性: 访问权限级别。

      示例:如需仅限具有加密设备存储空间的用户进行访问, 在 .yaml 文件中输入以下内容。

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • 对于自定义访问权限级别,请指定格式为 单个键值对: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:您的组织的访问权限政策 ID。
  • LEVEL_ID:访问权限级别的名称。名称不得超过 50 个字符, 以字母开头,且只能包含数字、字母和下划线。
  • ACCESS_LEVEL_NAME:访问权限级别的唯一名称。它必须具有以下各项 格式:accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
  • TITLE:直观易懂的标题。它对于政策而言必须是唯一的。
  • DESCRIPTION:访问权限级别及其用途的说明。
  • CONDITION:要授予的访问权限级别的要求列表。

HTTP 方法和网址:

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:您的组织的访问权限政策 ID。
  • LEVEL_ID:访问权限级别的名称。名称不得超过 50 个字符, 以字母开头,且只能包含数字、字母和下划线。
  • ACCESS_LEVEL_NAME:访问权限级别的唯一名称。它必须具有以下各项 格式:accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
  • TITLE:直观易懂的标题。它对于政策而言必须是唯一的。
  • DESCRIPTION:访问权限级别及其用途的说明。
  • CEL_EXPRESSION:计算结果为布尔值的 CEL 表达式。

HTTP 方法和网址:

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

详细了解如何创建包含各种条件的访问权限级别 和访问权限级别依赖项,请参阅创建基本访问权限级别

后续步骤