Наименьшие привилегии на практике — Примеры
Пример 1 — Сужение политики, разрешающей всё в одном сервисе
Сервис экспорта держит политику, дающую все действия на все ресурсы его сервиса хранилища. Наблюдаемое использование — два вызова к одному бакету. Напишите суженную политику и скажите, что ломает это сужение.
{
"effect": "allow",
"actions": ["storage:*"],
"resources": ["*"]
}
Решение
{
"effect": "allow",
"actions": ["storage:put-object", "storage:list-bucket"],
"resources": ["export bucket"],
"condition": { "encrypted": true }
}
что ломает сужение: любое действие, кроме двух наблюдаемых, любой бакет,
кроме бакета экспорта, и любой запрос не по зашифрованному соединению
проверено сначала: два наблюдаемых вызова были единственными, записанными за период
Подстановочный знак в действиях на подстановочном знаке в ресурсах — самое широкое разрешение из возможных, и полезные вопросы на ревью — какие действия и какие ресурсы, а затем нет ли подстановочного знака в них. Условие добавляет намерение, которое список действий выразить не может, ограничивая разрешение зашифрованными запросами без изобретения второй политики. Обычная ошибка — начать широко и планировать сужение позже; именно период наблюдения делает узкий список безопасным, поэтому проведите его до изменения.
Пример 2 — Поиск дрейфа, который отменяет сужение
Прошёл квартал с тех пор, как политику выше сузили, и за это время были развёртывания и одна реакция на инцидент. Напишите сравнение для запуска по расписанию и скажите, как следует трактовать каждое различие.
эталон: проверенный набор политик, записанный при выпуске сужения
текущее: текущий набор политик аккаунта для той же идентичности, через квартал
Решение
по расписанию: сравните текущий набор с эталоном и сообщите о каждом различии
добавленное действие или ресурс -> кто добавил, зачем, есть ли причина до сих пор
добавленный субъект в доверии -> тот же вопрос о том, кто может принять роль
идентичность без использования месяцами -> кандидат на удаление
Дрейф — то, что отменяет наименьшие привилегии: новые ресурсы приходят с разрешениями по умолчанию, развёртывания добавляют удобные разрешения, а реакция на инцидент оставляет расширения, и каждое разумно само по себе. Сравнение текущего набора с задуманным превращает каждое различие в небольшой вопрос для ревью, а не в медленный спад, который никто не может датировать. Обычная ошибка — провести сравнение один раз и доверять ему дальше, поэтому аккаунт сужается только когда кто-то вспомнит.