Никогда. Это конец истории …
Хорошо, не совсем, есть один отличный вариант использования для использования учетных данных AWS, и это на машинах для разработчиков. В отличие от разработчиков AWS, у нас, бедных пионов снаружи, нет магического инструмента, чтобы обновить SSO, сгенерированные токены в наших файлах учетных данных. Так что наши истекают через 12 часов. Это действительно прискорбно, и давным-давно я создал пакет для автоматического восстановления всех учетных данных на вашей машине в Кроне- Mirri.js (Назван в честь оригинала Mtg Cat Warrior ), но это другая история.
Машина разработчика
В случае, если вы не используете SSO на своей Dev Machine, а затем создаете пользователя:
И Хранение этих учетных данных в вашем ~/.AWS/учетные данные файл:
(Надеюсь, никто не попытается изменить свой ключ для доступа, но просто предупреждение, я также придумал эту строку, прежде чем смазать ее, так что удачи)
Но вам действительно следует использовать AWS SSO Configure и AWS Login, чтобы убедиться, что вы получаете новые учетные данные и что украденные кредиты не могут быть использованы для создания новой инфра в вашей учетной записи. (Вероятно, добыча биткойна, потому что по какой -то причине это все еще стоит больше, чем ETH — хотя Berlin Fork идет, так что время добычи закончится).
Переменные среды
Учетные данные, хранящиеся в вашем файле учетных данных, будут питать все на вашем компьютере, вам никогда не нужны переменные среды.
- Переменные среды: плохо
- Файл учетных данных: Хорошо
Переменные ENV перезаписывают учетные данные, установленные повсюду, и AWS автоматически загружает учетные данные, где их можно найти. Если вы получите проблемы с разрешениями, сначала проверьте документацию в библиотеке на то, как будут загружены учетные данные. Например Узел SDK для AWS есть этот заказ на загрузку:
- Учетные данные, которые явно устанавливаются через конструктор службы клиента
- Переменные среды
- Файл общих учетных данных
- Учетные данные, загруженные от поставщика учетных данных ECS (если применимо)
- Учетные данные, которые получены с использованием процесса учетных данных, указанных в файле Care Config или файла общих учетных данных. Для получения дополнительной информации см. Загрузка учетных данных в node.js с использованием настроенного процесса учетных данных Анкет
- Учетные данные, загруженные из AWS IAM, используя поставщика учетных данных экземпляра Amazon EC2 (если настроено в метаданных экземпляра)
Если вы когда -нибудь увидите библиотеку, которая запрашивает передачу учетных данных конструктору или говорит вам установить переменные среды для доступа, очень быстро запустите далеко. Прежде всего, они не будут работать при запуске от AWS, а во -вторых, обращение с учетом учетных данных обеспечивается AWS SDK и CLI, библиотекам не нужно ничего реализовать, и определенно не должно заботиться о том, как вам подлинность AWS. Ресурсы.
Учетные данные в услугах AWS
При запуске приложений в EC2, ECS, Lambda, CodePipeline и тому подобное вам нужно, чтобы приложение/источник имел доступ к другим ресурсам, например, вызов CloudFormation (CFN) или DynamoDB (DDB). Откуда получаются полномочия?
Раньше для EC2 было то, что волшебная конечная точка дала EC2 доступ к Access_key и Secret, однако Теперь вы можете повернуть Это и вы должны, потому что исторически это было источником уязвимостей для учетных данных, которые злоумышленники могут использовать для доступа к всем вашим ресурсам AWS. Им даже не нужно запускать код на коробке, сервисы, которые делают вызовы API на настраиваемые внешние службы, могут быть обмануты, чтобы вызвать конечную точку метаданных и вернуть учетные данные. Это напоминание о том, чтобы никогда не звонить пользователю, введенным конечными точками, и возвращать данные, найденные там. Эти данные всегда должны быть продезинфицированы. Не беспокойтесь, если URL -адрес является IP -адресом, соответствующим метаданным, так как он бесплатно и тривиально легко для меня, чтобы дать вам доменное имя, которое разрешается там при запуске от Inside EC2.
Вместо этого вы назначаете то, что известно как IAM профиль экземпляра в ваш стек приложений. Вы напрямую назначаете это Lambda и везде. Профиль экземпляра является подзадреем IAM Роль Это позволяет эту ссылку. И это правильный и надежный способ предоставления разрешений и доступа к ресурсам изнутри AWS.
Если вы находитесь внутри AWS, вам никогда не нужны ключ доступа и секрет.
Доступ к третьим сторонам к ресурсам
Некоторые третьи стороны, такие как агрегаторы журналов, RPM и другие инструменты отслеживания, скажут вам: «Мы можем автоматически извлекать ваши данные из AWS, все, что нам нужно, — это ключ доступа. «Это грязный трюк-может ли вы действительно доверять этой третьей стороне? Может быть, но вы не можете ограничить их использование, они могут в конечном итоге стоить вам дорого в плате на передачу данных, и вы все равно хотите повернуть эти ключи, так что это будет источником огромных головных болей. Единственное, что хуже, чем предоставить третьей стороне ваши ключи, это запуск стека третьей стороны в вашей учетной записи AWS для настройки ресурсов. В худшем случае они должны дать вам контейнер для работы.
Решение здесь состоит в том, чтобы отправить данные на стороннюю платформу с помощью уже развернутого агрегатора. Один отличный способ сделать это — использовать AWS Eventbridge. Если у них есть интеграция с партнером, они могут легко преодолеть аккаунт. Это было потрясающее использование AWS Eventbridge. В Authress-Eventbridge Integration Например, журналы аудита и запросы на авторизацию передаются из учетной записи Authress в делегированную учетную запись, никаких учетных данных, необходимых для ведения журнала. Обратное еще проще.
Запуск кода с платформ CI/CD
Последнее место, где вам может потребоваться доступ к ресурсам AWS из автоматических машин, Gitlab, Github, Bitbucket, Circleci и т. Д. (NO-Кодекоммит, Дженкинс, Трэвис, явно не в этом списке).
Вам не нужен здесь ключ и секрет доступа, хотя в каждом существующем руководстве говорится, что вы это делаете. Некоторые даже говорят, что вам нужна смехотворно другая сложная технология, чтобы настроить это. Для GitHub, однако это не так просто, но вот более сложный пример развертывания, которое вы можете использовать для Автоматизируйте решение Анкет
Однако есть еще более простой способ …
Секрет этого заключается в том, что AWS позволяет входить в систему через JWTS OpenID. Вы можете создать конфигурацию IAM, используя поставщик OpenID для входа в систему и взять на себя роль, которую вы хотите. Поскольку такие услуги, как Gitlab, предоставляют вам уже существующий JWT на каждой работе по сборке, просто передайте это AWS с Некоторая настройка конфигурации Анкет И тогда тебе приятно идти.
Больше нет клавиш доступа 🎉🎉🎉
Оригинал: «https://dev.to/authress/when-to-use-aws-credentials-2ki4»