需要帮助制定复杂的存储桶策略 -
我在我不管理的 AWS 账户中拥有一个包含高度敏感内容的 s3 存储桶。我希望引入一个存储桶策略来防止不需要的访问,包括具有允许 s3 访问 IAM 策略的用户(我无法控制,因为我不是账户管理员)。
我的存储桶策略当前阻止除我自己的 IAM 用户之外的所有访问 - 如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<my-bucket-name>",
"arn:aws:s3:::<my-bucket-name>/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"<my IAM userId>",
"<my AWS AccountId>"
]
}
}
}
]
}
这工作正常,但现在我需要为某些角色添加权限,以便能够读取/写入根文件夹下各自文件夹中的任何位置,因此存储桶策略需要允许以下内容(并阻止其他任何内容):
roleA
进行读/写访问允许对根文件夹下的相应文件夹folderA
有人可以建议如何最好地实现这个结果吗?
假设您在存储桶的根目录上没有任何文件,则这将起作用,如果您在存储桶的根目录上有文件,则有权访问folder1或folder2的任何人也将有权访问它们。
要获取 IAM 角色唯一 ID,您可以使用以下命令来实现
folderB
或者,如果您没有 IAM 权限,您可以要求具有角色 A 访问权限的人员来做
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyBucketAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<my-bucket-name>",
"arn:aws:s3:::<my-bucket-name>/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"<my IAM userId>",
"<roleA unique ID>",
"<roleB unique ID>",
]
}
}
},
{
"Sid": "DenyFolderAAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<my-bucket-name>/folderA/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"<my IAM userId>",
"<roleA unique ID>",
]
}
}
},
{
"Sid": "DenyFolderBAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<my-bucket-name>/folderB/*"
],
"Condition": {
"StringNotLike": {
"aws:userId": [
"<my IAM userId>",
"<roleB unique ID>",
]
}
}
}
]
}
并复制粘贴“:”之前的任何内容
示例
AROA1234567890示例:
[电子邮件受保护]-> 复制 AROA1234567890示例