AI Platform Prediction 使用 Identity and Access Management (IAM) 管理资源访问权限。如需授予对某项资源的访问权限,请为用户、群组或服务账号分配一个或多个角色。要共享模型,请授予一个提供对模型及其版本的访问权限的角色。
本指南着重介绍了可用于授予对模型资源的访问权限的两个预定义 AI Platform Prediction 角色:
- AI Platform Prediction Model Owner
- AI Platform Prediction Model User
如需详细了解其他角色,请参阅可用于 AI Platform Prediction 的全部 IAM 角色的完整说明。
准备工作
- 训练您的机器学习模型。
- 将模型部署到 AI Platform Prediction。
模型角色
AI Platform Prediction Model Owner 和 Model User 角色可以授予针对特定模型资源的不同权限。
如需与个人或服务共享模型,您可以向个人或服务授予 Model User 角色。
角色名称 | 角色名称 | 技能 |
---|---|---|
AI Platform Prediction Model Owner |
拥有模型及其版本的完整访问权限。此角色会自动授予给创建该模型的用户。 |
|
AI Platform Prediction Model User |
拥有读取模型及其版本并将其用于预测的权限。通过授予此角色,您可以轻松共享特定模型。 |
授予个人和服务账号对模型的访问权限
此示例展示如何通过向个人和服务账号授予 Model Owner 或 Model User 角色来修改特定模型的 IAM 政策。您可以使用 API、gcloud
或 Google Cloud 控制台来修改政策文件。
控制台
与用户或服务账号共享模型
打开 AI Platform Prediction“模型”页面。
针对您要共享的每个模型,选中相应的复选框。
点击右上角的显示信息面板按钮以显示权限标签页。
在添加成员字段中,添加您要与其共享模型的用户的 Google 账号。例如“email1@gmail.com”。
在选择角色下拉字段中,选择要为用户添加的角色。如需共享模型资源,请选择 ML Engine Model Owner 或 ML Engine Model User。
如果您不确定选择哪个角色,请参阅模型角色以了解详情。
点击选择角色下拉字段旁边的添加按钮,完成角色选择。
Google Cloud 控制台页面将刷新,显示您已在权限标签页中分配的角色,还会列出与该角色相关联的成员列表。
如需停止与用户或服务账号共享模型,请点击账号 ID 旁边的垃圾桶图标。
gcloud
通过直接修改政策文件来修改模型政策
您可以将 JSON 或 YAML 文件与 gcloud
命令结合使用。本示例使用 JSON。
获取要修改的政策,并将其写入 JSON 文件。
gcloud ai-platform models get-iam-policy <MODEL_NAME> --format json > iam.json
打开政策文件(本例中为
iam.json
),或运行cat iam.json
查看政策。在以下政策示例中,系统会为服务账号分配 AI Platform Prediction Model Owner 角色,使其能够访问在线预测。{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] } ], "etag": "BwVUJYGz8M4=", }
使用文本编辑器,按如下方式更新
iam.json
文件。向bindings
数组添加一个新对象以定义群组成员以及这些成员的角色。例如,如需向用户email2@gmail.com
授予roles/ml.modelUser
角色,请按如下方式更改上面所示的示例:{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] }, { "role": "roles/ml.modelUser", "members": [ "user:email2@gmail.com" ] } ], "etag": "BwVUJYGz8M4=", }
通过运行以下命令来更新项目的政策:
gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
该命令会以 YAML 形式输出更新后的政策:
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
使用政策绑定命令来修改政策
使用 add-iam-policy-binding
和 remove-iam-policy-binding
命令授予、撤消及更新对模型的访问权限。
与用户共享模型
使用
add-iam-policy-binding
命令将用户添加到现有 AI Platform Prediction 模型政策,如下所示:gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \ --member user:email3@gmail.com --role roles/ml.modelUser
该命令会输出更新后的政策:
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
与服务共享模型
使用
add-iam-policy-binding
命令向现有 AI Platform Prediction 模型政策添加一个服务账号,如下所示:gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \ --member=serviceAccount:newserviceapp@appspot.gserviceaccount.com \ --role=roles/ml.modelOwner
该命令会输出更新后的政策:
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com - serviceAccount:newserviceapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
停止共享模型
如需停止与用户或服务共享模型,请使用
remove-iam-policy-binding
命令从现有的 AI Platform Prediction 模型政策中移除用户或服务。在此示例中,我们从模型政策中移除 Model Owneremail1@gmail.com
。gcloud ai-platform models remove-iam-policy-binding <MODEL_NAME> \ --member=user:email1@gmail.com \ --role=roles/ml.modelOwner
该命令会输出更新后的政策:
bindings: - members: - serviceAccount:otherapp@appspot.gserviceaccount.com - serviceAccount:newserviceapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
REST API
通过 JSON API 修改政策
通过发送以下请求来获取现有政策:
GET https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
该命令会在响应中返回当前政策:
{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] } ] }
修改完政策后,您可以通过发送以下请求来更新政策:
POST https://ml.googleapis.com/v1/projects/<project>/models/<model>:setIamPolicy
该命令会在响应中返回更新后的政策。在此示例中,我们添加了用户
email2@gmail.com
作为 Model User:{ "policy": { "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] }, { "role": "roles/ml.modelUser", "members": [ "user:email2@gmail.com" ] } ] } }
如需获取访问令牌,请运行以下命令:
gcloud auth print-access-token
调用相应 API 时,在 Authorization 标头中以不记名令牌形式传递令牌值:
curl -s -H 'Authorization: Bearer <ACCESS_TOKEN>' \ https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy