如何授予存储桶拥有者完全控制权,以将文件从一个帐户的redshift卸载到另一个帐户的s3存储桶?

时间:2018-07-05 16:38:48

标签: amazon-web-services amazon-s3 amazon-redshift amazon-iam

我在AWS帐户“ A”中有一个redshift集群,在帐户“ B”中有一个S3存储桶。我需要将数据从A中的redshift帐户卸载到B中的S3存储桶。

我已经提供了必要的存储区策略和角色策略以卸载数据。数据也已成功卸载。现在的问题是,从此卸载创建的文件的所有者是account A和文件需要由用户B使用。在尝试访问该对象时,我拒绝访问。我该如何解决?

PS:Redshift IAM策略已授予ListBucket和GetObject权限。

2 个答案:

答案 0 :(得分:1)

这对我有用-链接IAM角色。

例如,假设公司A要访问属于公司B的Amazon S3存储桶中的数据。公司A为Amazon Redshift创建一个名为RoleA的AWS服务角色并将其附加到其集群。公司B创建一个名为RoleB的角色,该角色有权访问公司B存储桶中的数据。要访问公司B存储桶中的数据,公司A使用链接了RoleA和RoleB的iam_role参数运行COPY命令。在UNLOAD操作期间,RoleA临时假定RoleB访问Amazon S3存储桶。

此处有更多详细信息:https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html#authorizing-redshift-service-chaining-roles

答案 1 :(得分:0)

我想起来了四件事,它们可能会阻止帐户B的用户访问同一帐户中S3存储桶中的对象。

  1. 用户的IAM策略:

用户(或用户所属的组)是否具有附加的IAM策略,以允许其从AWS存储桶中列出/读取对象?您可以通过转到IAM控制台并检查用户来进行检查。

  1. S3存储桶的访问控制列表:

存储桶ACL是否允许主机帐户的列表/读取权限?可能是存储桶授予了远程帐户的权限,但没有授予主机帐户的权限。您可以转到S3控制台,选择存储桶,然后在滑入式窗口中单击“权限”来进行检查。

  1. S3存储桶的存储桶策略:

S3存储桶策略是否明确拒绝任何人的列表/读取权限?如果是这样,您的用户可能就是那个人。可以使用空白政策。通过与#2相同的方法进行检查。

  1. 单个对象的权限:

每个S3对象都有权限设置。可能是帐户A中的Redshift服务未设置授予帐户B列表/读取访问权限所需的权限。