Назад | Перейти на главную страницу

Как можно локально переключиться на роль экземпляра EC2 в качестве пользователя?

Я применяю роли экземпляра ec2 к своим серверам, но сначала хочу переключиться на эти роли локально, чтобы проверить разрешения.

Id пытался переключиться на один, но получаю сообщение об ошибке:

aws sts assume-role --role-arn arn:aws:iam::1234567890:role/myrole --role-session abc

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::1234567890:user/meeee is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::1234567890:role/myrole

Я администратор аккаунта. Нужно ли мне изменять политику доверия или что-то еще, чтобы пользователи могли брать на себя роли экземпляра ec2?

Чтобы позволить вашей учетной записи взять на себя роль службы, вам необходимо отредактировать роль и добавить свою учетную запись в Principal. Для этого:

В IAM -> Roles -> Your Service Role перейти к Trust relationship вкладку и нажмите Edit trust relationship. Ваши доверительные отношения будут примерно такими:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Вам нужно добавить свою учетную запись AWS примерно так:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com",
        "AWS": "arn:aws:iam::<your AWS account number>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

После этого вы сможете получить учетные данные через sts.

Еще один способ получить желаемый результат - использовать Симулятор политики

В роли Permissions щелкните стрелку слева от политики, и на ней появится кнопка для Simulate policy:

НОТА

Невозможно использовать группу IAM в качестве Principal.

Обратите внимание, что группа на самом деле не является идентификатором, поскольку ее нельзя идентифицировать как участника в политике на основе ресурсов или в политике доверия. Это всего лишь способ прикрепить политики к нескольким пользователям одновременно.

Ссылки

Тестирование политик доступа
Изменение роли (консоль)
Руководство пользователя IAM

Вы можете получить учетные данные из экземпляра и использовать их локально с помощью получить-экземпляр-учетные данные сценарий.

  1. Запустите свой экземпляр с желаемой ролью EC2
  2. Бегать get-instance-credentials

    [ec2-user@ip-...] aws-utils $ ./get-instance-credentials
    export AWS_ACCESS_KEY_ID="ASIA5G...ERJGI"
    export AWS_SECRET_ACCESS_KEY="8rTXu4R1...IM2"
    export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEE4aD...4zw=="
    
  3. Скопируйте и вставьте 3 export AWS_* строки к вашей локальной оболочке на вашем ноутбуке

    me@my-laptop ~ $ export AWS_ACCESS_KEY_ID="ASIA5G...ERJGI"
    me@my-laptop ~ $ export AWS_SECRET_ACCESS_KEY="8rTXu4R1...IM2"
    me@my-laptop ~ $ export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEE4aD...4zw=="
    
  4. Проверить учетные данные

    me@my-laptop ~ $ aws sts get-caller-identity
    {
        "UserId": "AROAXYZABC1234:i-0a1b2c3d",
        "Account": "123456789012",
        "Arn": "arn:aws:sts::123456789012:assumed-role/test-ec2-role/i-0a1b2c3d"
    }
    

Как видите, даже как я @ мой-ноутбук Теперь я могу получить доступ к AWS с учетными данными тест-ec2-роль.

Таким образом, вы можете легко протестировать конфигурацию роли IAM, протестировать свои приложения и т. Д.

Надеюсь, это поможет :)