AWS Bucket Policy,用户名拒绝是否安全?

时间:2016-09-09 21:30:52

标签: amazon-web-services amazon-s3

所以我在AWS IAM中有大约50个桶和15个用户。我想要一个非常秘密的存储桶,只允许访问一个名为“仅允许用户”的单个IAM用户。 所以我想出了这个政策,

{
    "Version": "2012-10-17",
    "Id": "Policy19",
    "Statement": [
        {
            "Sid": "Stmt14",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::s3-bucket/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:username": "only-allowed-user"
                }
            }
        }
    ]
}

此外,非管理员用户也无法编辑存储桶策略。

到目前为止,它肯定适用于我们的15位用户。 14被拒绝且只允许用户使用#14;有访问权限(包括api调用)。但是我没有看到有人提到这是一个选择或者这样做的好主意,是否有办法在内部(由14个不具有管理员权限的其他用户)或外部?

1 个答案:

答案 0 :(得分:1)

使用username条件限制任何未使用具有指定用户名的用户访问存储桶。

但是,您的政策中没有任何内容拒绝来自使用相同用户名的其他AWS账户的用户访问权限。因此,如果存在允许其他AWS账户访问您的存储桶的策略,则具有相同用户名的用户可以访问。

您拥有的可能就足够了,因为默认情况下,这个假设的其他政策不存在。但未来可能会改变一切。

最好使用语句的NotPrincipal元素直接指定您的特定用户:

http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipal

{
    "Version": "2012-10-17",
    "Id": "Policy19",
    "Statement": [
        {
            "Sid": "Stmt14",
            "Effect": "Deny",
            "NotPrincipal": [
                 "arn:aws:iam::<your account number>:user/your-allowed-user"
            ],
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::s3-bucket/*"
        }
    ]
}

通过使用主要ARN,您可以专门允许特定AWS账户中的用户。