Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 有没有可能有一个;允许;效果覆盖a";否认;?_Amazon Web Services_Amazon S3_Amazon Policy - Fatal编程技术网

Amazon web services 有没有可能有一个;允许;效果覆盖a";否认;?

Amazon web services 有没有可能有一个;允许;效果覆盖a";否认;?,amazon-web-services,amazon-s3,amazon-policy,Amazon Web Services,Amazon S3,Amazon Policy,我有一个S3存储桶,其结构如下: top_level_name sub_level_1 sub_level_2 sub_level_3 我想全面拒绝顶级\u name上的所有操作(以排除本来可以访问此bucket的IAM策略),并有选择地允许特定用户访问其各自的子级。最初,我认为该政策可能类似于: { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyTopLevel"

我有一个S3存储桶,其结构如下:

top_level_name
  sub_level_1
  sub_level_2
  sub_level_3
我想全面拒绝
顶级\u name
上的所有操作(以排除本来可以访问此bucket的IAM策略),并有选择地允许特定用户访问其各自的
子级
。最初,我认为该政策可能类似于:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyTopLevel",
            "Action": [
                "s3:*"
            ],
            "Effect": "Deny",
            "Resource": "arn:aws:s3:::test-bucket/top_level_name/*",
            "Principal": "*"
        },
        {
            "Sid": "AllowSubLevel1",
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::test-bucket/top_level_name/sub_level_1/*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::12345:user/my_user_account"
                ]
            }
        }
    ]
}

在执行过程中,看起来Allow无法取代Deny。有什么方法可以重写我的bucket策略来实现此模式吗?

否。
拒绝
始终覆盖
允许

但是,如果您只需删除第一个
Deny
部分,就可以满足您的用例要求。这是因为默认情况下,用户没有权限。因此,除非策略明确允许,否则他们无权在顶层中
PutObject

策略的第二部分授予较低级别的权限,这正是您所需要的


如果您有其他授予顶级访问权限的策略(例如通过
*
策略),那么您需要重新考虑您的其他策略(例如,将此桶从他们的
允许
授予中排除)。

谢谢@John,这很有意义。如果我有一个特别敏感的bucket,它的特权应该是“optin”(类似于示例),那么有没有最佳实践?听起来我要么必须管理IAM级别上使用的每个策略,要么可能将bucket拆分为其自己的受保护AWS帐户?是的,为敏感数据(如人力资源或工资单)创建单独的AWS帐户,然后限制访问该帐户中资源的人员是很常见的。