AWS bucket策略声明优先级顺序



我正试图使用我的bucket策略限制用户访问我的bucket。我有一组用户,他们都有S3FullAccess策略。我无法更改IAM中的任何内容。我只能访问我的bucket策略。所以我想使用bucket策略来控制用户的访问。我将用户分为三类。

  1. 管理员访问我的bucket(所有访问我的bucket的权限(
  2. 限制访问我的存储桶的用户(如获取存储桶策略、获取存储桶位置(
  3. 无法进入我的水桶。(无法访问我的水桶(

下面的策略是我尝试过的,但不起作用。

{
"Version": "2012-10-17",
"Id": "PolicyTesting",
"Statement": [
{
"Sid": "0",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<<account_id>>:user/users_with_limited_access"
},
"Action": [
"s3:GetBucketPolicy",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<<my_bucket_name>>",
"arn:aws:s3:::<<my_bucket_name>>/*"
]
},
{
"Sid": "1",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::<<account_id>>:user/admin_users"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<<my_bucket_name>>",
"arn:aws:s3:::<<my_bucket_name>>/*"
]
}
]
}

我尝试了上述策略,但只有管理员用户才能单独访问bucket。具有有限访问权限的用户无法执行其已授予的操作,如获取存储桶策略、获取存储桶位置。他们将收到拒绝访问的异常。帮我解决这个问题。

AWS IAM策略中没有优先级顺序。请参阅此处的策略评估逻辑。

AWS强制代码评估帐户中适用于请求的所有策略。如果代码发现哪怕是一个应用的显式拒绝,代码都会返回拒绝的最终决定。

您当前的策略拒绝除管理员用户之外的所有用户执行任何S3操作。因此,users_with_limited_access无法执行授予的操作。

请向适当的负责人更新您的政策(根据您问题中的意见(,并参考下面更新的政策使其生效。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/s3-limited-access-user"
},
"Action": [
"s3:GetBucketPolicy",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
]
},
{
"Sid": "2",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/s3-no-access-user"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
]
},
{
"Sid": "3",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/admin-user"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
]
}
]
}

您应该非常小心使用NotPrincipal。最好的做法是避免同时使用。大多数时候,在不使用"策略语义"的情况下实现相同的功能(策略语义(是非常容易的;危险的";CCD_ 2。

我认为您最好创建特定的IAM角色,并将它们分配给您希望允许访问S3 bucket的相应用户组。之后,用针对"Principal" : "*"aws:userIdaws:PrincipalArn的显式Deny来阻止对桶的所有其它访问。

查看本文了解更多详细信息https://levelup.gitconnected.com/how-i-locked-the-whole-company-out-of-an-amazon-s3-bucket-1781de51e4be

最佳,Stefan

最新更新