全部产品
Search
文档中心

对象存储 OSS:数据复制权限介绍

更新时间:Feb 26, 2024

数据复制权限有同账号复制与跨账号复制两种使用场景。对于同账号与跨账号复制,您必须授予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名称。

相关文档