保护 Google Cloud 控制台和 Google Cloud API

本文档介绍了如何使用基于上下文的规则来保护对 Google Cloud 控制台和 Google Cloud API 的访问。

Google Cloud 控制台和 Google Cloud API 的情境感知访问权限通过基于上下文的规则限制对 Google Cloud 控制台和 Google Cloud API 的访问。它是 Chrome Enterprise Premium 的一部分,有助于确保您组织中满足定义的访问要求的个人和群组能够访问 Google Cloud 控制台和 Google Cloud API(包括通过 Google Cloud CLI 进行访问)。

如需保护 Google Cloud 控制台和 Google Cloud API,请完成以下步骤:

  1. [可选] 将端点验证部署到组织中的设备。
  2. 在 Access Context Manager 中创建访问权限级别。
  3. 创建一组受情境感知限制约束的用户。
  4. 获取所需的 Identity and Access Management 权限。
  5. 创建对 Google Cloud 控制台和 Google Cloud API 强制执行情境感知规则的访问权限绑定。

[可选] 部署端点验证

如果要使用设备特性保护对 Google Cloud 控制台和 Google Cloud API 的访问,请将端点验证部署到组织中的设备。

端点验证作为 Chrome 扩展程序在桌面设备和笔记本电脑上运行,适用于 MacOS、Windows 和 Linux 用户。管理员可以通过 Google 管理控制台将其部署到组织的公司自有设备,组织成员可以自行安装

创建访问权限级别

您需要通过在 Access Context Manager 中创建基本访问权限级别来定义在确定对 Google Cloud 控制台和 Google Cloud API 的访问权限时可以使用的访问权限级别。

创建用户群组

创建一组应受情境感知限制约束的用户。此群组中同时也是您的组织成员的任何用户必须满足您之前创建的访问权限级别,才能访问 Google Cloud 控制台和 Google Cloud API。

授予所需的 IAM 权限

在组织级层授予创建 Access Context Manager 访问权限绑定所需的 IAM 权限。

控制台

  1. 转到 Google Cloud 控制台中的 IAM 和管理页面。

    进入“IAM 和管理”

  2. 点击添加并配置以下内容:

    • 新成员:指定要授予权限的用户或群组。
    • 选择角色:选择 Access Context Manager > Cloud Access Binding Admin
  3. 点击保存

gcloud

  1. 确保您已经过身份验证并拥有在组织级层添加 IAM 权限的足够权限。您至少需要具有 Organization Admin 角色。

    确认拥有适当权限后,运行以下命令进行登录:

    gcloud auth login
    
  2. 通过运行以下命令来分配 GcpAccessAdmin 角色:

    gcloud organizations add-iam-policy-binding ORG_ID \
      --member=user:EMAIL \
      --role=roles/accesscontextmanager.gcpAccessAdmin
    
    • ORG_ID 是您组织的 ID。如果您不知道组织 ID,可使用以下命令进行查找:

       gcloud organizations list
      
    • EMAIL 是您要授予角色的用户或群组的电子邮件地址。

创建访问权限绑定

访问权限绑定是您之前创建的用户组与您为访问 Google Cloud 控制台和 Google Cloud API 定义的 Access Context Manager 访问权限级别之间的映射。

您可以通过以下任一方式创建访问权限绑定:

  • 群组和访问权限级别之间的访问权限绑定。
  • 通过试运行配置在群组与访问权限级别之间的访问绑定。 使用试运行配置,您可以在组和试运行访问权限级别之间创建访问权限绑定,也可以在组、访问权限级别和试运行访问权限级别之间创建访问权限绑定。

创建具有访问权限级别的访问权限绑定

控制台

  1. 前往 Google Cloud 控制台中的 Chrome Enterprise Premium 页面。

    前往 Chrome Enterprise Premium

  2. 选择一个组织,然后点击选择

  3. 点击管理访问权限以选择哪些用户组应拥有访问权限。

  4. 点击添加并配置以下内容:

    • 成员组:指定要授予访问权限的群组。 您只能选择尚未绑定到访问权限级别的群组。
    • 选择访问权限级别:选择应应用于该群组的访问权限级别。
  5. 点击保存

gcloud

如需详细了解此命令以及其他 gcloud access-context-manager cloud-bindings 命令,请参阅 Google Cloud CLI。

 gcloud access-context-manager cloud-bindings create \
    --group-key GROUP_ID \
    --level ACCESS_LEVEL \
    --organization ORG_ID

其中:

  • GROUP_ID您之前创建的用户群组的群组 ID。

    如果您没有群组 ID,则可以通过对 Groups 资源调用 get 方法进行检索。

  • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。 如果 access-context-manager/organization 属性尚未设置,请将可选 --organization 标志中的 ORG_ID 替换为您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
  • POLICY_ID 是贵组织的访问权限政策 ID。
  • ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

API

在使用任何请求数据之前,请先进行以下替换:

  • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
  • GROUP_ID您之前创建的用户群组的群组 ID。

    如果您没有群组 ID,则可以通过对 Groups 资源调用 get 方法进行检索。

  • POLICY_ID 是贵组织的访问权限政策 ID。
  • ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

HTTP 方法和网址:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

请求 JSON 正文:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [ "ACCESS_LEVEL" ],
}

如需发送请求,请选择以下方式之一:

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/organizations/ORG_ID/gcpUserAccessBindings"

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/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ]
}

创建具有试运行配置的访问权限绑定

您可以创建具有试运行配置的访问权限绑定,以了解在以下情况下,环境中的访问权限级别的影响:

  • 如需在强制执行访问权限级别之前评估其影响,请创建具有试运行访问权限级别的访问权限绑定。
  • 如需强制执行访问权限级别并同时评估试运行访问权限级别的影响,请创建具有有效访问权限级别和试运行访问权限级别的访问权限绑定。

与试运行访问权限级别绑定的访问权限绑定不会阻止访问,但会记录对试运行访问权限级别的违规行为。如需查看日志详细信息,请参阅拒绝日志

创建具有试运行访问权限级别的访问权限绑定

gcloud

    gcloud access-context-manager cloud-bindings create \
    --group-key = GROUP_ID \
    --dry-run-level = DRY_RUN_ACCESS_LEVEL \
    --organization ORG_ID

其中:

  • GROUP_ID您之前创建的用户群组的群组 ID。

    如果您没有群组 ID,则可以通过对 Groups 资源调用 get 方法进行检索。

  • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。 如果 access-context-manager/organization 属性尚未设置,请将可选 --organization 标志中的 ORG_ID 替换为您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
  • POLICY_ID 是贵组织的访问权限政策 ID。
  • DRY_RUN_ACCESS_LEVEL 是您想要了解其效果的 ACCESS_LEVELACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

API

在使用任何请求数据之前,请先进行以下替换:

  • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
  • GROUP_ID您之前创建的用户群组的群组 ID。

    如果您没有群组 ID,则可以通过对 Groups 资源调用 get 方法进行检索。

  • POLICY_ID 是贵组织的访问权限政策 ID。
  • DRY_RUN_ACCESS_LEVEL 是您想要了解其效果的 ACCESS_LEVELACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

HTTP 方法和网址:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

请求 JSON 正文:

{
  "groupKey": "GROUP_ID",
  "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
}

如需发送请求,请选择以下方式之一:

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/organizations/ORG_ID/gcpUserAccessBindings"

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/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",

  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

创建具有访问权限级别和试运行访问权限级别的访问权限绑定

gcloud

    gcloud access-context-manager cloud-bindings create \
    --group-key = GROUP_ID \
    --level = ACCESS_LEVEL \
    --dry-run-level = DRY_RUN_ACCESS_LEVEL \
    --organization ORG_ID

其中:

  • GROUP_ID您之前创建的用户群组的群组 ID。

    如果您没有群组 ID,则可以通过对 Groups 资源调用 get 方法进行检索。

  • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。 如果 access-context-manager/organization 属性尚未设置,请将可选 --organization 标志中的 ORG_ID 替换为您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
  • POLICY_ID 是贵组织的访问权限政策 ID。
  • ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。
  • DRY_RUN_ACCESS_LEVEL 是您想要了解其效果的 ACCESS_LEVELACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

API

在使用任何请求数据之前,请先进行以下替换:

  • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
  • GROUP_ID您之前创建的用户群组的群组 ID。

    如果您没有群组 ID,则可以通过对 Groups 资源调用 get 方法进行检索。

  • POLICY_ID 是贵组织的访问权限政策 ID。
  • ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。
  • DRY_RUN_ACCESS_LEVEL 是您想要了解其效果的 ACCESS_LEVELACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

HTTP 方法和网址:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

请求 JSON 正文:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [ "ACCESS_LEVEL" ],
  "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
}

如需发送请求,请选择以下方式之一:

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/organizations/ORG_ID/gcpUserAccessBindings"

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/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ],
  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

查看拒绝日志

创建试运行配置后,您可以查看日志以确定试运行配置拒绝访问的位置。

下表列出了可用于创建和运行查询以获取日志的日志字段:

字段名称 说明
protoPayload > authenticationInfo > principalEmail 拒绝访问的主账号的电子邮件 ID。
protoPayload > metadata > deniedApplications 拒绝访问的应用的名称。
protoPayload > metadata > evaluationResult 有效访问权限政策的评估结果。可能的值:GRANTEDDENIED
protoPayload > metadata > appliedAccessLevels 有效访问权限政策所需的已应用的访问权限级别。
protoPayload > metadata > appliedDryRunAccessLevels 试运行访问权限政策所需的已应用的访问权限级别。
protoPayload > metadata > dryRunEvaluationResult 试运行访问权限政策的评估结果,指示强制执行访问权限政策时的预期操作。可能的值:GRANTEDDENIED

如需详细了解如何为日志创建查询,请参阅日志记录查询语言

控制台

  1. 在 Google Cloud 控制台导航菜单中,点击 Logging,然后点击日志浏览器

    转到日志浏览器

  2. 查询字段中,输入类似于以下过滤条件的查询过滤条件,然后点击运行查询

    severity="ERROR" AND
    (protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND
     protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND
     protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"
    
  3. 查询结果下查看日志。

gcloud

如需使用 gcloud CLI 查看日志,请运行如下命令:

gcloud logging read 'severity="ERROR" AND
  (protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND
   protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND
   protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"'

管理访问权限绑定

为一组用户创建访问权限绑定后,系统会根据绑定的访问权限级别要求来控制对 Google Cloud 控制台和 Google Cloud API 的访问权限。

您可以查看自己创建的访问权限绑定的详细信息,还可以修改或删除该绑定。

查看访问权限绑定

控制台

您可以查看组织的所有访问权限绑定,以及访问权限绑定的详细信息。

gcloud

  • 如需查看所有访问权限绑定,请运行以下命令:

      gcloud access-context-manager cloud-bindings list \
       --organization ORG_ID
    

    其中:

    ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。。 如果 access-context-manager/organization 属性尚未设置,请将可选 --organization 标志中的 ORG_ID 替换为您在创建 GcpAccessAdmin 角色时使用的组织的 ID。

  • 如需查看访问权限绑定的详细信息,请运行以下命令:

      gcloud access-context-manager cloud-bindings describe \
      --binding=BINDING_ID
    

    其中:

    BINDING_ID 是访问权限绑定的访问绑定标识符或完全限定标识符的 ID。

API

  • 查看所有访问权限绑定:

    在使用任何请求数据之前,请先进行以下替换:

    • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。 如果 access-context-manager/organization 属性尚未设置,请将可选 --organization 标志中的 ORG_ID 替换为您在创建 GcpAccessAdmin 角色时使用的组织的 ID。

    HTTP 方法和网址:

    GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

    如需发送请求,请选择以下方式之一:

    curl

    执行以下命令:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

    PowerShell

    执行以下命令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

    
    {
      "name": string,
      "groupKey": string,
      "accessLevels": [
        string
      ]
      "dryRunAccessLevels": [
      string
      ]
    }
    
    

  • 查看访问权限绑定的详细信息:

    HTTP 方法和网址:

    GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID

    如需发送请求,请选择以下方式之一:

    curl

    执行以下命令:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://accesscontextmanager.googleapis.com/v1/BINDING_ID"

    PowerShell

    执行以下命令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

    
    {
      "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
      "groupKey": "045jfvxd0ybeul8",
      "accessLevels": [
        "accessPolicies/305009197125/accessLevels/device_lock"
      ],
      "dryRunAccessLevels": [
        "accessPolicies/305009197125/accessLevels/another"
      ]
    }
    
    

更新访问权限绑定

控制台

您可以根据需要更新访问权限绑定。

gcloud

  • 如需更新访问权限绑定(例如更改访问权限级别),请运行以下命令:

      gcloud access-context-manager cloud-bindings update \
         --binding ACCESS_BINDING \
         --level ACCESS_LEVEL
    

    其中:

    • ACCESS_BINDING 的格式为 organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
    • ORG_ID 是您在创建 GcpAccessAdmin 角色时使用的组织的 ID。
    • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。
    • 根据需要替换 ACCESS_LEVEL 的值。 ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。
  • 如需更新具有试运行访问权限级别的访问权限绑定,请运行以下命令:

     gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING
      --dry-run-level=DRY_RUN_ACCESS_LEVEL
    

    请根据需要替换 DRY_RUN_ACCESS_LEVEL 的值。其格式为 accessPolicies/POLICY_ID/accessLevels/DRY_ACCESS_LEVEL_NAME

  • 如需更新访问权限绑定并更改访问权限级别和试运行访问权限级别,请运行以下命令:

     gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING
     --level=`ACCESS_LEVEL`
     --dry-run-level=DRY_RUN_ACCESS_LEVEL
    

    请根据需要替换 ACCESS_LEVELDRY_RUN_ACCESS_LEVEL 的值。ACCESS_LEVELDRY_RUN_ACCESS_LEVEL 的形式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME,并且 DRY_RUN_ACCESS_LEVELACCESS_LEVEL 相同。

  • 如需从访问权限绑定中移除试运行访问权限级别,请运行以下命令:

      gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING
      --dry-run-level=
    

API

  • 更新访问权限绑定,例如更改访问权限级别:

    在使用任何请求数据之前,请先进行以下替换:

    • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。
    • ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

    HTTP 方法和网址:

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels

    请求 JSON 正文:

    {
        "accessLevels": [ "ACCESS_LEVEL" ]
    }
    
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels"

    PowerShell

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

    
    {
        "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
        "groupKey": "045jfvxd0ybeul8",
        "accessLevels": [
          "accessPolicies/305009197125/accessLevels/device_lock"
        ]
    }
    
    

  • 使用试运行访问权限级别更新访问权限绑定:

    在使用任何请求数据之前,请先进行以下替换:

    • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。
    • DRY_RUN_ACCESS_LEVEL 是您想要了解其效果的 ACCESS_LEVELACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

    HTTP 方法和网址:

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels

    请求 JSON 正文:

    {
      "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
    }
    
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels"

    PowerShell

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

    
    {
      name: "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
    
      group_key: "045jfvxd0ybeul8",
    
      dry_run_access_levels: [ "accessPolicies/305009197125/accessLevels/another" ]
      }
    
    

  • 更新访问权限绑定并更改访问权限级别和试运行访问权限级别:

    在使用任何请求数据之前,请先进行以下替换:

    • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。
    • ACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。
    • DRY_RUN_ACCESS_LEVEL 是您想要了解其效果的 ACCESS_LEVELACCESS_LEVEL 的格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。从创建访问权限级别起,您可以在 Access Context Manager 中找到 POLICY_IDACCESS_LEVEL_NAME 的值。

    HTTP 方法和网址:

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels

    请求 JSON 正文:

    {
      "accessLevels": [ "ACCESS_LEVEL" ],
      "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
     }
    
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels"

    PowerShell

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels" | Select-Object -Expand Content

    您应该收到类似以下内容的 JSON 响应:

    
    {
      "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
      "groupKey": "045jfvxd0ybeul8",
      "accessLevels": [
        "accessPolicies/305009197125/accessLevels/device_lock"
      ],
      "dryRunAccessLevels": [
        "accessPolicies/305009197125/accessLevels/another"
      ]
    }
    
    

  • 从访问权限绑定中移除试运行访问权限级别:

    在使用任何请求数据之前,请先进行以下替换:

    • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。

    HTTP 方法和网址:

    PATCH PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels

    请求 JSON 正文:

    {
      "dryRunAccessLevels": [ ]
    }
    
    

    如需发送请求,请选择以下方式之一:

    curl

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels"

    PowerShell

    将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels" | Select-Object -Expand Content

    您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

删除访问权限绑定

控制台

您可以根据需要随时删除访问绑定。

gcloud

   gcloud access-context-manager cloud-bindings delete \
       --binding ACCESS_BINDING

其中:

  • ACCESS_BINDING 的格式为 organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
  • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。

API

在使用任何请求数据之前,请先进行以下替换:

  • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。

HTTP 方法和网址:

DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。

常见问题解答

  • 新创建的访问权限绑定需要多长时间才能生效?

    最长可能需要 24 小时。

  • 如果我删除具有访问权限绑定的组,会发生什么情况?

    组和绑定会被删除,组中的所有用户都被允许访问。

  • 如果我删除访问权限绑定中使用的访问权限级别,会发生什么情况?

    始终无法满足访问权限级别,该绑定组所有用户的访问将被拒绝。

  • 如果一个用户属于多个具有访问权限绑定的组,会发生什么情况?

    该用户只需满足其中一个组的访问权限级别即可获得访问权限。

  • 不属于我的组织的用户会怎么样?

    不属于您组织的任何用户不受访问权限绑定的约束,即使您已将其添加到受情境感知限制约束的用户组也是如此。

后续步骤