数据复制权限有同账号复制与跨账号复制两种使用场景。对于同账号与跨账号复制,您必须授予RAM角色相应的复制权限,否则无法完成复制任务。
注意事项
每一种复制操作对应着一种复制权限。OSS需要通过扮演您创建的RAM角色来获取复制权限,从而执行数据复制所需的操作。
由于RAM角色权限策略中指定的Resource仅作用于其当前账号下所拥有的资源,因此同账号复制与跨账号复制所需的RAM角色权限策略存在差异,具体说明如下:
在同账号复制场景下,源Bucket和目标Bucket均为同一账号下的资源。因此,您可以为该账号下的RAM角色授予源和目标bucket的复制权限。
在跨账号复制场景下,源Bucket和目标Bucket是两个不同账号下的资源。因此,您需要在源Bucket所属账号A下,通过RAM Policy的方式对RAM角色完成授权操作。此外,还需要在目标Bucket所属账号B下,通过Bucket Policy的方式对账号A的RAM角色完成授权操作。
同账号复制任务的RAM角色权限说明
同账号复制任务的RAM角色所需的信任策略和最小权限说明如下:
RAM角色所需的信任策略
以下信任策略用于添加阿里云对象存储服务OSS为可信实体,并授权OSS可以扮演RAM角色来复制数据。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "oss.aliyuncs.com" ] } } ], "Version": "1" }
RAM角色所需的最小权限策略
通过RAM Policy为RAM角色授予源Bucket(src-bucket)和目标Bucket(dest-bucket)复制所需的最小权限。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] }, { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet", "oss:ReplicatePut", "oss:ReplicateDelete" ], "Resource":[ "acs:oss:*:*:dest-bucket", "acs:oss:*:*:dest-bucket/*" ] } ] }
以下权限策略中涉及的Action说明如下:
Action
说明
oss:ReplicateList
复制过程涉及的列举权限。即允许OSS先列举源Bucket的历史数据,再逐一对历史数据进行复制。
oss:ReplicateGet
复制过程涉及的读权限。即允许OSS读取源Bucket和目标Bucket中的数据与元数据,包括Object、Part、Multipart Upload等。
oss:ReplicatePut
复制过程涉及的写权限。即允许OSS对目标Bucket复制相关的写入类操作,包括写入Object、Multipart Upload、Part和Symlink,修改元数据信息等。
oss:ReplicateDelete
复制过程涉及的删除权限。即允许OSS对目标Bucket复制相关的删除操作,包括DeleteObject、AbortMultipartUpload、DeleteMarker等。
重要仅当数据复制方式选择增/删/改 同步时,需要授予RAM角色该Action。
跨账号复制任务的RAM角色权限说明
跨账号复制任务涉及两个不同账号的Bucket,您需要按照以下说明完成RAM角色所需的信任策略和最小权限策略。
源Bucket所属账号A需要完成的RAM角色授权操作
RAM角色所需的信任策略
跨账号复制任务的RAM角色所需的信任策略与同账号场景相同。您需要通过源Bucket所属账号A授予角色所需的信任策略。更多信息,请参见RAM角色所需的信任策略。
RAM角色所需的最小权限策略
不同账号复制任务涉及Action对应的权限说明,请参见Action说明。
在源Bucket所属账号A下,通过RAM Policy的方式对RAM角色授予源Bucket复制所需的最小权限。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] }
目标Bucket所属账号B需要完成的RAM角色授权操作
在目标Bucket所属账号B下,通过Bucket Policy的方式对账号A的RAM角色授予复制所需的最小权限。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ReplicateList",
"oss:ReplicateGet",
"oss:ReplicatePut",
"oss:ReplicateDelete"
],
"Principal": [
"arn:sts::src-uid:assumed-role/role-name/*"
],
"Resource": [
"acs:oss:*:dest-uid:dest-bucket",
"acs:oss:*:dest-uid:dest-bucket/*"
]
}
]
}
以上Policy中涉及的配置项说明如下:
配置项 | 说明 |
src-uid | 源Bucket归属账号的UID。 |
role-name | 源Bucket归属账号创建的RAM角色名称。 |
dest-uid | 目标Bucket归属账号的UID。 |
dest-bucket | 目标Bucket名称。 |