2016-05-30 63 views
0

我想创建一个策略,允许IAM用户或角色创建一组资源(例如EC2实例),然后管理(删除,更新等)这些资源。我希望我可以使用IAM变量,通配符和/或条件完成此操作,但我不确定如何。AWS Policy Limited管理员

我的策略会是这个样子非常

  { 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:*" 
      ], 
      "Condition": [ 
       { "Created_By_The_Instance_Profile_In_The_CFN_Stack_That_Created_The_EC2Instance}" } 
      ] 
      } 

而且,如果我想授予EC2实例配置文件以完成SSM什么:CreateAssociation因为这是在同一个堆栈创建为EC2的SSM文件实例本身?换句话说,我有一个EC2实例和IAM实例配置文件,一个IAM角色和一个SSM文档的堆栈,我希望EC2实例在启动时通过UserData启动CreateAssociation。启动堆栈的用户应该有权创建这些资源,但不能创建新策略(有效地使其成为管理员)。我想提前创建角色+策略,并授予堆栈创建者将此角色附加到它创建的IAM实例配置文件角色的能力。

所以,提前的时间,我(管理员),创建策略和角色本身

"DeployerRole": { 
     "Type": "AWS::IAM::Role", 
     "Properties": { 
     "AssumeRolePolicyDocument": { 
      "Version": "2012-10-17", 
      "Statement": [ 
      { 
       "Effect": "Allow", 
       "Principal": { 
       "Service": [ 
        "ec2.amazonaws.com", 
        "lambda.amazonaws.com" 
       ], 
       "AWS": "*" 
       }, 
       "Action": [ 
       "sts:AssumeRole" 
       ] 
      } 
      ] 
     } 
     } 
    }, 
    "PolicyManagerPolicy": { 
      "Type": "AWS::IAM::ManagedPolicy", 
      "Properties": { 
      "Description": "Allows CFN deployer to attach and detach required policies.", 
      "PolicyDocument": { 
       "Version": "2012-10-17", 
       "Statement": [ 
       { 
        "Effect": "Allow", 
        "Action": [ 
        "iam:AttachRolePolicy", 
        "iam:DetachRolePolicy" 
        ], 
        "Resource": "*", 
        "Condition": { 
        "ArnEquals": { 
         "iam:PolicyArn": [ 
         "The_Policy_Arn_I_Want_To_Create" 
         ] 
        } 
        } 
       }, 
       { 
        "Effect": "Allow", 
        "Action": [ 
        "iam:CreateRole" 
        ], 
        "Resource": "*" 
       } 
       ] 
      }, 
      "Roles": [ { "Ref": "DeployerRole" } ] 
      } 
     } 

的“受限管理员”部署(在DeployerRole的IAM用户)应该能够推出堆栈包含:

  • EC2实例
  • IAM实例简介
  • IAM角色
  • SSM文件

我需要The_Policy_Arn_I_Want_To_Create到:

  • 只允许由堆栈创建的EC2实例能够CreateAssociation仅使用堆栈中创建的文档SSM。使用标签很好,但由于SSM文档的资源无法使用标签,我该怎么做?

回答

1

ec2不知道创建该实例的帐户(如果启用CloudTrail,您可能会有这种情况),则可能会在使用用户帐户创建ec2实例时标记ec2实例,然后从中读取该实例您的政策为

"Condition": {"StringEquals": {"ec2:ResourceTag/<tag where the username will be>": "${aws:username}" 
+0

请参阅更新的问题请 – Jeff