Перейти к содержанию
Публикация AiManual

Как Hugging Face управляет секретами в AI-инфраструктуре: миграция с HashiCorp Vault на Infisical

Технический разбор миграции Hugging Face с HashiCorp Vault на Infisical. Разбираем Kubernetes Operator и InfisicalSecret, RBAC через Okta, OIDC для CI/CD, ручны

Коротко

Что будет в материале

  1. 01

    Кратко: что Hugging Face изменил в управлении секретами

  2. 02

    Почему управление секретами стало проблемой для AI-платформы

  3. 03

    Целевая архитектура: Infisical как единая точка управления секретами

  4. 04

    Как Infisical синхронизирует секреты с Kubernetes через Operator

Hugging Face перевел управление секретами с разрозненного подхода и HashiCorp Vault на Infisical. Для платформы с миллионами пользователей и нагрузкой свыше 10 млн запросов в минуту секреты давно перестали быть набором переменных окружения: их нужно выдавать сотрудникам, CI/CD-пайплайнам и Kubernetes-нагрузкам по разным правилам.

Целевая схема объединила Infisical, Kubernetes Operator, CRD InfisicalSecret, RBAC через Okta и OIDC для CI/CD. Секреты синхронизируются в Kubernetes автоматически, а локальная разработка обходится без передачи .env-файлов. При этом команда не включила автоматический рестарт подов после обновления секретов и оставила применение изменений ручным деплоям.

Главный урок кейса: доставку конфиденциальных значений в кластер и жизненный цикл приложения нужно проектировать отдельно. Актуальный Kubernetes Secret еще не означает, что работающий процесс безопасно и предсказуемо подхватил новое значение.

Кратко: что Hugging Face изменил в управлении секретами

Hugging Face централизовал работу с секретами через Infisical и отказался от HashiCorp Vault. Доступы людей связали с Okta и ролевой моделью, CI/CD получил аутентификацию по OIDC, а секреты для рабочих нагрузок начали доставляться в Kubernetes через Operator.

CRD InfisicalSecret описывает желаемую синхронизацию между секретом в Infisical и объектом Kubernetes Secret. Контроллер отслеживает это описание и поддерживает состояние секрета в кластере. Такая схема снимает с команд необходимость вручную копировать значения между системами и окружениями.

Автоматизация заканчивается там, где начинается применение конфигурации приложением. Hugging Face сознательно выбрал ручные деплои вместо автоматического рестарта подов после изменения секретов. Это добавляет операционный шаг, зато оставляет команде явную точку контроля.

Почему управление секретами стало проблемой для AI-платформы

AI-платформа объединяет API, сервисы инференса, очереди задач, хранилища, инструменты разработки и CI/CD. У каждого контура могут быть собственные ключи доступа, токены, пароли и учетные данные сервисов. При росте числа окружений и кластеров ручное распространение значений быстро превращается в отдельную инфраструктурную задачу.

Материалы о миграции подтверждают масштаб Hugging Face, миллионы пользователей и более 10 млн запросов в минуту. Они не раскрывают полный список проблем прежней конфигурации, поэтому приписывать компании конкретные утечки, ошибки ролей или эксплуатационные сбои было бы некорректно. Известен сам факт перехода от разрозненного управления секретами и HashiCorp Vault к Infisical.

Secret sprawl: когда секреты перестают быть просто переменными окружения

Secret sprawl, разрастание секретов, возникает, когда одни и те же или связанные учетные данные живут в локальных .env, настройках CI, Helm values, Kubernetes Secret, документации и личных заметках сотрудников. Каждая копия становится отдельной точкой контроля, обновления и возможного отзыва доступа.

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

Почему HashiCorp Vault перестал быть выбранным решением

Подтвержденный факт: Hugging Face отказался от HashiCorp Vault и выбрал Infisical. Доступные материалы не называют причины, связанные с ценой, лицензированием, производительностью или отдельными ограничениями Vault. Делать из этого кейса универсальный вердикт для двух продуктов нельзя.

Практический фокус миграции лежит в другой плоскости: единой точке хранения и выдачи секретов, интеграции с Kubernetes, корпоративной идентичности и CI/CD. Для команды важнее проверить, насколько инструмент ложится на ее модель доступов, существующие кластеры и процесс ротации, чем повторять чужой выбор по названию продукта.

Целевая архитектура: Infisical как единая точка управления секретами

В описанной схеме Infisical хранит секреты и выдает их авторизованным субъектам. Kubernetes Operator доставляет значения в кластер. InfisicalSecret задает декларацию синхронизации. Okta участвует в управлении пользовательскими доступами, а OIDC дает CI/CD-пайплайнам способ подтвердить свою идентичность без распространения постоянных ключей.

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

Разделение контуров: люди, CI/CD и Kubernetes-нагрузки

КонтурМеханизм в кейсеПрактическая задача
СотрудникиRBAC через OktaВыдавать права через корпоративную идентичность и роли
CI/CDOIDCПодтверждать идентичность пайплайна без постоянного секрета в конфигурации
Kubernetes-нагрузкиOperator и InfisicalSecretСинхронизировать секреты в Kubernetes Secret

Такое разделение поддерживает принцип минимально необходимых прав. У разработчика не должно быть прав рабочего пода, а пайплайну не нужен постоянный ключ, который можно скопировать в другой репозиторий или забыть удалить после смены процесса.

Как Infisical синхронизирует секреты с Kubernetes через Operator

Kubernetes Operator, это контроллер, который наблюдает за ресурсами Kubernetes и приводит фактическое состояние к описанной конфигурации. В кейсе Hugging Face он связывает Infisical с кластером и автоматизирует доставку конфиденциальных данных в Kubernetes.

Такой подход удобен тем, что декларация синхронизации хранится рядом с инфраструктурной конфигурацией. Команда описывает требуемое состояние, а контроллер следит, чтобы Kubernetes Secret соответствовал данным из системы управления секретами.

CRD InfisicalSecret: декларация связи между Infisical и Kubernetes Secret

CRD, Custom Resource Definition, расширяет API Kubernetes пользовательским типом ресурса. InfisicalSecret служит декларативным описанием связи: он сообщает Operator, какой секрет нужно синхронизировать и какой Kubernetes Secret поддерживать в кластере.

Это не замена Kubernetes Secret. InfisicalSecret описывает желаемую синхронизацию, а Kubernetes Secret остается объектом, с которым обычно работают приложения и другие компоненты кластера. Разделение делает поток данных понятнее при аудите и разборе инцидентов.

Что автоматизируется, а что остается под контролем команды

InfisicalSecret автоматизирует обновление данных в Kubernetes Secret. Однако способ, которым приложение читает конфигурацию, и момент применения нового значения остаются отдельными решениями. Один сервис может прочитать переменную окружения только при старте, другой способен отслеживать изменение файла, третий требует отдельной логики перезагрузки.

Поэтому синхронизацию нельзя трактовать как полную автоматизацию ротации. До включения механизма нужно заранее определить, какие приложения увидят обновление сразу, какие потребуют перезапуска и кто отвечает за подтверждение изменения в production.

Почему Hugging Face не включил автоматический рестарт подов

Инженеры Hugging Face отказались от автоматического рестарта подов и предпочли ручные деплои. Это осознанный компромисс, а не техническая недоработка, которую нужно обязательно устранить.

Обновление Secret и перезапуск приложения - разные события

Объект Kubernetes Secret может получить новое значение, но работающий процесс не обязан начать использовать его немедленно. Все зависит от способа потребления секрета: переменные окружения, файлы, внутренняя конфигурация приложения и другие механизмы реагируют на обновления по-разному.

Автоматический рестарт связывает изменение данных с перезапуском нагрузки. Это может быть уместно для части сервисов, но связь требует оценки рисков: времени недоступности, порядка перезапуска реплик, готовности приложения к смене учетных данных и контроля неожиданных изменений.

Ручной деплой как управляемая точка применения изменений

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

У подхода есть цена: ротация требует дисциплины и четкого процесса. Если секрет обновили, а деплой забыли выполнить, приложение продолжит работать со старым значением либо столкнется с ошибкой после его отзыва. Выбор между автоматическим рестартом и ручным деплоем зависит от требований к доступности, частоты ротации и готовности сервисов к смене конфигурации.

RBAC через Okta и OIDC в CI/CD: доступы без лишних постоянных ключей

Миграция затрагивает не только runtime в Kubernetes. Секреты нужны людям, которые разрабатывают и поддерживают сервисы, а еще автоматизации, собирающей, тестирующей и выкатывающей код. Для этих двух сценариев Hugging Face использует разные механизмы: RBAC через Okta и OIDC в CI/CD.

Okta как источник идентичности для ролевого доступа

RBAC, Role-Based Access Control, назначает права ролям, а затем связывает роли с пользователями или группами. Такой подход проще сопровождать, чем отдельные разрешения для каждого человека: при смене команды достаточно изменить членство или роль.

В кейсе Hugging Face RBAC настраивается через Okta. Корпоративная идентичность становится отправной точкой для доступа к секретам, что снижает зависимость от ручной передачи отдельных учетных данных.

OIDC для CI/CD: аутентификация пайплайнов без хранения постоянного секрета

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

В материалах не раскрыты конкретный CI-провайдер, набор claims и политика доверия Hugging Face. Общий принцип остается полезным: права пайплайна нужно ограничивать конкретным контекстом запуска и выдавать только на нужную операцию. Связанные риски AI-разработки и защиты цепочки поставки кода разобраны в материале о DevSecOps для AI-пайплайнов.

Локальная разработка без .env-файлов и более простой онбординг

Hugging Face использует подход к локальной разработке без .env-файлов. Смысл не в запрете формата как такового, а в отказе от ручной передачи конфиденциальных значений между участниками команды.

Какие проблемы .env-файлов устраняет централизованный доступ

Локальные .env-файлы часто расходятся между разработчиками и окружениями. Одно значение могло устареть после ротации, другое осталось у бывшего сотрудника, третье случайно попало в архив, лог или рабочий артефакт. Центральный источник снижает количество таких копий и упрощает отзыв доступа.

.env может оставаться удобным инструментом для локальных незащищенных настроек или учебных проектов. Для командной работы с production-учетными данными безопаснее строить процесс вокруг идентичности, ролей и контролируемой выдачи секретов.

Что меняется для нового разработчика

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

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

Что из кейса Hugging Face стоит перенять командам с AI-инфраструктурой

Кейс полезен не как шаблон для копирования, а как последовательность инженерных решений. Центральный источник секретов, разделенные контуры доступа, декларативная синхронизация в Kubernetes и отдельная стратегия применения обновлений дают более управляемую систему.

Для команд, строящих ML-пайплайны и сервисы инференса на Hugging Face и AWS, этот подход дополняет вопросы архитектуры, описанные в кейсе Fetch Rewards о собственном ML-пайплайне. Чем больше сервисов, окружений и автоматизации, тем дороже обходится неявное распространение ключей.

Когда Infisical и Kubernetes Operator особенно уместны

  • В инфраструктуре несколько Kubernetes-окружений и сервисов с разными наборами учетных данных.
  • Команда хочет убрать ручное копирование секретов между системой хранения и Kubernetes.
  • Доступ сотрудников уже завязан на корпоративный провайдер идентичности.
  • CI/CD должен получать права через OIDC вместо постоянных ключей.
  • Локальная разработка страдает от разрозненных .env-файлов и неясного процесса ротации.

Эти признаки не делают Infisical безусловно лучшим выбором вместо HashiCorp Vault. Они показывают, где схема с Operator, InfisicalSecret, Okta и OIDC может снизить ручную работу и сделать модель доступа прозрачнее.

Вопросы, которые нужно решить до миграции

  1. Определить роли, владельцев секретов и источник идентичности для сотрудников.
  2. Ограничить доступ CI/CD по OIDC: какие пайплайны, репозитории и операции могут получать конкретные секреты.
  3. Описать жизненный цикл каждого секрета: выпуск, ротацию, отзыв и проверку зависимых приложений.
  4. Выбрать стратегию применения обновлений: ручные деплои, контролируемые рестарты или поддержка горячего обновления в приложении.
  5. Зафиксировать процесс локальной разработки без пересылки .env-файлов.
  6. Подготовить аудит доступа и план постепенной миграции, чтобы не переносить хаос старой схемы в новый инструмент.

Доступные материалы не раскрывают все детали миграции Hugging Face. Но подтвержденная архитектурная линия ясна: секреты централизованы в Infisical, Kubernetes получает их декларативно через InfisicalSecret, люди работают через RBAC и Okta, а CI/CD использует OIDC. Самое ценное решение кейса, автоматизацию доставки отделили от автоматизации рестартов и сохранили контроль над изменениями в production.

Подписаться на канал