Подключение к Amazon Aurora с аутентификацией AWS IAM DB

Я знаю, что с Amazon Aurora MySQL мы можем аутентифицироваться в инстансе БД или в кластере БД, используя аутентификацию базы данных AWS IAM. Я выполнил инструкции здесь, и он работает как указано. Однако для этого решения по-прежнему требуются учетные данные AWS для хранения в экземпляре EC2. Я думал, что вся цель этого состоит в том, чтобы использовать роли IAM для управления временными учетными данными для приложений, работающих в экземпляре EC2, чтобы нам не приходилось распространять долгосрочные учетные данные (такие как имя пользователя и пароль или ключи доступа) для экземпляр EC2. Есть ли способ подключиться к Amazon Aurora MySQL с ролью IAM, для которой не требуются учетные данные AWS для непосредственного хранения в инстансе EC2?

Вот несколько скриншотов:

~ / .aws / credentials:  введите описание изображения здесь

Можно подключиться к экземпляру БД:  введите описание изображения здесь

Прокомментируйте учетные данные aws:  введите описание изображения здесь

Теперь невозможно подключиться к экземпляру БД:  введите описание изображения здесь

Вот политики, прикрепленные к роли EC2:  введите описание изображения здесь

И вот политика AmazonAuroraDBConnectAccess:  введите описание изображения здесь

Имя пользователя создается:

create user usuarioiam IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';

Также запустил aws sts get-caller-identity. Используется ожидаемая роль IAM EC2:  введите описание изображения здесь


person Malgi    schedule 20.07.2018    source источник
comment
Лол, эта ссылка включена в мой вопрос; Я выполнил все инструкции, и все работает. Нет проблем с этим. Но это решение требует, чтобы учетные данные AWS хранились в экземпляре EC2 для генерации токена аутентификации (который используется вместо пароля). На основе передового опыта AWS (docs. aws.amazon.com/general/latest/gr/) мы не должны хранить учетные данные AWS в инстансах EC2. Вместо этого определите роль IAM, у которой есть соответствующие разрешения для нашего приложения, и запустите инстанс Amazon EC2 с ролями для EC2.   -  person Malgi    schedule 20.07.2018
comment
@Malgi, это не требует хранения учетных данных в экземпляре, и непонятно, почему у вас сложилось такое впечатление. Если вы не сконфигурируете aws-cli с ключом и секретом, он автоматически использует учетные данные роли экземпляра IAM.   -  person Michael - sqlbot    schedule 21.07.2018
comment
@ Michael-sqlbot Ты делал это раньше? Я дополню свой вопрос несколькими скриншотами, объясняющими, почему я говорю, что для этого требуются кредиты AWS, хранящиеся в экземпляре EC2.   -  person Malgi    schedule 22.07.2018
comment
Да, я сделал это, используя роль IAM экземпляра. Наиболее вероятное объяснение состоит в том, что ваша роль IAM не имеет необходимых политик для разрешения доступа ... или вы предоставили роли правильные разрешения, но не ждали достаточно долго, чтобы они вступили в силу. Изменения политик ролей для ролей инстансов EC2 иногда могут занять несколько минут, прежде чем они начнут работать.   -  person Michael - sqlbot    schedule 22.07.2018
comment
Поскольку токен, сгенерированный с использованием роли, имеет немного другую структуру, чем токен, сгенерированный с помощью ключа доступа и секрета, другая возможность заключается в том, что у вас есть крайний случай, когда вам нужно предоставить --password="$TOKEN" для оболочки, чтобы правильно обрабатывать ваш токен. При ссылке на переменную обычно рекомендуется заключать ее имя в двойное цитаты.   -  person Michael - sqlbot    schedule 22.07.2018
comment
нет, заключить его в двойные кавычки не решило проблему. Я тоже так долго ждал, когда это повлияет на роль. Я мог прикрепить к экземпляру EC2 неправильные роли и политики, собираясь добавить политики и роли в свой вопрос.   -  person Malgi    schedule 22.07.2018
comment
Используйте aws sts get-caller-identity, чтобы убедиться, что aws-cli действительно использует учетные данные, которые вы ожидаете использовать.   -  person Michael - sqlbot    schedule 22.07.2018
comment
@ Michael-sqlbot запустил эту команду и подтвердил, что она использует эту роль IAM EC2. См. Обновление моего вопроса.   -  person Malgi    schedule 23.07.2018
comment
А у вас в кластере всего один экземпляр Aurora? Для кластера с несколькими узлами ваш ARN должен быть (например) ...:dbuser:cluster-CO4FHMOYDKJ7CVBEJS2UWDQX7I/jane_doe, но если у вас только один экземпляр, db-xxxx в порядке. Я полагаю, вы использовали точно такую ​​же политику для пользователя IAM? Как давно вы настроили эту ролевую политику и прикрепили ее к роли?   -  person Michael - sqlbot    schedule 23.07.2018
comment
Потрясающий. Это была причина! Я изменил его на ...:dbuser:cluster-CO4FHMOYDKJ7CVBEJS2UWDQX7I/jane_doe, и это было исправлено. Большое спасибо. Вы сделали мой день.   -  person Malgi    schedule 23.07.2018