env-master

Что делает env-master

Хранилище секретов и переменных, из которого сервисы забирают значения сами. Ниже — что именно умеет система; где проходит граница её гарантий, написано на странице о безопасности.

Переменные и секреты — одна сущность

Не два хранилища, а одна запись с флагом видимости: plain видна всем с доступом к проекту, masked отдаётся по явному запросу с записью в аудит, restricted не показывается человеку вовсе.

Версии и метки

current читают потребители, previous даёт откат в одно действие, pending хранит значение, которое создано, но ещё не применено. Откат публикует старое значение новой версией — история остаётся монотонной.

Доставка по identity

Universal Auth обменивает client_id и secret на короткоживущий токен; enrollment-токен живёт минуты и ровно одно использование. Повторный обмен означает утечку — он отклоняется атомарно и поднимает тревогу.

Скоуп до набора ключей

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

Ротация без простоя

create → set → test → finish, идемпотентно и с возобновлением с любой фазы. Новое значение становится текущим только после успешной проверки.

Аудит двумя потоками

Изменения и доступы, связанные хеш-цепочкой. В журнал попадают имена ключей и HMAC значения — достаточно, чтобы увидеть изменение, и недостаточно, чтобы узнать значение.

Инструменты

  • SDK — забирает значения при старте и держит их в памяти процесса, с автообновлением токена и маскированием в логах.
  • CLI — export, run с передачей значений дочернему процессу, validate для пайплайна и import для переезда с .env.
  • Action для CI — маскирует каждое значение до того, как его можно напечатать, и кладёт в окружение джобы.
  • Мобильный клиент — лента аудита, тревоги и подтверждения с телефона.

Проверка полноты окружения

Схема описывает, какие ключи обязательны и в каких средах. Команда validate сверяет её с тем, что реально лежит в сервисе, и останавливает деплой, если ключа не хватает — до рантайма, а не после. Проверка идёт по именам, значения не раскрываются.