我们是否有AWS IAM的评估订单?

时间:2017-02-13 08:28:16

标签: amazon-web-services amazon-iam

我试图找出我的一个用户的IAM策略存在的一个问题。 我有政策,如果服务不在我们的列表中,则拒绝访问。我正在尝试授予我的用户访问apigateway的所有操作的权限。我已提供以下政策。但它拒绝接受GET,OPTIONS,HEAD以外的所有行动。我在开头有野性字符*,将个别操作覆盖野性字符设置。我想了解IAM的评估顺序。个别操作是否会覆盖*?

{
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Deny",
            "NotAction": [
                "apigateway:*"  
                "apigateway:GET",
                "apigateway:OPTIONS",
                "apigateway:HEAD"
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:2)

在AWS IAM中,默认情况下拒绝所有请求。因此,您只需要为所需操作授予权限,而默认情况下将拒绝所有其他操作。

  

发出请求时,AWS服务会决定是否给定   请求应被允许或拒绝。评估逻辑如下   这些规则:

     
      
  • 默认情况下,所有请求都被拒绝。 (通常,始终允许使用帐户资源为帐户中的资源发出的请求。)

  •   
  • 显式允许会覆盖此默认值。

  •   
  • 显式拒绝会覆盖任何允许。

  •   
     

评估政策的顺序对评估结果没有影响。评估所有策略,结果始终是允许或拒绝请求。

     

请参阅Determining Whether a Request is Allowed or Denied

因此,通常将Allow政策写为:

就足够了
{
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Allow",
            "Action": [
                "apigateway:GET",
                "apigateway:OPTIONS",
                "apigateway:HEAD"
            ]
        }
    ]
}

但是,如果您怀疑其他政策可能会授予用户不受欢迎的操作,您可以将Deny政策写为:

{
    "Statement": [
        {
            "Resource": "*",
            "Effect": "Deny",
            "NotAction": [
                "apigateway:GET",
                "apigateway:OPTIONS",
                "apigateway:HEAD"
            ]
        }
    ]
}