我有一个 Amazon Web Services S3 存储桶,我想将其与 Android 数据同步应用程序一起使用'文件夹同步“”。
为此,我想为新用户设置存储桶的有限权限。
在 AWS 管理控制台中,我可以创建用户,但我能找到分配给该用户的唯一 S3 相关权限是:
- AmazonS3FullAccess(“通过 AWS 管理控制台提供对所有存储桶的完全访问权限。”)
- AmazonS3ReadOnlyAccess(“通过 AWS 管理控制台提供对所有存储桶的只读访问权限。”)
这两个都不是我想要的(我不希望该用户通过控制台访问,也不希望“所有存储桶”都有此访问权限)。
如果我没有为该用户设置任何权限,我会收到一条警告消息,但除此之外,我能够完成用户创建,但是当我转到存储桶为该用户分配权限时,新用户不会出现在下拉列表中(如下所示)。
一定有办法做到这一点 - 有人可以帮忙吗?
答案1
被授权者可以是 AWS 账户或预定义的 Amazon S3 组之一。对于您的情况,建议结合 S3 策略和 IAM 策略来加强您的资产安全。因此,授予用户对特定 s3 存储桶的访问权限应按如下方式进行:
1-转到 S3 服务,选择您的存储桶并编辑权限:创建如下自定义策略:
{
"Version": "2012-10-17",
"Id": "S3-Account-Permissions",
"Statement": [{
"Sid": "1",
"Effect": "Allow",
"Principal": {"AWS": [{"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"]},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}]
}
2- 导航到 IAM 服务并创建自定义策略。策略应如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::mybucket/",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
3- 将新创建的策略附加到您的用户
答案2
另一条评论中提供的策略不允许列出存储桶,也不允许在 S3 控制台上列出存储桶,也不允许任何其他可以显示存储桶中文件的应用程序。这是一项 IAM 策略,允许用户仅访问一个指定的存储桶,并限制其他所有内容。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*",
]
},
{
"Effect": "Deny",
"NotAction": "s3:*",
"NotResource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*"
]
}
}