Я применяю роли экземпляра ec2 к своим серверам, но сначала хочу переключиться на эти роли локально для проверки разрешений
Я пытался переключиться на один, но получаю сообщение об ошибке:
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?
Чтобы позволить вашей учетной записи взять на себя роль службы, вам необходимо отредактировать роль и добавить свою учетную запись в Принципал
. Для этого:
В IAM
-> Роли
-> Ваша служебная роль
перейдите на вкладку Доверительные отношения
и нажмите Изменить доверительные отношения
. Ваши доверительные отношения будут примерно такими:
{
"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
.
Другой способ получить желаемый результат - использовать Policy Simulator
На вкладке роли Permissions
щелкните стрелку слева от политики, и отобразится кнопка Simulate policy
:
ПРИМЕЧАНИЕ
Невозможно использовать группу IAM в качестве участника
.
Обратите внимание, что группа не является подлинным идентификатором, поскольку ее нельзя идентифицировать как принципала в политике на основе ресурсов или в политике доверия. Это всего лишь способ присоединить политики к нескольким пользователям одновременно.
Ссылки
Тестирование политик доступа
Изменение роли (консоль)
Руководство пользователя IAM
Вы можете получить учетные данные из экземпляра и использовать их локально с помощью сценария get-instance-credentials .
Запустите get-instance-credentials
Скопируйте и вставьте 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",
«Счет»: «123456789012»,
«Arn»: «arn: aws: sts :: 123456789012: предположительно-роль / test-ec2-role / i-0a1b2c3d»
}
Как вы можете видеть, даже когда me @ my-laptop я могу получить доступ к AWS с учетными данными test-ec2-role .
Таким образом, вы можете легко протестировать конфигурацию роли IAM, протестировать свои приложения и т. Д.
Надеюсь, что это поможет :)