管理对用户管理的笔记本实例的访问权限

本指南介绍如何授予对特定 Vertex AI Workbench 用户管理的笔记本实例的访问权限。如需管理对 Vertex AI 资源的访问权限,请参阅有关访问权限控制的 Vertex AI 页面

您可以通过在用户管理的笔记本实例上设置 Identity and Access Management (IAM) 政策来授予对该实例的访问权限。该政策会将一个或多个主账号(例如一个用户或一个服务账号)绑定到一个或多个角色。每个角色都包含一系列可让主账号与实例互动的权限。

您可以授予实例(而非项目、文件夹或组织等父资源)的访问权限,以执行最小权限原则。

如果您授予对父资源(例如,一个项目)的访问权限,则也隐含授予了对其所有子资源(例如,该项目中的所有实例)的访问权限。如需限制对资源的访问权限,请尽可能针对较低级层的资源设置 IAM 政策,而不是在项目级层或更高级层设置。

如需大致了解如何授予、更改和撤消对与 Vertex AI Workbench 无关的资源的访问权限(例如,授予对 Google Cloud 项目的访问权限),请参阅 IAM 文档中的管理对项目、文件夹和组织的访问权限部分。

访问权限限制

对实例的访问权限可以包括各种功能,具体取决于您分配给主账号的角色。例如,您可以向主账号授予启动、停止、升级和监控实例运行状况的权限。如需查看可用 IAM 权限的完整列表,请参阅预定义的用户管理笔记本 IAM 角色

但是,即使为主账号授予对用户管理的笔记本实例的完整访问权限也不会授予使用该实例的 JupyterLab 界面的权限。 如需授予对 JupyterLab 接口的访问权限,请参阅管理对用户管理的笔记本实例的 JupyterLab 接口的访问权限

授予对用户管理的笔记本实例的访问权限

如需向用户授予访问特定的用户管理笔记本实例的权限,请在实例上设置 IAM 政策

gcloud

如需向主账号授予用户管理的笔记本实例上的角色,请使用 get-iam-policy 命令检索当前政策,修改当前政策的访问权限,然后使用 set-iam-policy 命令更新实例上的政策。

检索当前政策

在使用下面的命令数据之前,请先进行以下替换:

  • INSTANCE_NAME:用户管理的笔记本实例的名称
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • ZONE:实例所在的可用区

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE

Windows (PowerShell)

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE

Windows (cmd.exe)

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE
响应是实例的 IAM 政策的文本。 请查看以下示例。
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

修改政策

  1. 使用文本编辑器修改该政策,以添加或移除主账号及其关联的角色。例如,如需向 eve@example.com 授予 notebooks.admin 角色,请将以下新绑定添加到政策中的 "bindings" 部分:

    {
      "role": "roles/notebooks.admin",
      "members": [
        "user:eve@example.com"
      ]
    }
    

    添加新绑定后,政策可能如下所示:

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. 将更新后的政策保存在名为 request.json 的文件中。

更新实例的政策

在请求正文中,提供上一步中更新后的 IAM 政策,并嵌套在 "policy" 部分内。

在使用下面的命令数据之前,请先进行以下替换:

  • INSTANCE_NAME:用户管理的笔记本实例的名称
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • ZONE:实例所在的可用区

将以下内容保存在名为 request.json 的文件中:

{
  "policy": {
    "bindings": [
      {
        "role": "roles/notebooks.viewer",
        "members": [
          "user:email@example.com"
        ]
      },
      {
        "role": "roles/notebooks.admin",
        "members": [
          "user:eve@example.com"
        ]
      }
    ],
    "etag": "BwWWja0YfJA=",
    "version": 3
  }
}

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Windows (PowerShell)

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Windows (cmd.exe)

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

授予对 JupyterLab 界面的访问权限

向主账号授予对用户管理的笔记本实例的访问权限不会授予使用该实例的 JupyterLab 接口的权限。如需授予对 JupyterLab 接口的访问权限,请参阅管理对用户管理的笔记本实例的 JupyterLab 接口的访问权限

API

如需向主账号授予用户管理的笔记本实例上的角色,请使用 getIamPolicy 方法检索当前政策,修改当前政策的访问权限,然后使用 setIamPolicy 方法更新实例上的政策。

检索当前政策

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

  • INSTANCE_NAME:用户管理的笔记本实例的名称

HTTP 方法和网址:

GET https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy

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

curl

执行以下命令:

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

PowerShell

执行以下命令:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy" | Select-Object -Expand Content
响应是实例的 IAM 政策的文本。请查看以下示例。
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

修改政策

使用文本编辑器修改该政策,以添加或移除主账号及其关联的角色。例如,如需向 eve@example.com 授予 notebooks.admin 角色,请将以下新绑定添加到政策中的 "bindings" 部分:

{
  "role": "roles/notebooks.admin",
  "members": [
    "user:eve@example.com"
  ]
}

添加新绑定后,政策可能如下所示:

{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    },
    {
      "role": "roles/notebooks.admin",
      "members": [
        "user:eve@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

更新实例的政策

在请求正文中,提供上一步中更新后的 IAM 政策,并嵌套在 "policy" 部分内。

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

  • INSTANCE_NAME:用户管理的笔记本实例的名称

HTTP 方法和网址:

POST https://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy

请求 JSON 正文:

{
  "policy": {
    "bindings": [
      {
        "role": "roles/notebooks.viewer",
        "members": [
          "user:email@example.com"
        ]
      },
      {
        "role": "roles/notebooks.admin",
        "members": [
          "user:eve@example.com"
        ]
      }
    ],
    "etag": "BwWWja0YfJA=",
    "version": 3
  }
}

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

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://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy"

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://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy" | Select-Object -Expand Content

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

授予对 JupyterLab 界面的访问权限

向主账号授予对用户管理的笔记本实例的访问权限不会授予使用该实例的 JupyterLab 接口的权限。如需授予对 JupyterLab 接口的访问权限,请参阅管理对用户管理的笔记本实例的 JupyterLab 接口的访问权限

后续步骤