存储桶策略阻止除具有不同访问限制的用户列表之外的所有访问

问题描述 投票:0回答:1

需要帮助制定复杂的存储桶策略 -

我在我不管理的 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>"
                    ]
                }
            }
        }
    ]
}

这工作正常,但现在我需要为某些角色添加权限,以便能够读取/写入根文件夹下各自文件夹中的任何位置,因此存储桶策略需要允许以下内容(并阻止其他任何内容):

  1. 允许我自己的 IAM 用户具有管理存储桶及其全部内容的完全访问权限
  2. 允许对根文件夹下的相应文件夹
    roleA
    进行读/写访问
    允许对根文件夹下的相应文件夹
  3. folderA
  4. 进行读/写访问
    
    
    有人可以建议如何最好地实现这个结果吗?

假设您在存储桶的根目录上没有任何文件,则这将起作用,如果您在存储桶的根目录上有文件,则有权访问folder1或folder2的任何人也将有权访问它们。

amazon-web-services amazon-s3 amazon-iam
1个回答
0
投票

要获取 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示例

© www.soinside.com 2019 - 2024. All rights reserved.