设置复制权限 - Amazon Simple Storage Service

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

设置复制权限

设置复制时,您必须获取必要的权限,如下所示:

  • 创建 IAM 角色—Amazon S3 需要代表您复制对象的权限。您通过创建一个 IAM 角色并在复制配置中指定该角色,授予这些权限。

  • 当源存储桶与目标存储桶不是由相同 AWS 账户拥有时,目标存储桶的拥有者必须向源存储桶拥有者授予存储副本的权限。

创建IAM角色

默认情况下,所有 Amazon S3 资源—桶、对象和相关子资源—私有: 只有资源所有者才能访问资源。要读取源存储桶中的对象并将其复制到目标存储桶,Amazon S3 需要执行这些任务的权限。您通过创建一个 IAM 角色并在复制配置中指定该角色,授予这些权限。

此部分介绍信任策略及所需的最低权限策略。示例演练提供创建 IAM 角色的分步说明。有关更多信息,请参阅 复制演练.

  • 以下内容显示 信托政策,您可以在哪里 Amazon S3 作为可承担角色的服务负责人。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

    有关 IAM 角色,请参阅 IAM角色IAM 用户指南.

  • 以下内容显示 访问策略,您可以授予角色权限,以代表您执行复制任务。当 Amazon S3 担任角色时,它将具有您在此策略中指定的权限。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::SourceBucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::SourceBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::DestinationBucket/*" } ] }

    访问策略授予以下操作的权限:

    • s3:GetReplicationConfigurations3:ListBucket—这些操作的权限 来源 桶允许 Amazon S3 要检索复制配置和列表内容(当前权限模型需要 s3:ListBucket 访问删除标记的权限)。

    • s3:GetObjectVersions3:GetObjectVersionAcl— 对所有对象允许的这些操作的权限 Amazon S3 要获取与对象关联的特定对象版本和访问控制列表(ACL)。

    • s3:ReplicateObjects3:ReplicateDelete—对对象中对象的这些操作的权限 目的地 桶允许 Amazon S3 要复制对象或将标记删除到目标桶。有关删除标记的信息,请参阅如何删除操作影响复制.

      注意

      权限 s3:ReplicateObject目的地 存储区还允许复制对象标记,因此您不需要明确授予对对象标签的授权 s3:ReplicateTags 操作。

    • s3:GetObjectVersionTagging—此操作对对象中对象的权限 来源 桶允许 Amazon S3 如何读取复制的对象标记(参阅 对象标签)。如果 Amazon S3 没有这些权限,它将复制对象而不是对象标签。

    有关 Amazon S3 操作的列表,请参阅。Amazon S3 操作.

    重要

    TheThethe AWS 拥有 IAM 角色必须对其授予 IAM 角色。

    例如,假定源存储桶包含由另一个 AWS 账户拥有的对象。对象的所有者必须明确授予 AWS 拥有 IAM 通过对象ACL对所需权限进行角色。否则,Amazon S3 无法访问这些对象,因而这些对象的复制将失败。有关 ACL 权限的信息,请参阅访问控制列表 (ACL) 概述.

    此处介绍的权限与最低复制配置相关。如果您选择添加可选复制配置,您必须向 授予其他权限。Amazon S3. 有关更多信息,请参阅 其他复制配置.

当源和目标存储区属于不同时授予权限 AWS 账户

当源存储桶和目标存储桶由不同的 AWS 账户拥有时,目标存储桶的拥有者还必须添加一个存储桶策略,以向源存储桶的拥有者授予执行复制操作的权限,如下所示。

{ "Version":"2012-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"Permissions on objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:root" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::destinationbucket/*" }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:root" }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource":"arn:aws:s3:::destinationbucket" } ] }

有关示例,请参阅示例 2:在源存储桶和目标存储桶由不同账户拥有的情况下配置复制.

如果向源存储桶中的对象添加标签,请注意以下事项:

  • 如果源桶所有者授予 Amazon S3 授权 s3:GetObjectVersionTaggings3:ReplicateTags 复制对象标签的操作(通过 IAM 角色), Amazon S3 与对象一起复制标记。有关 IAM 角色的信息,请参阅。创建IAM角色.

  • 如果目标存储桶的所有者不希望复制标签,则他们可以向目标存储桶策略添加以下语句来显式拒绝 s3:ReplicateTags 操作的权限。

    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:root" }, "Action":"s3:ReplicateTags", "Resource":"arn:aws:s3:::DestinationBucket/*" } ] ...

更改复制副本所有权

不同时 AWS 客户拥有源和目标桶,您可以告知 Amazon S3 将复制副本的所有权更改为 AWS 拥有目标桶的帐户。这称为 所有者覆盖 选项。有关更多信息,请参阅 更改副本拥有者.