火山引擎上的权限管理主要是通过访问控制 IAM实现,主账号(或有相关权限的用户)通常会根据团队成员的职责、工作内容为不同的成员创建子账号(子用户),并通过对子账号赋予相应的权限策略实现细粒度的访问控制。出于安全的考虑,在为子账号分配策略时应遵循最小权限原则。本文从用户、用户组和策略三个方面介绍如何在机器学习平台上进行权限管理。
火山引擎提供了【用户】模块管理该账号下的所有子用户,在该模块下能够对子用户进行创建、删除、配置权限等操作。
使用前提
以主账号或者拥有【访问控制】权限的用户登录。
操作步骤
参数名称 | 参数说明 |
|---|---|
用户名 |
|
控制台登录 |
|
自动生成密钥 |
|
使用前提
操作步骤
使用前提
操作步骤
使用前提
操作步骤
用户组是若干用户(子账号)的集合,通过在用户组上绑定若干个权限策略,可使用户组内的成员均享有这些权限。若某个用户同时加入了多个用户组,该用户的权限将是多个用户组权限的并集。
通常主账号下如果包含多个子账号且需要以分组的形式划分权限时可以考虑使用【用户组】功能,该功能可实现多个子账号的批量授权,避免为每个子账号单独授权的重复劳动。
使用前提
操作步骤
用户组不仅可以新增用户,也可将现有用户从用户组中移除,被移除的用户将失去该用户组中分配的所有权限。
使用前提
操作步骤
火山引擎提供了【策略管理】模块用于管理 系统预设策略 与 用户自定义策略 。其中预设策略能够满足用户大部分的应用场景。
策略名称 | 策略说明 |
|---|---|
MLPlatformAdminAccess |
|
MLPlatformMemberAccess |
|
MLPlatformDeveloperAccess | 开发者权限,面向新版的机器学习平台。 |
MLPlatformReadonlyAccess | 只读策略。赋予该策略的用户仅能查看主账号下的资源。 |
AccessKeyFullAccess |
|
BillingCenterFullAccess(原名 BillFullAccess) |
|
TOSFullAccess |
|
CFSFullAccess |
|
CRFullAccess |
|
IAMFullAccess |
|
vePFSFullAccess |
|
当存在某些预设策略无法满足的特殊权限需求时,用户可以通过编写自定义策略满足自身的定制需求。
自定义策略的写作规则详见策略语法,在编写过程中用户需要了解机器学习平台的 Action 和 Resource,这部分内容较为复杂,可在实际需要时通过工单咨询相关客服人员。
您是机器学习平台v1版本的用户,通过组合预设策略即可完成机器学习平台上开发者、管理员两种常见角色的划分。
子用户需要具备机器学习平台所有权限时(特别是购买资源组、全局配置),需要为其分配平台管理员的权限:
机器学习平台上最常见的子用户要数开发者,如算法工程师、数据工程师等。这类子用户需要在平台上完成数据处理、代码开发、模型训练、模型部署等多个重要环节,因此他们需要大部分的读写权限。除此之外,还有相当大规模的开发者需要管理自身的 API 密钥(AK / SK)的权限,否则在使用 OpenAPI、命令行以及 SDK 访问机器学习平台时将无法完成身份鉴证。而开发者中也有一定的区别,不同开发者所需的预置策略如下。
机器学习平台会为每个主账号自动创建一个 TOS 桶(名称的前缀为 ml-platform-auto-created-required) 用于存放用户从本地上传的代码、模型。子账号上传文件时需要拥有该桶的相关权限,因此平台在预置策略 MLPlatformAdminAccess 及 MLPlatformMemberAccess 中默认添加了该桶的读写权限。
{ "Action": [ "tos:List*", # 用于列举桶内文件 "tos:Get*", # 用于下载文件、获取桶相关信息等操作 "tos:Put*", # 上传文件 "tos:Head*" # 用于判断桶是否存在,获取桶元数据 ], "Effect": "Allow", "Resource": [ # 将上述权限的作用范围限制在平台自动创建的桶中 "trn:tos:::ml-platform-auto-created-required-*", "trn:tos:::ml-platform-auto-created-required-*/*" ] }
您是机器学习平台v2版本用户,可参考下面进行权限配置。
当子用户作为资源管理员,需要运维机器学习平台(veMLP)上的资源时,需要的权限主要涉及:
因此在 veMLP 上的资源管理员子用户,为了使用的连续性建议,授予以下权限:
当子用户只需要在机器学习平台(veMLP)上开发、训练和推理模型时,可以只需要授权开发人员的权限。以下权限主要涉及:
因此在 veMLP 上的资源管理员子用户,为了使用的连续性建议授予以下权限:
队列是机器学习平台资源配额管理的模块,若子用户需要使用资源来创建各种负载时,需要先加入队列中(管理员或成员皆可)。下边解释一下队列的角色定义:
步骤 | 操作介绍 |
|---|---|
Step1 | 完成队列的基础信息
|
Step2 | 分配队列权限
|
Step3 | 管理用户用量上限
|
注意
请注意,资源管理员需主动为队列管理员的成员添加 IAM 相关策略,否则队列管理员将无法正常编辑队列内成员。
在队列创建后,若需要管理队列内管理员和成员的列表,可以通过编辑【管理用户】实现。
说明
目前暂不支持直接在访问控制中添加用户或策略。若有队列成员维护需求,请继续在 veMLP 控制台上进行操作。
IAMFullAccess 权限(若该权限范围较广,可配置自定义策略)步骤 | 操作介绍 |
|---|---|
Step1 |
|
权限说明:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ml_platform:*DevInstance*", "ml_platform:*Job*", "ml_platform:*Service*", "ml_platform:*Deployment*", "ml_platform:*CustomTask*" ], "Resource": [ "trn:ml_platform:cn-beijing:2100xxx:devinstance/*", "trn:ml_platform:cn-beijing:2100xxx:job/*", "trn:ml_platform:cn-beijing:2100xxx:service/*", "trn:ml_platform:cn-beijing:2100xxx:deployment/*" ], "Condition": { "StringEquals": { "volc:ResourceTag/sys:ml_platform:resource_queue_id": "q-202504xxx7-txxxx" } } }, { "Effect": "Allow", "Action": [ "ml_platform:*DevInstance*", "ml_platform:*Job*", "ml_platform:*Service*", "ml_platform:*Deployment*", "ml_platform:*CustomTask*", "ml_platform:*ResourceQueue*" ], "Resource": [ "trn:ml_platform:cn-beijing:2100xxx:resourcequeue/q-202504xxx7-txxxx" ] }, { "Effect": "Allow", "Action": [ "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:ListUsersForGroup", "iam:ListGroups", "iam:ListUsers", "iam:GetGroup", "iam:GetPolicy", "iam:AttachUserGroupPolicy", "iam:DetachUserGroupPolicy", "iam:ListEntitiesForPolicy" ], "Resource": [ "*" ] } ] }
队列成员,可以使用该队列创建任意负载(队列需要支持该负载选项),并有对应负载创建者的读写权限。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ml_platform:*DevInstance*", "ml_platform:*Job*", "ml_platform:*Service*", "ml_platform:*Deployment*", "ml_platform:*CustomTask*" ], "Resource": [ "trn:ml_platform:cn-beijing:2100xxx:resourcequeue/q-202504xxx7-txxxx" ] } ] }
若 IAMFullAccess 权限过大,可考虑创建新的自定义策略并完成授权。
{ "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetGroup", "iam:AddUserToGroup", "iam:CreateGroup", "iam:AttachUserGroupPolicy", "iam:CreatePolicy", "iam:DetachUserGroupPolicy", "iam:GetPolicy", "iam:RemoveUserFromGroup", "iam:GetUser", "iam:ListUsers", "iam:ListGroups", "iam:ListUsersForGroup", "iam:ListGroupsForUser", "iam:ListAttachedUserGroupPolicies", "iam:ListAttachedUserPolicies" ], "Resource": [ "*" ] } ] }
若在资源创建后,只想授予某个用户特定资源的权限时,可以通过自定义策略实现。(也可以选择将目标用户设置为队列管理员,有队列内所有负载的读写权限。)
资源名称 | 动作 |
|---|---|
resourcegroup | ResourceGroup |
service | Service |
deployment | Deployment |
devinstance | DevInstance |
job | v2: Job |
resourcequeue | ResourceQueue |
{ "Effect": "Allow", "Action": [ "ml_platform:*DevInstance*" // 动作 ], "Resource": [ // 标黄部分 {region}:{accountId}:{资源名称}:{资源id} "trn:ml_platform:cn-beijing:2100xxx:devinstance/di-202503xxxx2-gtxxxj" ] }