Я применяю роли экземпляра 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
Вы можете получить учетные данные из экземпляра и использовать их локально с помощью получить-экземпляр-учетные данные сценарий.
Бегать 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 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=="
Проверить учетные данные
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, протестировать свои приложения и т. Д.
Надеюсь, это поможет :)