火山引擎提供角色扮演机制,通过获取角色所属账号的临时安全令牌,从而实现跨账号临时授权,允许其他账号以角色所属账号主体的身份来访问云资源。
本文介绍如何实现跨账号授权,使得账号 B 的 IAM 子用户能够以角色所属账号主体 A 的身份去访问 CFS 资源。
主账号无法直接扮演角色,需要创建 IAM 子用户并赋予AssumeRoleAccess
策略,通过 IAM 子用户来扮演角色以获取临时安全令牌进行云资源的访问。
主账号如何创建 IAM 用户并授予AssumeRoleAccess
策略,请参见新建用户。
在账号主体 A 中创建一个角色,并预设角色权限。
RoleForTest
),然后单击下一步。CFSFullAccess
权限为例。账号 B 的子账号发起角色扮演请求,获取临时安全令牌。
GET http://sts.volcengineapi.com?Action=AssumeRole&Version=2018-01-01&RoleTrn=trn:iam::200000****:role/RoleForTest&RoleSessionName=assume_test&DurationSeconds=43200 Content-Type: application/x-www-form-urlencoded ServiceName: sts X-Date: 20230913T131357Z Authorization: HMAC-SHA256 Credential=AKLT4MQ/20230913/cn-beijing/sts/request, SignedHeaders=accept;content-type;host;x-date, Signature=83671ac2**8a5581f
支持您通过调用 AssumeRole 接口来获取临时安全令牌。在调用接口前,请先了解以下信息:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
Action | String | 是 | AssumeRole 接口。 |
Version | String | 是 | 接口版本为 |
RoleTrn | String | 是 | 需要扮演的角色 Trn,Trn 的书写格式为 说明 请替换为账号 A 的用户 ID,以及需要扮演的角色名称(本文为 RoleForTest)。 |
RoleSessionName | String | 否 | 自定义临时安全令牌名称。 |
DurationSeconds | String | 否 | 申请的临时安全令牌的有效时长,默认为 3600s。 |
Policy | String | 否 | InlinePolicy,内嵌权限策略,可用于限制临时安全令牌的权限范围。最终权限将取内嵌策略与角色策略的权限交集。 |
ServiceName | String | 是 | AssumeRole 接口的 Service 为 |
Authorization | String | 是 | AssumeRole 接口无法使用主账号 AK/SK 访问,请使用账号 B 的 IAM 子用户的 AK/SK 申请 STS 颁发的临时安全令牌。相关信息,请参见签名方法。 |
查看返回的临时安全令牌信息。
调用 AssumeRole 接口将返回如下类似信息。请注意收集返回信息中的AccessKeyId
、SecretAccessKey
和SessionToken
信息。
{ "ResponseMetadata": { "RequestId": "202309131**5725CDEDD9BF0", "Action": "AssumeRole", "Version": "2018-01-01", "Service": "sts", "Region": "cn-beijing" }, "Result": { "AssumedRoleUser": { "Trn": "trn:sts::210*****:assumed-role/RoleForTest/assume_test", "AssumedRoleId": "26***89:assume_test" }, "Credentials": { "ExpiredTime": "2023-09-14T05:35:49+08:00", "CurrentTime": "2023-09-13T17:35:49+08:00", "AccessKeyId": "AKTPYTNiMzI******E4ZjVmYWUyMmUwMWY", "SecretAccessKey": "N2Y5ZDc*****jMzIyYzVhMDg0YzM", "SessionToken": "STSeyJBY2NvdW50SWQiOjIxMDAwMDEzNzcsIklkZW50aXR5VHlwZSI6NCwiSWRlbnRpdH******9yaWdpbmFsSWRlbnRpdHlUeXBlIjoyfQ==" } } }
当您成功获取临时安全令牌后,请在有效期内使用令牌访问 CFS 云资源。
core-site.xml
配置文件中填写临时令牌中的AccessKeyId
、SecretAccessKey
和SessionToken
信息。具体操作,请参见挂载 HDFS 模式实例。cloudfs-fuse.conf
配置文件中填写临时令牌中的AccessKeyId
、SecretAccessKey
和SessionToken
信息。具体操作,请参见挂载 ACC 模式实例。AccessKeyId
、SecretAccessKey
和SessionToken
信息添加到请求 Header 中,从而通过身份认证。相关文档,请参见公共参数。内嵌权限策略(InlinePolicy)用于限制临时安全令牌的权限范围,最终权限将取内联策略与角色策略的权限交集。当您想进一步细化临时安全令牌的权限时,可以按需设置 InlinePolicy。
是否设置 InlinePolicy | 描述 |
---|---|
不设置 | 发起角色扮演请求中没有设置 InlinePolicy,则权限与角色权限保持一致。 |
设置 | 发起角色扮演请求中设置 InlinePolicy,则取权限交集。
|
策略样式如下,请按需设置内嵌权限。如需了解更多信息,请参见PolicyDocument。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cfs:*" ], "Resource": [ "fs1/test" ] } ] }
在策略中的 Effect 字段用来标识是否允许指定资源的操作权限,支持Allow
和Deny
两个取值。
Allow
,无Deny
,则表示允许访问。Allow
和Deny
,则表示禁止访问。Allow
和Deny
,则表示禁止访问。Deny
,则表示禁止访问。