在使用云手机提供的客户端服务前,必须通过鉴权流程。为了最大程度地保障密钥的安全,我们建议您通过客户端动态请求服务端发放临时 AK/SK,用以生成一个仅短时间内有效的一次性 Token 来完成鉴权,而不是将长期的 AK/SK 存储在客户端。通过这种方式获取到的临时凭证仅在有限的时间内有效,即使被非法获取,也会很快失效,极大降低了密钥泄露的风险。
本文介绍如何通过安全令牌服务(STS)换取临时鉴权凭证。
使用已有的火山引擎账号登录控制台。
点击右上角 用户名 ,选择 访问控制。
在左侧导航栏中选择身份管理-角色 ,点击 新建角色。
信任身份类型选择 账号 ,身份选择 当前账号 ,点击下一步。
填写 角色名 和其他信息,点击下一步。
搜索并添加 STSAssumeRoleAccess 和 ACEPFullAccess 策略,点击提交。
在左侧导航栏选择 身份管理-用户 ,点击 新建用户。
点击 通过用户名创建,输入 用户名 并点击下一步。
搜索并添加 STSAssumeRoleAccess 和 ACEPFullAccess 权限,点击下一步进行信息确认,确认无误后点击提交完成子账户创建。
选择刚创建的用户进入用户详情,点击 密钥-新建密钥 ,获取到子账户 AK、SK。
测试环境下,你可以使用子账户的 AK、SK,在控制台生成临时鉴权密钥。
在控制台左侧导航栏点击新手入门,选择存储方案后点击生成临时鉴权密钥。
正式环境下,推荐您使用子账户的 AK、SK,通过安全令牌服务(STS)来换取临时鉴权密钥,详情参见 STS 接口说明。
STS 接口提供了参数 Policy 用于进一步限制临时密钥的权限,基于权限最小化原则,推荐您设置 Policy 参数,限制临时密钥可以访问的云手机资源范围。
以下提供了 Policy 示例值:
{ "Statement": [ { "Effect": "Allow", // 声明当前权限效果为允许 "Action": [ // 需要限制的Action "ACEP:ListPod", "ACEP:DetailPod" ], "Resource": [ "trn:ACEP::20000****:product_id/198670449019506****", // 需要限制的业务资源 "trn:ACEP::20000****:pod_id/756989046484640****" // 需要限制的实例资源 ] } ] }
参数说明:
服务ID:接口Action,支持传入多个。trn:服务ID::火山账号ID:product_id/您的云手机业务IDtrn:服务ID::火山账号ID:pod_id/您的云手机实例ID198670449019506**** 的业务、ID 为 756989046484640**** 的实例。注意
仅当 Action 中指定的接口包含实例相关参数(如 PodId、PodIdlist)时,Resource 中指定的实例资源才生效。
基于火山引擎 SDK 调用 STS 接口获取临时密钥的示例代码如下: