适用于任何用户的AWS :: IAM :: Policy

时间:2016-12-23 09:20:36

标签: amazon-web-services amazon-cloudformation amazon-iam

有没有办法为cloudfromation中的任何用户附加某些策略?通过aws js创建堆栈时,您可以使用Principal作为"*"传递堆栈策略文档。但是,如果您在cloudformation模板中创建AWS :: IAM :: Policy,则必须提供角色,用户或组,并且"*"不起作用。 或者我如何附加嵌套堆栈的策略文档?

2 个答案:

答案 0 :(得分:0)

嵌套的CloudFormation堆栈使用与您在AWS控制台中指定的父堆栈相同的堆栈策略文档,或者在创建/更新堆栈时使用API​​(例如,使用AWS SDK for JS,如您所述)。作为documented,对于堆栈策略文档,Principal元素是必需的,但仅支持通配符(*)。

您可以通过添加Condition ResourceType等于AWS::CloudFormation::Stack的语句来进一步限制对嵌套堆栈的操作,如文档中Prevent Updates to Nested Stacks示例所述:

{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*",
      "Condition" : {
        "StringEquals" : {
          "ResourceType" : ["AWS::CloudFormation::Stack"]
        }
      }
    },
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}

AWS::IAM::Policy资源与为嵌套堆栈指定策略的特定用例无关,但为了参考,AWS::IAM::Policy创建了一个附加到用户或组的策略,而不是允许指定Principal元素,如文档中所述:

  

请勿在附加到IAM用户和组的策略中使用Principal元素。同样,您不在IAM角色的访问策略中指定主体。在这些情况下,主体隐含地是策略附加到的用户(对于IAM用户)或承担该角色的用户(对于角色访问策略)。当策略附加到IAM组时,主体是该组中正在发出请求的IAM用户。

答案 1 :(得分:0)

我所做的是对相同(或不同)帐户的信任关系政策。它说root,但实际上应用于整个帐户:

/[a-z]+/gi