IAM政策-如何引用资源?

时间:2019-07-15 17:50:31

标签: amazon-web-services amazon-iam

以下是创建的策略模板,用于限制任何Principal只能执行以下操作:

Resources:
  MyPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      Description: RulesToCreateUpdatePolicy
      ManagedPolicyName: some-policy
      PolicyDocument:
        Version: "2012-10-17"
        Statement:

          - Effect: Allow
            Action:
              - "iam:CreatePolicy"
              - "iam:DeletePolicy"
              - "iam:CreatePolicyVersion"
            Resource:
              - !Sub "arn:aws:iam::${AWS::AccountId}:policy/xyz-lambda-*"

以名称xyz-lambda-开头的策略资源上。

此策略已分配给具有角色的EC2主机。


在上载此策略到AWS之前,该策略名称(例如xyz-lambda-*)应该在AWS中已经存在吗?

2 个答案:

答案 0 :(得分:1)

否,当您在策略文档中指定资源时,该资源根本不需要存在。

如果您考虑此操作

iam:CreatePolicy

与您的资源一起使用的是,它授予必要的权限以创建具有特定名称xyz-lambda-*的策略。如果该策略首先授予创建它的权限,那么要求存在这种资源就没有多大意义。

考虑删除操作

iam:DeletePolicy

如果资源不存在,则它不执行任何操作。一旦创建了具有适当名称的策略,就可以将其删除,但是该策略在创建此ManagedPolicy之前或之后是否存在,或者您删除或重新创建具有该名称的策略多次都没有关系。

最后,由于您已声明此策略已附加到EC2角色,因此它应该可以正常工作。但是,我仍然建议对任何可由EC2实例上运行的应用程序执行的资源(策略)发现授予iam:ListPolicies权限。如果您的策略中不允许执行此操作,则您的应用程序将无法列出策略,并且您必须基于猜测或严格的命名方案设计一些容易出错的解决方法。

答案 1 :(得分:0)

策略名称并不重要。资源仅由ARN唯一。 AWS帐户中唯一的IAM资源,如果您未确定则不创建此资源