Предполагаемая роль в формировании облаков AWS - PullRequest
0 голосов
/ 08 июня 2018

Используя AWS, я создаю стек , определяющий следующее:

  1. Несколько ресурсов (для простоты, не описанных ниже)
  2. Политика под названием MyPolicy, позволяющая использовать эти ресурсы (для простоты, не описанные ниже)
  3. Роль с именем MyRole, представленная этой политике

стек будет создан администратором;и после создания цель состоит в том, чтобы позволить (извне стека) некоторым пользователям принять MyRole для использования нескольких ресурсов.

Мой вопрос: Как должна быть рольопределено в порядке, допускаемом пользователями (определенные пользователи будут допущены извне стека)?

На странице справки AWS они дают пример , где "Service": [ "ec2.amazonaws.com" ], что означает экземпляру ec2 разрешено предполагать, что роль ... Но я не понимаю, как он транслируется пользователям, и не приводится никакого примера в отношении этого сценария.

Ниже приведено определение моего стека с использованиемJSON формат:

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Resources" : {
        "MyRole" : {
            "Type": "AWS::IAM::Role",
            "RoleName": "MyRole",
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": { "Service": [ "??" ] },
                        "Action": [ "sts:AssumeRole" ]
                    }
                ]
            },
            "ManagedPolicyArns": [ { "Fn::GetAtt" : [ "MyPolicy", "Arn" ] } ],
        }
    }
}

1 Ответ

0 голосов
/ 08 июня 2018

Хороший вопрос!Просто используйте в качестве основного пользователя ARN пользователя root.Это позволит вам контролировать, какой пользователь может взять на себя роль, используя IAM.Вот пример (в YAML для моего здравомыслия):

  AdministratorRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: administrator
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            AWS: !Sub arn:aws:iam::${AWS::AccountId}:root
          Action: sts:AssumeRole
          Condition:
            Bool:
              aws:MultiFactorAuthPresent: 'true'
      Path: "/"
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/AdministratorAccess

  AssumeAdministratorRolePolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: "AssumeRolePolicy-Administrator"
      Description: "Assume the administrative role"
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
        - Sid: "AssumeAdministratorRolePolicy"
          Effect: "Allow"
          Action:
          - "sts:AssumeRole"
          Resource: !GetAtt AdministratorRole.Arn

  AssumeAdministratorRoleGroup:
    Type: AWS::IAM::Group
    Properties:
      GroupName: "AssumeRoleGroup-Administrator"
      ManagedPolicyArns:
      - !Ref AssumeAdministratorRolePolicy

Осталось только добавить пользователя в группу AssumeRoleGroup-Administrator .

Бонус: Iдобавлено условие, позволяющее только пользователям, которые вошли в систему с помощью MFA, принять на себя роль.

Кроме того, просто поменяйте ${AWS::AccountId} на другой идентификатор вашей учетной записи, который у вас есть, и вы сможете легко брать на себя разные роли.

...