Внешний ID и проблема запутавшегося заместителя
Предотвращайте ситуации, когда третьи стороны обманом заставляют использовать доступ неправомерно.
«Внешний ID и проблема запутавшегося заместителя» — бесплатный урок AWS Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Security Academy содержит 4 уроков всего.
Тонкость политики доверия
Когда вы разрешаете третьей стороне принимать роль в вашей учетной записи, может возникнуть риск безопасности, называемый проблемой запутавшегося заместителя. Внешний идентификатор — это простой, но важный механизм защиты от нее. Этот шаблон часто встречается на экзамене, когда поставщику SaaS требуется доступ к вашей учетной записи AWS.
Что такое запутавшийся заместитель
Запутавшийся заместитель — это доверенная сущность (заместитель), которую обманом заставляют использовать свои полномочия в интересах злоумышленника. В AWS сторонний сервис получает разрешение принимать роли во множестве учетных записей клиентов. Если ничто не связывает запрос с законными отношениями с клиентом, злоумышленник может обманом заставить сервис принять вашу роль.
Сценарий с поставщиком
Представьте SaaS-сервис мониторинга, который принимает роль в каждой учетной записи клиента. SaaS использует одно удостоверение AWS для всех клиентов. Если злоумышленник, который сам является клиентом, угадает ARN вашей роли, он может убедить SaaS принять вашу роль, поскольку SaaS является доверенным субъектом. Одного идентификатора учетной записи недостаточно для защиты от этого.
Добавление внешнего идентификатора
Внешний идентификатор — это уникальное значение, которое поставщик назначает вашим отношениям с ним. Вы добавляете его в политику доверия роли в качестве условия, а поставщик должен передать точно такое же значение при вызове AssumeRole. Поскольку злоумышленник не знает ваш внешний идентификатор, он не сможет обманом заставить поставщика принять вашу роль.
Политика доверия с внешним идентификатором
Эта политика доверия требует совпадения внешнего идентификатора. AssumeRole выполняется успешно только тогда, когда поставщик передает идентичное значение, что предотвращает атаку с запутавшимся заместителем.
"Condition": {
"StringEquals": {
"sts:ExternalId": "unique-customer-12345"
}
}Кто задает внешний идентификатор
Важно, что поставщик, а не клиент, создает внешний идентификатор и управляет им. Это не позволяет клиентам сговориться и повторно использовать одно и то же значение. В рекомендациях AWS это сформулировано однозначно: будучи третьей стороной, вы должны назначать каждому клиенту уникальный внешний идентификатор и требовать его при каждом принятии роли.
Это не секретный пароль
Внешний идентификатор не предназначен для хранения в секрете, как пароль; он может присутствовать в инструкциях по настройке. Его защитная ценность определяется тем, что он уникален для каждого клиента и контролируется поставщиком, поэтому злоумышленник не может заставить заместителя использовать значение другого клиента. Считайте его маркером защиты от выдачи себя за другого, а не учетными данными.
Сочетание с минимальными привилегиями
Внешний идентификатор определяет, кто может принять роль, но необходимо также ограничить, что роль может делать, с помощью строгих политик разрешений. Даже должным образом авторизованный поставщик должен получать только минимально необходимые разрешения. Для безопасного доступа третьей стороны сочетайте внешний идентификатор, конкретного субъекта и разрешения с минимальными привилегиями.
Не только поставщики
Шаблон с запутавшимся заместителем применим и к сервисам AWS, действующим от вашего имени. При доверии между сервисами в политиках ресурсов часто используются ключи условий, такие как aws:SourceArn и aws:SourceAccount, чтобы убедиться, что вызывающий сервис действует от имени вашего ресурса. Это та же защитная идея в другой форме.
Распознавание подсказки в вопросе
Если в вопросе описывается принятие роли третьей стороной или SaaS-сервисом между учетными записями, безопасный ответ почти всегда предполагает использование внешнего идентификатора в политике доверия. Если описан обмен данными между сервисами, ищите вместо этого условия aws:SourceArn/aws:SourceAccount. Распознав подсказку, вы сразу определите правильный механизм защиты.
Объединение всего материала
Проблема запутавшегося заместителя позволяет злоумышленнику обманом заставить доверенную третью сторону неправомерно использовать доступ. Внешний идентификатор, уникальный для каждого клиента и контролируемый поставщиком, предотвращает это, требуя совпадающее значение при вызове AssumeRole. Для сервисов AWS используйте aws:SourceArn и aws:SourceAccount. Всегда сочетайте эти механизмы с разрешениями с минимальными привилегиями.
Быстрая проверка
Проверьте понимание концепции запутавшегося заместителя.
Повторение
Проблема запутавшегося заместителя возникает, когда доверенную третью сторону обманом заставляют неправомерно использовать доступ между учетными записями. Внешний идентификатор, уникальный для каждого клиента и контролируемый поставщиком, предотвращает это благодаря условию политики доверия с использованием sts:ExternalId. Для доверия между сервисами AWS используйте aws:SourceArn и aws:SourceAccount, всегда соблюдая принцип минимальных привилегий.
Часто задаваемые вопросы
Урок «Внешний ID и проблема запутавшегося заместителя» бесплатный?
Да — полный текст урока «Внешний ID и проблема запутавшегося заместителя» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Security Academy, подпишись на CoddyKit PRO. Курс AWS Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Внешний ID и проблема запутавшегося заместителя»?
Предотвращайте ситуации, когда третьи стороны обманом заставляют использовать доступ неправомерно. Ты практикуешь AWS Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AWS Security Academy?
Предыдущий опыт не требуется. AWS Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Внешний ID и проблема запутавшегося заместителя»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AWS Security Academy?
Да. Каждый урок AWS Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Как STS выдаёт временные учётные данные
- AssumeRole и срок действия сеанса
- Внешний ID и проблема запутавшегося заместителя
- Политики сеансов и ограничение по тегам