Каковы преимущества совместного использования роли IAM вместо ключа IAM?

Мне сказали, что обмен ролями IAM с третьими лицами более безопасен, чем обмен ключами IAM. В настоящее время мы ограничиваем ключи IAM IP-фильтрами, многими условиями контроля доступа.

Почему совместное использование ролей IAM было бы лучше. Насколько я понимаю, они могут использовать свою роль, чтобы на ограниченный период времени получить привилегию от чего-то вроде API boto3. Но если они могут брать на себя эту роль без ограничений, в чем преимущество безопасности по сравнению с ключом?

Что значит IAM-ключ? Вы имеете в виду совместное использование ключа доступа и секретного ключа пользователя?

Ninad Gaikwad 29.05.2019 10:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Во-первых, как вы упомянули, краткосрочные учетные данные сеанса, используемые ролью, ограничивают время, в течение которого можно использовать скомпрометированные учетные данные.


Во-вторых, с пользователем IAM каждый раз, когда третьей стороне требуется доступ к ресурсам в вашей учетной записи, они должны иметь ключ доступа и секретный ключ вашего пользователя IAM. Если они хотят получить доступ к ресурсам вашей учетной записи из инстанса EC2, у них должен быть способ безопасно передать ключи в инстанс EC2. Если они хотят получить доступ к ресурсам из Lambda, им нужно сделать ключи доступными для Lambda. Если они хотят получить доступ к ресурсам с мобильного устройства, им необходимо передать учетные данные на мобильное устройство (где их сложнее защитить, не говоря уже о ротации).

Управление этими учетными данными — это не только дополнительная работа для третьей стороны, но и дополнительный риск для вас. Долгосрочные учетные данные для вашего пользователя IAM теперь передаются третьей стороне.

Вместо этого, используя роль IAM, вы можете разрешить третьей стороне доступ к ресурсам без передачи ваших учетных данных. Экземпляр EC2 может избежать обработки ваших учетных данных с помощью ролей экземпляра EC2. Точно так же Lambda может избежать обработки ваших учетных данных, используя роли выполнения. На мобильном устройстве есть Cognito.

Чтобы предоставить стороннему лицу доступ к принадлежащим вам ресурсам AWS, у вас есть следующие варианты:

  1. [ХУДШИЙ ПОДХОД] Вы создаете пользователя IAM (скажем, Foo) и предоставляете ему необходимые разрешения, а затем делитесь ими с внешними сторонами. Это, очевидно, наихудший подход, так как теперь у вас нет разделения между теми, кто звонит на ваши ресурсы, потому что, по сути, всегда Foo звонит вам тот, кто звонит вам.
  2. Вы позволяете своим клиентам создавать IAM пользователей в своих учетных записях, а затем вносить их в белый список в политике вашего ресурса. Это работает, если ваш ресурс поддерживает политики на уровне ресурсов (S3 и API Gatewaydo). Теперь, даже если они поддерживают политики на уровне ресурсов, теперь вам будет сложно внести в белый список всех таких пользователей, созданных всеми вашими клиентами, которые могут получить доступ к ресурсу.
  3. Вы создаете IAM роль, предоставляете ей возможности (с точки зрения IAM политик) для доступа к вашему ресурсу, а затем вносите IAM пользователей ваших клиентов в белый список для assume этой роли. Это будет ваш способ сказать, что "this role is capable of accessing my resource and if you can assume this role, so do you". Более того, это также не позволяет вам делиться учетными данными, поскольку AWS STS выполняет всю работу по созданию временных учетных данных для вас.

Другие вопросы по теме