January 22

Infisical: менеджер секретов

Всем привет! Сегодня я хочу рассказать вам про Infisical - удобный менеджер секретов. С его помощью вы можете безопасно хранить API-ключи, токены, пароли и другие конфиденциальные данные, а также легко интегрировать их в проекты.

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

Зачем нужен менеджер секретов

В проектах секреты обычно хранят в .env файлах: переменные окружения для базы данных, API ключи и т.д. Это удобно на старте, но есть ряд проблем:

  1. .env лежит в проекте или на сервере, и каждый, кто имеет доступ к файлу, видит все секреты.
  2. Нет истории изменений - кто и когда менял значение, не видно.
  3. Нельзя легко управлять разными окружениями: dev, staging, prod.

Например, обычный .env может выглядеть так:

NODE_ENV=development

HTTP_PORT=3000
CORS_ORIGIN=http://localhost:5173

STRIPE_API_KEY=sk_test_51LabcXYZ

DATABASE_URL=postgresql://user:pass@localhost:5432/dbname

Всё вроде просто, но что реально важно:

  • NODE_ENV, HTTP_PORT и CORS_ORIGIN - это локальные настройки, их можно оставить в .env.
  • А вот STRIPE_API_KEY, DATABASE_URL лучше перенести в менеджер секретов.

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

Cloud или Self-Hosted

Infisical можно использовать двумя способами: полностью управляемый cloud сервис или разворачивать на своём сервере. У self-hosted есть свои плюсы - полный контроль над данными, но для простого старта удобнее cloud версия.

Я буду показывать именно cloud, потому что её проще настроить и сразу работать с секретами в проекте.

Регистрация простая: заходите на сайт, создаёте аккаунт, подтверждаете почту и попадаете в панель управления.

Создание первой организации и проекта

После того как мы создали аккаунт, нам предлагают создать организацию. Организация в Infisical - это верхний уровень структуры, куда будут входить все ваши проекты и секреты.

Внутри организации Infisical создаёт первый проект автоматически, он называется Example Project. Это базовый проект, который можно использовать как пример или сразу удалять.

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

Добавление секретов

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

Для чистоты примера я сначала удаляю эти дефолтные переменные.

Теперь создадим свои переменные. В качестве примера возьмём DATABASE_URL и STRIPE_API_KEY. Чтобы добавить переменную, нажмите кнопку "Add Secret" в панели проекта. Появится форма создания новой переменной:

Разберём поля формы подробно:

  • Key - имя вашей переменной. Например DATABASE_URL. Это то, как её будут использовать в коде.
  • Value - здесь вводим реальное значение секрета.
  • Tags - теги помогают классифицировать секреты. Можно создавать теги по сервисам или по типу ключей, чтобы потом легко фильтровать.
  • Environments - выбор окружений, в которых будет создан секрет. В Infisical есть три стандартных окружения:
    • Development - для локальной разработки. Сюда обычно добавляют тестовые ключи или локальные строки подключения.
    • Staging - промежуточное окружение, где проверяются функции перед релизом. Здесь используют отдельные тестовые ключи и базы данных.
    • Production - боевое окружение, сюда добавляются реальные секреты, которые будут использоваться в продакшене.

Папки и окружения – dev/staging/prod и как их правильно разделять

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

Ещё есть папки, это удобный способ логически объединять переменные внутри окружения. Например, я создаю группу database для всех переменных базы, payment для Stripe и auth для JWT или OAuth токенов.

Интегрируем Infisical в приложение

Я буду показывать на примере простого Node.js приложения.

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

npm i -g @infisical/cli

После установки нужно авторизоваться в Infisical. Для этого в терминале проекта пишем:

infisical login

CLI предложит выбрать способ использования: Infisical Cloud (US или EU регион) либо self-hosted. Выбираем нужный вариант(у меня это US) с помощью стрелок и нажимаем Enter. После этого происходит авторизация, и Infisical CLI получает доступ к вашим секретам.

Далее нужно привязать наш проект к CLI. Для этого в терминале выполняем команду:

infisical init

CLI покажет список доступных организаций. Выбираем организацию, из которой будем подгружать секреты. После этого в папке проекта создаётся файл конфигурации .infisical.json, который хранит ID проекта.

Теперь самое важное: чтобы приложение могло использовать секреты, его нельзя запускать обычной командой node index.js или npm run start. Нужно использовать команду:

infisical run node index.js

То есть при запуске любого кода, где мы используем переменные не из .env, а из Infisical, всегда добавляем infisical run перед командой. Это гарантирует, что Infisical подгрузит секреты в process.env на время выполнения.

В коде работать с ними можно точно так же, как с обычными переменными окружения:

console.log('Node environment:', process.env.NODE_ENV)
console.log('HTTP port:', process.env.HTTP_PORT)
console.log('Stripe API key:', process.env.STRIPE_API_KEY)
console.log('Database URL:', process.env.DATABASE_URL)

Если попытаться запустить приложение обычной командой node index.js, process.env для секретов Infisical будет пустым.

История изменений и аудит

Infisical ведёт детальный аудит всех действий с секретами в проекте. В панели управления есть раздел Audit Logs, где видно, кто, когда и что делал.

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

  • event - что именно произошло (например, dashboard-list-secrets).
  • actor - кто совершил действие (например, user).
  • user_email - почта пользователя, чтобы можно было понять, кто именно сделал изменения.
  • timestamp - когда произошло событие (например, Jan 22nd 2026, 10:22 AM).

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

Конец

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

Надеюсь, эта статья поможет вам быстрее и безопаснее работать с секретами в ваших проектах. Удачи с настройкой и кодингом!

До встречи в следующих статьях!