Идентичности и роли — Примеры

Пример 1 — Замена хранимого ключа ролью

Ночная задача экспорта на одном сервере пишет в один бакет хранилища и аутентифицируется долгоживущим ключом доступа, который лежит в файле. Дайте задаче роль, ограниченную тем, что она действительно вызывает, и уберите ключ.

наблюдаемые вызовы за 30 дней: положить один объект в бакет, перечислить этот бакет
используемые учётные данные: долгоживущий ключ доступа в файле на сервере

Решение

прикрепите к серверу роль, политика которой разрешает только:
  положить объект в бакет экспорта
  перечислить бакет экспорта
уберите хранимый ключ из файла и из конфигурации задачи
проверка: задача работает без ключа, и каждый вызов записан под ролью

Временные учётные данные, выданные прикреплённой роли, убирают то, что можно украсть: на диске не остаётся ничего секретного, токен истекает сам, а каждый вызов приписывается роли, а не общему ключу. Сужение политики до двух наблюдаемых вызовов делает разрешение узким с самого начала. Обычная ошибка — создать роль с широкой готовой политикой и намереваться сузить её позже, чего никогда не происходит.

Пример 2 — Утверждение доверия, которое является широкой дверью

Роль, созданную для конвейера, может принять что угодно в её аккаунте разработки. Перечислите, кто может её принять, сузьте до собственной идентичности конвейера и скажите, что остаётся неизменным.

утверждение доверия сегодня: любой субъект в аккаунте разработки может принять роль
предполагаемый вызывающий: собственная идентичность конвейера развёртывания, и никто больше

Решение

замените субъект, покрывающий весь аккаунт, конкретной идентичностью конвейера
разрешения, которые даёт роль, не меняются: это сужает «кто», а не «что»
проверка: субъект вне конвейера получает отказ, а конвейер по-прежнему
         получает временные учётные данные и развёртывает

Политика доверия решает, какие субъекты могут принять роль, поэтому сузить её так же важно, как сузить разрешения, которые роль несёт; утверждение, принимающее целый аккаунт, — дверь, которую может открыть любой субъект в нём. Ограничение субъекта оставляет путь развёртывания рабочим. Обычная ошибка — читать политику разрешений строка за строкой и никогда не смотреть на утверждение доверия, а это как раз часть, написанная один раз и забытая.