2016-05-30 2 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 сам экземпляр? Другими словами, у меня есть стек с экземпляром EC2 и профиль экземпляра IAM, роль IAM и документ SSM, и я хочу, чтобы экземпляр EC2 был создан при запуске через UserData. Пользователь, который запускает стек, должен иметь доступ для создания этих ресурсов, но НЕ создавать новые политики (фактически делая их администратором). Я хочу заранее создать роль + политика и предоставить создателю стека возможность присоединить эту роль к роли профиля экземпляра 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" } ] 
      } 
     } 

The «ограниченный администратор» Deployer (СИА пользователя в DeployerRole) должны быть в состоянии начать стек, содержащий:

  • EC2 Instance
  • IAM Instance Профиль
  • IAM Роль
  • SSM Документ

мне нужно The_Policy_Arn_I_Want_To_Create к:

  • Разрешить ТОЛЬКО EC2 экземпляр, созданный в стеке, чтобы иметь возможность CreateAssociation ТОЛЬКО с Документом SSM, созданного в стеке. Использование тегов в порядке, но поскольку ресурс для документа SSM не сможет использовать теги, как я могу это сделать?

ответ

1

ec2 не знает об учетной записи, которая создала экземпляр (возможно, если вы включите CloudTrail), возможно будет пометить экземпляр ec2 при создании его с учетной записью пользователя, а затем прочитать, что из ваша политика как

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

См. обновленный вопрос пожалуйста – Jeff

Смежные вопросы