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

使用 IAM 子用户访问密钥发起请求

最近更新时间2023.12.28 21:23:00

首次发布时间2023.12.28 21:23:00

IAM (Identity and Access Management)是火山引擎为您提供的一套权限管理系统,用于控制不同身份对云资源的访问权限。由于主账号密钥具有该账号的完全权限,若秘钥泄露则可能导致您资产随时的不可控。所以,建议您创建 IAM 子用户,并按需分配权限,并使用子用户的密钥访问云资源。

说明

每个主账号均可以创建多个子账号,授予不同的权限。管理账号下不同身份对云资源的访问权限。用户被授予策略(Policy)后,可登录控制台或使用访问密钥 Access Key ID/Secret Access Key(以下简称 AK/SK)调用 API 访问云资源。

权限说明

IAM(访问控制)已完善了对于视频直播子账号以及角色的权限配置,系统也已预置策略权限可以进行权限配置。如果您的子账号需要能够完整使用视频直播功能,则需要配置 LIVEFullAccess 权限。
视频直播策略详情请见下表:

策略名策略类型备注
LIVEReadOnlyAccess系统预设策略该策略为视频直播服务(LIVE)只读访问权限。
LIVEFullAccess系统预设策略该策略为视频直播服务(LIVE)全部管理权限。
LIVEZebraFullAccess系统预设策略该策略包含直播重保模块的读写权限。

注意事项

  • 主账户的密钥具有账户的完全权限,密钥泄露可能会造成最大化的资产损失,强烈建议您建立子用户,按需分配权限,并使用子用户的密钥访问云资源。
  • Access Key ID 和 Secret Access Key 是您访问火山引擎 API 的密钥,具有该账户完全的权限,且最多只能创建两个。请您妥善保管和定期更换密钥,并及时删除原密钥。

操作步骤

Step 1:创建 IAM 子账号并授权

  1. 登录 veImageX 控制台,单击右上角个人中心,找到访问控制,单击并进入该页面。

  2. 在访问控制-用户页面,单击新建用户按钮,新建的每个用户即为一个子账号。

  3. 请选择您要新建用户的方式。选择任意创建方式:通过用户名创建、手机号创建等。

  • 填写基本信息:根据所选的创建方式,填写子账号信息。

  • 权限设置:选择关联策略及关联角色。您可在左侧角色策略管理中创建和管理对应的策略、角色。

    说明

    • 若您需要使用该用户访问密钥上传文件至 veImageX,那么您至少需要为该用户添加ImageXDefaultAccess策略。
    • 用户创建成功后,您也可以在用户详情-权限中为用户添加新的权限策略。

Step 2:获取 IAM 用户访问密钥

  1. 在访问控制-用户页面,选择目标用户,单击管理按钮。

  2. 选择密钥,单击新建密钥按钮,查看并记录 IAM 用户访问 Access Key ID 和 Secret Access Key。

    说明

    您可以在密钥列表中对正在使用的 Access Key 进行禁用,禁用后密钥访问将失效,启用后密钥重新生效。密钥删除后密钥将彻底失效,不可恢复,请谨慎操作。

Step 3:使用 IAM 子账号访问密钥发起请求

使用 IAM 子用户访问密钥调用 SDK 的流程如下所示(以 Java 的 CreateDomain 为例)。

  1. 使用 IAM 子用户 AKSK 初始化 LiveService 实例。其中访问密钥用于身份验证和授权,以便访问视频直播服务。
  2. 调用实例提供的createDomain方法向视频直播发起添加域名的请求,该方法会将新建域名所需的参数传递给视频直播服务。
  3. 实例使用 IAM 用户 AKSK 生成签名,并将签名添加进该请求中。以确保请求的身份验证和完整性,以防止未经授权的访问和数据篡改。

代码示例如下所示。

package com.volcengine.example.live.v20230101;


import com.volcengine.model.live.v20230101.*;
import com.volcengine.service.live.v20230101.LiveService;

public class CreateDomainExample {
    public static void main(String[] args) {
        LiveService service = LiveService.getInstance();
        service.setAccessKey("ak");
        service.setSecretKey("sk");

        CreateDomainBody body = new CreateDomainBody();

        try {
            CreateDomainRes resp = service.createDomain(body);
            System.out.println(resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}