管理对用户管理的笔记本实例的访问权限
本指南介绍如何授予对特定 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
{ "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 }
将更新后的政策保存在名为
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
{ "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 接口的访问权限。
后续步骤
如需了解 Identity and Access Management (IAM) 以及 IAM 角色如何帮助授予和限制访问权限,请参阅 IAM 文档。
了解如何创建和管理自定义角色。
如需了解如何授予对其他 Google 资源的访问权限,请参阅管理对其他资源的访问权限。