У меня есть обычный экземпляр EC2 с эластичным IP. Несколько раз экземпляр был остановлен, я просто вручную повторно связал IP с ним через консоль управления AWS. Сейчас я подумываю о переносе его на спотовый экземпляр, а это значит, что мне нужен способ автоматического повторного связывания его с IP-адресом при запуске, если / когда машина выключается из-за того, что ее цена вне рынка. Как этого добиться, хорошо описано во многих местах (например, Вот).
У меня вопрос:
Как и многие люди, столкнувшиеся с этой проблемой, я опасаюсь помещать свой файл учетных данных AWS в сам экземпляр. Я смутно помню, что видел что-то о возможности создания дополнительных ключей с более ограниченными разрешениями, но мне не удается найти какие-либо конкретные детали. Итак: можно ли создать ключ, который я могу с радостью поместить на машину, зная, что он может использоваться чуть больше, чем экземпляр ec2-associate (но не входить в другие экземпляры или вообще запускать riot с моей учетной записью AWS), и как мне этого добиться?
Это действительно возможно с помощью AWS Identity and Access Management (IAM), который позволяет безопасно контролировать доступ к сервисам и ресурсам AWS для ваших пользователей (В настоящее время настоятельно рекомендуется использовать IAM вместо основных учетных данных для повседневного использования AWS).
Среди прочего, IAM позволяет использовать следующие варианты использования:
Детальный контроль доступа к вашим ресурсам AWS: IAM позволяет контролировать доступ к API сервисов AWS и к определенным ресурсам. IAM также позволяет добавлять определенные условия для управления тем, как пользователь может использовать AWS, например время дня, исходный IP-адрес или использование SSL.
Соответствующая степень детализации варьируется между доступными сервисами AWS (она имеет тенденцию к увеличению со временем), но, к счастью, степень детализации для API EC2 высока, и то, что вы ищете, легко доступно - например, вы можете захотеть проверить рекомендуемые Генератор политик AWS, выберите тип Политика IAM и сервис Amazon EC2, что позволит вам выбрать действие AssociateAddress в очереди.
Следовательно, вы сможете достичь своей цели, создав специального пользователя IAM для поставленной задачи, создав политику IAM, существенно ограниченную AssociateAddress (может быть DisassociateAddress а также) и присвоение этой политики пользователю IAM - например, политика может выглядеть так:
{
"Statement": [
{
"Action": [
"ec2:AssociateAddress",
"ec2:DisassociateAddress"
],
"Effect": "Allow",
"Resource": "*"
}
]
}