Идентичность и затраты
Что это такое
Идентичность решает, кто может вызывать какой API, а затраты — во что эти вызовы складываются. В AWS и то и другое управляется одной структурой аккаунта: пользователи и роли держат политики, дающие разрешения, и каждое действие, которое разрешает политика, — действие, которое рано или поздно может появиться в счёте. Эти две темы вместе, потому что разрешение — это и разрешение тратить: возможность создавать ресурсы есть возможность создавать затраты.
Почему это важно
Долгоживущий ключ доступа с широкими правами — самое разрушительное, что можно оставить в репозитории, а радиус поражения — весь аккаунт. Роли убирают ключ: рабочая нагрузка просит у платформы временные учётные данные, а платформа решает, выдать ли их. На стороне затрат опасность не в очевидном большом инстансе, а в накоплении мелких ресурсов — несвязанных дисков, простаивающих балансировщиков, забытых снимков, — которыми никто не владеет и которых никто не замечает. Обе проблемы решает одна дисциплина: дать каждому действующему лицу ровно то, что ему нужно, и сделать каждый ресурс атрибутируемым.
Ключевые идеи
Предпочитайте роли долгоживущим ключам
Роль — набор разрешений, которые доверенное лицо может временно принять на себя. Инстансу, функции или человеку можно дать роль вместо статического ключа, так что нечего утекать и нечего забывать ротировать. Там, где ключ неизбежен, сузьте его и ротируйте. Наличие долгоживущего ключа в репозитории следует считать инцидентом, а не уборкой.
инстанс -> принимает роль -> временные учётные данные -> вызов API
ключ не хранится, нечему утекать, нечего ротировать
Минимальные права — это процесс, а не идеал
Начните с запрета и добавляйте разрешения, которые нагрузке доказанно нужны. Практический метод — наблюдать, что вызывается, выдать это и убрать то, что не вызывается. Широкие управляемые политики — разумная отправная точка, только если сужение входит в план, потому что разрешение, выданное на пробу, переживает пробу.
Политики крепятся к идентичностям и к ресурсам
Политика идентичности говорит, что может делать эта роль; политика ресурса говорит, кто может трогать этот ресурс. Оцениваются обе, и доступ между аккаунтами требует утверждения с каждой стороны. Понимание, что действующее разрешение — это пересечение, останавливает частую ошибку: выдать широко на одном слое и полагать, что другой слой вас спасёт.
разрешено = (что может делать роль) И (что принимает ресурс)
У каждого ресурса должен быть владелец и теги
Теги — самый дешёвый инструмент управления, который предлагает AWS: владелец, окружение, проект, срок действия. Без них счёт — одно неразличимое число, и на первый вопрос любого разбора затрат — «чьё это?» — ответить нельзя. Требовать небольшой набор тегов при создании гораздо дешевле, чем задним числом выяснять принадлежность.
У затрат есть ритм, и счёт — это запись
Вычисления тарифицируются посекундно, хранилище — помесячно, передачи — погигабайтно. Бюджет и оповещение превращают счёт в сигнал, а не в ежемесячный сюрприз: вы объявляете, сколько ожидаете потратить, и вам сообщают, когда реальность расходится. Просмотр самых крупных строк счёта каждый месяц обычно находит одни и те же несколько шаблонов — простаивающие ресурсы, завышенные инстансы и данные, пересекающие границу, которую им пересекать не нужно.
Практика
Замените ключ ролью
Найдите нагрузку, использующую статический ключ доступа. Дайте ей роль, разрешающую только то, что она вызывает, уберите ключ и убедитесь, что она всё ещё работает.
Готово, когда: ключа больше нет, а лог нагрузки показывает использование временных учётных данных.
Атрибутируйте один ресурс
Возьмите созданный вами ресурс и добавьте теги владельца, окружения и проекта. Затем найдите его в отчёте о затратах по этим тегам.
Готово, когда: отчёт о затратах может отнести расход ресурса к имени, а сам ресурс будет опознаваем и через год.
Частые ошибки
- Коммит ключа доступа — права аккаунта теперь публичны; исправить: немедленно отзовите ключ, затем замените его ролью.
- Выдача широкой политики, «чтобы разблокировать деплой» — политика остаётся после развёртывания; исправить: считайте расширение временным, с датой, и сузьте его, как только поймёте отказ.
- Создание ресурсов без тегов — никто не может отнести ни затраты, ни владельца; исправить: требуйте минимальный набор тегов при создании.
- Убеждение, что политика ресурса компенсирует слишком широкую роль — действующее разрешение есть пересечение, но широкая роль всё равно действует в других местах; исправить: сузьте и роль тоже.
- Наблюдение только за очевидными крупными строками — мелкие простаивающие ресурсы тихо накапливаются; исправить: просматривайте весь счёт ежемесячно, начиная с самых крупных строк.
Что читать дальше
- Сети и VPC (06-cloud-devops/02-aws/03-networking-and-vpc) — правила, которыми управляют эти разрешения, и трафик, которого они стоят.
- AWS (06-cloud-devops/02-aws) — структура аккаунта, в которой живут эти политики.
- Управление затратами на облако (06-cloud-devops/11-cloud-cost-management) — постоянные практики, превращающие этот месячный разбор в привычку.
- Безопасность в облаке и IAM (06-cloud-devops/12-cloud-security-iam) — та же задача, обобщённая на всех провайдеров.