高阶14 - S3桶跨账号共享的最佳实践

本帖子适用于A账户的数据要与B账户的用户共享,一个典型的例子就是A账户拥有者是某测序公司,测序数据传到自己的桶里, 然后B账号的拥有者作为甲方就可以直接去桶里捞数据出来分析了,从而打通任督二脉。 -- D.C

B账号下操作

编程访问: 为 AWS API、CLI、SDK 和其他开发工具启用 访问密钥 ID 和 私有访问密钥 。 (需要用到命令行的选择这个)

AWS 管理控制台访问: 启用 密码 、使得用户可以登录到 AWS 管理控制台。(要用到界面化的控制台的用选择这个)

iamuser

用户添加到组: 如果已经创建了用户组比如 bfx group, 则可以直接将这个用户添加到组里,那么这个新用户就自动获得这个组内用户的权限。

从现有用户复制:如果是需要直接copy另一个已经存在的用户相同权限,选择这项。

直接附加现有策略: 直接从现有的策略列表中添加对应的权限。

如果是测试本文,则可以选择 直接附加现有策略 这项,然后选择下面的 AdministratorAccess,并点击上方的创建策略。

policy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws-cn:s3:::publicuse/sam/*",
                "arn:aws-cn:s3:::publicuse/sam",
                "arn:aws-cn:s3:::publicuse"
            ]
        }
    ]
}

customize

adduser

A账号下操作

accounts3policy

s3bucketpolicy

{
    "Version": "2012-10-17",
    "Id": "ExamplePolicy01",
    "Statement": [
        {
            "Sid": "ExampleStatement01",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws-cn:iam::590056003456:user/sam"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws-cn:s3:::publicuse/sam/*",
                "arn:aws-cn:s3:::publicuse/sam",
                "arn:aws-cn:s3:::publicuse"
            ]
        }
    ]
}

bucketpolicy

大功告成

结语: 这仅仅是AWS强大的Policy的冰山一角,根据你的奇思妙想,多看文档多问专家,事半功倍受益无穷。补充材料: 设置存储桶和对象访问权限

我有嘉宾,鼓瑟吹笙。