You need to enable JavaScript to run this app.
导航

创建和管理子账号权限

最近更新时间2023.07.10 20:06:04

首次发布时间2022.10.24 17:39:38

为方便业务管理,主账号的所有者可通过火山引擎权限管理系统(IAM)创建子账号、自定义资源访问策略、并赋予子账号管理云游戏业务和访问云手机资源的权限。

新建子账号

  1. 使用主账号登录火山引擎控制台后,点击页面右上角账号头像,在下拉菜单中选择 访问控制,打开 访问控制 页面。

  2. 在左侧导航栏中打开 用户 页面,点击 新建用户 创建子账号。

  3. 以 “通过用户名创建” 方式为例,填写子账号用户的基本信息,完成子账号用户的登录设置(是否通过密钥进行编程访问或通过密码登录访问控制台),点击 下一步

  4. 搜索并选择授予子账号的访问权限。如尚未定义权限策略,可直接点击 下一步 跳过该配置项。

  5. 检查子账号的配置信息无误后,点击 提交。子账号用户将会收到账号验证提示信息,完成验证后即可正常使用。

编辑自定义策略

火山引擎 IAM 支持两种类型的权限策略:系统预设策略和自定义策略:

  • 系统预设策略:是由火山引擎创建和管理的一些常见的权限集合,粒度较粗。系统预设策略只能用于授权,用户不可编辑和修改。

  • 自定义策略:是由用户创建的更精细化的描述对资源管理的权限集合,可以灵活的满足用户的差异化权限管理需求。

说明

如果为子账号添加了多个 IAM 权限策略,将会采用所有策略的并集。当通过 IAM 策略限制子账号的权限时,注意不要给子账号添加系统预设策略,如 “veGameFullAccess”、“IAMFullAccess”等云服务的全部管理权限策略。

主账号可以创建和编辑自定义策略并赋予子账号,对子账号的权限进行细粒度的划分。

  1. 访问控制 页面的左侧导航栏中打开 策略管理 页面,在 用户自定义策略 标签页下,点击 新建策略

  2. 在弹窗中,输入策略名称、编辑策略内容。例如:以下权限策略语法限制子账号访问业务详情:(有关策略语法的详细说明,参考 策略语法规范)。

  3. 点击 创建策略,完成自定义策略编辑。

子账号权限配置

完成自定义策略编辑后,可以为子账号配置自定义策略(或系统预设策略),授予子账号访问云游戏的资源权限,操作步骤如下:

  1. 返回用户列表,点击子账号用户名,打开 用户详情 页面。

  2. 权限 标签页下,点击 添加权限,搜索并添加系统预设策略或已创建的自定义权限。

  3. 点击 确定,完成子账号权限策略配置。用户详情 页面显示已添加的自定义权限策略。

说明:如需为子账号开通云游戏控制台的访问权限,需要首先为子账号添加 veGameFullAccess(云游戏服务全读写)权限策略,然后再按需添加其他自定义权限策略,限制子账号的资源访问权限。

策略语法规范

火山引擎 IAM 权限策略通过 JSON 格式的 PolicyDocument 表达,由以下几个元素组成:

元素名说明
Statement策略声明,对策略语句进行封装

Effect

指定策略所产生的结果是 “允许” 还是 “显式拒绝”,可选项为:

  • Allow(允许)

  • Deny(拒绝)

Action指定具体的操作,与云服务 API 的 Action 含义相同,因此在描述 Action 时需要添加前缀指定所属的云服务,Action 部分支持使用 “*” 和 “?” 两种通配符。云游戏服务的前缀为 veGame

Resource

指定 Action 作用的资源。资源以 Trn 的形式配置,格式为:trn: {service}:{region}:{account}:{resourceType}/{id},其中:

  • trn:为固定前缀

  • {service}:对应的云服务代码(云游戏固定为 veGame)

  • {region}:资源所在的地域(对于不区分地域的全局资源,此参数值为空)

  • {account}:资源所属的火山引擎账号 ID(可通过火山引擎官网页面右上角 用户 > 账号管理 > 主账号信息 获取)

  • {resourceType}:资源的类型,例如:product_id(云游戏业务)

  • {id}:资源的 ID

策略语法示例

策略名
策略内容示例

${产品英文名}FullAccess

需要云游戏服务内全部 API 的权限(对于全部 API,可以直接用通配符 * 来表达):

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "veGame:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

${产品英文名}ReadOnlyAccess

仅包含服务内全部读接口的权限(基于接口命名规范,数据读取接口命名以 List 和 Get 开头),而不包含写接口的权限:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "veGame:List*",
        "veGame:Get*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

${产品英文名}${功能模块名或角色名}Access

需要包含指定模块内的接口的权限,可以使用通配符来表达重复的部分。例如接口名中间部分都包含 Resource 字段,因此可以这样来表达:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "veGame:*Resource*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

${产品英文名}ProductFullAccess

仅允许访问指定业务:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "veGame:*"
      ],
      "Resource": [
           "trn:veGame::21000xxxxx:product_id/1633341028192xxxxxx"
      ]
    }
  ]
}