AWS 政策评估

Posted

技术标签:

【中文标题】AWS 政策评估【英文标题】:AWS policy evaluation 【发布时间】:2017-05-18 20:24:26 【问题描述】:

我有一个 IAM 角色要附加到微服务,以便根据用户代理限制 S3 文件夹访问。微服务父账号和bucket owner相同。


    "Version": "2012-10-17",
    "Statement": [
        
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-test/service/$aws:useragent/*"
            ]
        ,
        
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::bucket-test"
            ],
            "Condition": 
                "StringLike": 
                    "s3:prefix": [
                        "service/$aws:useragent/*"
                    ]
                
            
        
    ]

同一个 S3 存储桶具有默认 ACL,其中帐户对对象和权限具有 R/W。

鉴于 ACL 和 IAM 政策,我不明白该政策如何评估。例如,具有上述角色的用户使用用户代理micro-abucket-test/service/micro-b/new_object 发出put_object 请求。这是明确的还是隐含的否认?为什么?

【问题讨论】:

我查看了这些文档。仍然没有回答它是显式/隐式拒绝,还是允许以及为什么。 政策绝不是隐含的东西。根据定义,策略总是显式。评估所有策略。如果有另一个策略允许该策略允许的超集,则该策略没有任何作用。唯一隐含的是在没有适用的显式允许的情况下存在的默认隐式拒绝。 【参考方案1】:

基于AWS Policy evaluation logic:

发出请求时,AWS 服务会决定是允许还是拒绝给定请求。评估逻辑遵循以下规则:

    默认情况下,所有请求都被拒绝。 (一般来说,请求 使用帐户中资源的帐户凭据是 总是允许的。) 显式允许覆盖此默认值。 显式拒绝会覆盖任何允许。

现在如果我们看看S3 access policy language documentation:

效果——当用户请求特定操作时会产生什么效果——可以是允许也可以是拒绝。 如果您未明确授予(允许)资源的访问权限,则访问将被隐式拒绝。您还可以明确拒绝对资源的访问,您可以这样做以确保用户无法访问它,即使不同的策略授予访问权限。

现在指定Conditions in S3 policy documentation:

访问策略语言允许您在授予权限时指定条件。 Condition 元素(或 Condition 块)允许您指定策略何时生效的条件。

从这 3 个部分,特别是最后一个,我们可以说您的情况是“条件允许”,因为 “条件元素允许您指定策略何时生效的条件”,您的策略中的条件是“允许”。

编辑: 这是来自 AWS 的另一个有趣的博客 "How does authorization work with multiple access control mechanisms?"

每当 AWS 委托人向 S3 发出请求时,授权决策取决于所有 IAM 策略、S3 存储桶策略和适用的 S3 ACL 的联合。

按照最小权限原则,决策默认 拒绝和明确的拒绝总是胜过允许。例如,如果 IAM 策略授予对对象的访问权限,S3 存储桶策略 拒绝访问该对象,并且没有 S3 ACL,那么访问将 被拒绝。同样,如果没有方法指定 ALLOW,则 默认情况下,请求将被拒绝。仅当没有方法指定 DENY 时 并且一个或多个方法指定 ALLOW 将允许该请求。

【讨论】:

以上是关于AWS 政策评估的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3 上传。根据政策无效:政策已过期

AWS IAM 政策问题

javascript [AWS IoT附件政策] #tags:iot

json AWS-S3-静态网站托管桶政策

AWS IAM 政策:仅标记未标记的资源

如何修复“评估已被 CORS 政策阻止:反应中没有“访问控制允许来源”