我正在开发移动应用程序,我想上传/获取/删除AWS S3存储桶中的文件。
但是我非常担心安全问题。
S3存储桶:它不应是公开的,只有授权IAM用户才能访问有权访问我的存储桶的人。
因此,需要帮助来配置我的S3存储桶的权限并创建IAM用户。
答案 0 :(得分:0)
这不是不是的方式来授权对移动应用程序的访问。是的,您可以创建IAM用户,生成访问密钥和秘密访问密钥,将这些密钥存储在应用程序代码中,并为IAM用户配置权限。然后,您甚至不需要配置存储桶策略。默认情况下,存储桶是私有的,并且您帐户中只有具有适当权限的IAM用户才能访问它。如果允许IAM用户访问特定的S3存储桶,则需要配置对存储桶策略的显式拒绝以覆盖它。
但是上述方法违反了每种安全性良好做法。您真正想要做的是创建允许访问存储桶的IAM角色,并在应用程序中扮演该角色。您可以为用户设置Cognito +网络联合(或其他网络联合提供程序),并要求STS服务使用sts:assumeRoleWithWebIdentity
命令生成短期证书。
关于IAM权限,您需要允许s3:PutObject
,s3:GetObject
和s3: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提供程序)。