所以我在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个不具有管理员权限的其他用户)或外部?
答案 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账户中的用户。