火山引擎上的权限管理主要是通过访问控制 IAM实现,主账号(或有相关权限的用户)通常会根据团队成员的职责、工作内容为不同的成员创建子账号(子用户),并通过对子账号赋予相应的权限策略实现细粒度的访问控制。出于安全的考虑,在为子账号分配策略时应遵循最小权限原则。本文从用户、用户组和策略三个方面介绍如何在机器学习平台上进行权限管理。
用户
火山引擎提供了【用户】模块管理该账号下的所有子用户,在该模块下能够对子用户进行创建、删除、配置权限等操作。
创建子用户
使用前提
- 以主账号或者拥有【访问控制】权限的用户登录。
操作步骤
- 登录火山引擎控制台,单击顶部右上角的用户名称下的【访问控制】 进入对应页面。
- 在左侧的导航栏依次单击【用户】-【新建用户】进入基本信息设置页面。关键参数如下:
参数名称 | 参数说明 |
---|
用户名 | * 填写子用户的名称。必填。 |
控制台登录 | * 为新用户配置子账号和密码,赋予用户通过控制台(Web 页面)访问平台的权限。选填。 * 需要通过 Web 页面访问平台的用户需要开启该权限。 |
自动生成密钥 | * 为用户生成 AK / SK。选填。 * AK / SK 作为用户的重要身份凭证,强烈建议开启。日常使用 OpenAPI / SDK / 命令行工具时均需要 AK / SK 进行身份验证。获得 AK / SK 后请妥善保管切勿泄露。 |
- 完成上述配置后单击【下一步】进入权限设置页面。通过勾选不同的 策略 赋予用户不同的权限,详见访问控制-用户管理。
- 核对无误后提交表单完成子用户的创建,后续即可在【用户】列表 / 详情页中管理该用户。
修改用户的权限
使用前提
- 以主账号或者拥有【访问控制】权限的用户登录。
- 【用户】中存在 >= 1 个用户。
操作步骤
- 登录火山引擎控制台,单击顶部右上角的用户名称下的【访问控制】 进入对应页面。
- 在左侧的导航栏单击【用户】进入用户列表,单击待修改用户的名称进入用户详情页,在该页面下可以完成更换用户关联的策略或角色、新增 / 删除密钥、重置密码等操作。
管理当前用户的密钥(AK / SK)
使用前提
- 以主账号或者拥有【密钥管理】权限的用户登录。
操作步骤
- 登录火山引擎控制台,单击顶部右上角的用户名称下的【密钥管理】 进入对应页面,并按需对密钥进行新建、查看、复制、禁用、删除等操作。
管理子用户的密钥(AK / SK)
使用前提
- 以主账号或者拥有【访问控制】权限的用户登录。
操作步骤
- 登录火山引擎控制台,单击顶部右上角的用户名称下的【访问控制】 进入对应页面。
- 单击【用户】进入对应页面后单击某个用户的名称进入用户详情页面并单击【密钥】。
- 在该页面下按需对密钥进行新建、查看、复制、禁用、删除等操作。
用户组
用户组是若干用户(子账号)的集合,通过在用户组上绑定若干个权限策略,可使用户组内的成员均享有这些权限。若某个用户同时加入了多个用户组,该用户的权限将是多个用户组权限的并集。
通常主账号下如果包含多个子账号且需要以分组的形式划分权限时可以考虑使用【用户组】功能,该功能可实现多个子账号的批量授权,避免为每个子账号单独授权的重复劳动。
创建用户组及授权
使用前提
- 以主账号或者拥有【访问控制】权限的用户登录。
操作步骤
- 新建用户组:登录火山引擎控制台,单击顶部右上角的用户名称下的【访问控制】 进入对应页面。单击【用户组】进入用户组列表页,单击【新建用户组】,在弹出的页面中填写用户组名称即可创建一个用户组。
- 添加用户:单击【用户组】进入对应页面后单击想要加入的用户组的名称进入用户组详情页面。单击【添加用户】,在弹出的页面中勾选相应的用户即可加入该用户组。
- 为用户组绑定权限:在用户组详情页面依次单击【权限】-【全局权限】-【添加权限】,在策略列表中勾选相应的策略即可快速地为用户组中的所有用户授予对应的权限。例如,若为普通开发者创建用户组则可以包含以下策略:
- MLPlatformMemberAccess:该策略包含机器学习平台开发者访问权限,包含常用的机器学习平台及部分对象存储的权限。
- AccessKeyFullAccess:该策略包含密钥管理全读写权限。
- TOSFullAccess:该策略包含对象存储(TOS)全读写访问权限。
- CRFullAccess:该策略包含镜像仓库服务镜像全读写访问权限。
- 【可选】CFSFullAccess:该策略包含 CloudFS 全读写访问权限。
- 【可选】vePFSFullAccess:该策略包含 vePFS 全读写访问权限。
- 用户组的权限和用户都支持动态添加,当权限不足或出现新用户可再次进入用户组详情页添加权限或用户。
移除用户
用户组不仅可以新增用户,也可将现有用户从用户组中移除,被移除的用户将失去该用户组中分配的所有权限。
使用前提
- 以主账号或者拥有【访问控制】权限的用户登录。
操作步骤
- 在【访问控制】页面中,单击【用户组】进入对应页面后单击用户组的名称进入用户组详情页面。
- 用户组详情页面中会显示该用户组中的所有用户,在想要移除的用户名后单击【移除】即可将该用户移除出该用户组,此时该用户对应的权限将被回收。
策略管理
火山引擎提供了【策略管理】模块用于管理 系统预设策略 与 用户自定义策略 。其中预设策略能够满足用户大部分的应用场景,当存在某些预设策略无法满足的特殊权限需求时,用户可以通过编写自定义策略满足自身的定制需求。
系统预设策略
在【系统预设策略】的搜索框中搜索 “MLPlatform” 关键字,可以得到机器学习平台的预设策略列表。赋予子用户不同的预设策略能够不同程度地使用机器学习平台以及相关服务中的功能。
策略名称 | 策略说明 |
---|
MLPlatformAdminAccess | - 全读写策略。赋予该策略时可读写主账号下所有资源。
- 该策略为机器学习平台最高权限,推荐平台管理者使用。
|
MLPlatformMemberAccess | - 开发者策略。赋予该策略可读写主账号内所有资源,但无法创建资源组。
- 该策略适用于机器学习平台非管理员的普通开发者。
|
MLPlatformReadonlyAccess | 只读策略。赋予该策略的用户仅能查看主账号下的资源。 |
AccessKeyFullAccess | - 允许用户管理自身的 AK / SK 的策略。
- 赋予该策略的用户能创建 / 查看 / 禁用 / 删除自己的 AK / SK,对于脱离控制台操作的用户通常都需要该策略。
|
BillingCenterFullAccess(原名 BillFullAccess) | - 允许用户管理账户内财务相关内容(如账单、订单等)的策略。
- 该策略通常与 MLPlatformAdminAccess 组合使用,因为在创建资源组时需要用户具备交易相关的权限。
|
TOSFullAccess | - 火山引擎对象存储(TOS)全读写的策略。
- 该策略通常在用户直接使用 TOS 管理存储桶(Bucket)、上传下载和读写数据时需要。
|
CFSFullAccess | - 火山引擎大数据文件存储(CloudFS)全读写的策略。
- 该策略通常在用户需要挂载 TOS 共享文件系统,使用缓存加速能力时需要。
|
CRFullAccess | - 火山引擎镜像仓库(CR)全读写的策略。
- 该策略通常在用户直接使用 CR 时需要,比如将线下的历史镜像迁移到火山引擎上。
|
IAMFullAccess | - 火山引擎镜像访问控制(IAM)全读写的策略。
- 该策略通常在用户作为管理员,管理其它子用户并做权限配置时需要。
- 当主账号与开发者们不是一个团队时建议为其中一个开发者配置该策略便于后续开发团队内部自己进行权限管理。
|
vePFSFullAccess | - 火山引擎文件存储(vePFS)全读写的策略。
- 该策略通常在用户挂载 vePFS 共享文件系统到开发机、自定义任务或在线服务的容器中时需要用到。
|
预设策略的常见配置方式
通过组合预设策略即可完成机器学习平台上开发者、管理员两种常见角色的划分。
开发者
机器学习平台上最常见的子用户要数开发者,如算法工程师、数据工程师等。这类子用户需要在平台上完成数据处理、代码开发、模型训练、模型部署等多个重要环节,因此他们需要大部分的读写权限。除此之外,还有相当大规模的开发者需要管理自身的 API 密钥(AK / SK)的权限,否则在使用 OpenAPI、命令行以及 SDK 访问机器学习平台时将无法完成身份鉴证。而开发者中也有一定的区别,不同开发者所需的预置策略如下。
- 开发者:仅进行机器学习作业,无法购买资源组也无需关心资源管理的子用户。
- MLPlatformMemberAccess
- AccessKeyFullAccess
- TOSFullAccess:如果需要通过火山引擎对象存储(TOS)的控制台页面进行 Bucket 的创建及数据传输时可以关联该策略。
- CRFullAccess:如果需要通过火山引擎镜像仓库(CR) 拉取或推送镜像时可以关联该策略。
- 【可选】CFSFullAccess:如果需要挂载 TOS 共享文件系统到容器中使用可以关联该策略。
- 【可选】vePFSFullAccess:如果需要挂载 vePFS 共享文件系统到容器中使用可以关联该策略。
管理员
子用户需要具备机器学习平台所有权限时(特别是购买资源组、全局配置),需要为其分配平台管理员的权限:
- MLPlatformAdminAccess(不能与 MLPlatformMemberAccess 叠加):有权限进行机器学习平台所有操作,包括资源购买、队列分配、全局配置。
- AccessKeyFullAccess
- BillFullAccess
- TOSFullAccess:作为管理员需要添加该策略,便于直接使用对象存储(TOS)的控制台界面管理数据。
- CFSFullAccess:如果普通开发者们需要挂载 TOS 共享文件系统到容器中使用,作为管理员强烈建议添加该策略,便于直接使用大数据文件存储(CloudFS)的控制台界面管理 CloudFS 的实例。
- vePFSFullAccess:如果普通开发者们需要挂载 vePFS 共享文件系统到容器中使用,作为管理员需要添加该策略,便于直接使用 vePFS 的控制台界面管更对应的实例。
- CRFullAccess:作为管理员需要添加该策略,便于直接使用火山引擎镜像仓库(CR) 迁移历史镜像到火山引擎。
- VPCFullAccess:作为管理员需要添加该策略,便于进行网络相关的全局配置。
- IAMFullAccess:作为管理员强烈建议添加该策略,便于直接操作访问控制(IAM)创建新的子账号并对子账号做权限管理。特别是在主账号不属于算法团队的情况下,建议在算法团队中配置一名管理员并附加 IAM 的策略,方便在新增工程师时能够及时地为其创建子用户并添加适当的权限。
用户自定义策略
自定义策略的写作规则详见策略语法,在编写过程中用户需要了解机器学习平台的 Action 和 Resource,这部分内容较为复杂,可在实际需要时通过工单咨询相关客服人员。
默认的 TOS 权限
平台会为每个主账号自动创建一个 TOS 桶(名称的前缀为 ml-platform-auto-created-required
) 用于存放用户从本地上传的代码、模型。子账号上传文件时需要拥有该桶的相关权限,因此平台在预置策略 MLPlatformAdminAccess 及 MLPlatformMemberAccess 中默认添加了该桶的读写权限。
- 在不使用预置策略时,请联系管理员(主账号或拥有 IAM 配置权限的子账号)将如下内容添加到自定义策略并赋给对应的子账号,避免子账号因缺少权限导致无法从本地上传代码及模型。
{
"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-*/*"
]
}