Мне передал одну учетную запись AWS на корневом уровне владельцем бизнеса, на котором работают разные машины EC2 (промежуточные / производственные и т. Д.). Я просто хочу создать разные учетные записи IAM с ограниченным доступом. Например, теперь я хотел бы создать учетную запись IAM, у которой есть доступ только для запуска, завершения определенного экземпляра EC2.
Я в основном следовал инструкциям Вот. Я создал группу IAM (называемую superAdmin
), и я создал новую учетную запись IAM и назначил нового пользователя (user_1
) в эту группу.
Затем я приступил к созданию политика, и прикрепил его к superAdmin
группа, политика выглядит так
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt15094*****",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:eu-west-1:%my-account-id%:instance/i-%instance-id%"
]
}
]
}
Я убедился, что ресурс следует за ресурсная политика в точку. (примечание: экземпляры работают в Ирландии, что, согласно этот такой же как eu-west-1
)
Затем я назвал эту политику staging_access
и прикрепил его к user_1
(но также удалили все остальные политики):
Проблема в том, что когда я вхожу в систему как user_1
, Я ничего не вижу:
и когда я перехожу на страницу экземпляров, ничего не отображается:
Я заметил, что если бы я просто сделал ресурс подстановкой ... все бы работало:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1509458879000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"*"
]
}
]
}
Интересно то, что даже если я установил ресурс как подстановочный знак для всех ec2, вот так:
"Resource": [
"arn:aws:ec2:*"
]
это все еще не работает. Это означает, что доступ к пользовательскому интерфейсу консоли отличается пространство имен службы чем ec2.
Вы определяете политику на основе идентификатора экземпляра EC2. Вам нужно добавить больше разрешений, чтобы пользователь мог отображать такие вещи, как пары ключей, тома, экземпляры и т. Д. Существует разница между назначением разрешений для управления экземпляром EC2 из командной строки, которое может быть очень жестким, и необходимыми разрешениями. для доступа к консоли управления Amazon.
Кроме того, в вашей политике есть символы%. Это действительно в вашей политике или это просто нужно показать в вашем вопросе?
[Обновлено]
Лучшим подходом к контролю доступа к ресурсам является использование тегов. Например, чтобы разрешить пользователю XYZ доступ только к определенным экземплярам EC2, пометьте экземпляры. Вот пример политики с использованием тегов. Эта политика позволяет пользователю перечислить все экземпляры EC2, но разрешает все действия EC2 только на экземплярах, помеченных их именем пользователя.
{
"Version" : "2012-10-17",
"Statement" :
[
{
"Effect" : "Allow",
"Action" : "ec2:*",
"Resource" : "*",
"Condition" : {
"StringEquals" : {
"ec2:ResourceTag/UserName" : "${aws:username}"
}
}
},
{
"Effect" : "Allow",
"Action" : "ec2:Describe*",
"Resource" : "*"
},
{
"Effect" : "Deny",
"Action" :
[
"ec2:CreateTags",
"ec2:DeleteTags"
],
"Resource" : "*"
}
]
}
На самом деле это не тот ответ, который я искал, но тем не менее он служит моим потребностям. Я создал две политики и применил их к одному и тому же пользователю
Показать политику
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "***",
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": [
"*"
]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "***",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:eu-west-1:%account-id%:instance/i-%instance-id%"
]
}
]
}