AWS S3-为存储桶分配有限权限,并创建只能访问该存储桶的IAM

时间:2019-06-18 12:36:56

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

我正在开发移动应用程序,我想上传/获取/删除AWS S3存储桶中的文件。

但是我非常担心安全问题。

S3存储桶:它不应是公开的,只有授权IAM用户才能访问有权访问我的存储桶的人。

因此,需要帮助来配置我的S3存储桶的权限并创建IAM用户。

1 个答案:

答案 0 :(得分:0)

这不是不是的方式来授权对移动应用程序的访问。是的,您可以创建IAM用户,生成访问密钥和秘密访问密钥,将这些密钥存储在应用程序代码中,并为IAM用户配置权限。然后,您甚至不需要配置存储桶策略。默认情况下,存储桶是私有的,并且您帐户中只有具有适当权限的IAM用户才能访问它。如果允许IAM用户访问特定的S3存储桶,则需要配置对存储桶策略的显式拒绝以覆盖它。

但是上述方法违反了每种安全性良好做法。您真正想要做的是创建允许访问存储桶的IAM角色,并在应用程序中扮演该角色。您可以为用户设置Cognito +网络联合(或其他网络联合提供程序),并要求STS服务使用sts:assumeRoleWithWebIdentity命令生成短期证书。

关于IAM权限,您需要允许s3:PutObjects3:GetObjects3:DeleteObject,以便策略看起来像这样。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "<arn-of-your-bucket>"
        }
    ]
}

您甚至可以更加细化,并允许Cognito用户仅在存储桶中访问“其”文件夹。

关于角色,您只需要在其上附加上述策略,并配置角色与Web身份提供程序之间的信任关系(如上所述,可以是Cognito或任何OpenID提供程序)。