Перейти к основному содержимому

Секреты

В этом разделе описаны возможности и функции Секретов.

Обзор

Секреты — это компонент платформы Tuna, созданный для безопасного хранения конфиденциальных и не только данных, удобного управления конфигурациями приложений в любых средах: локально, CI/CD, тестовые и продуктивные окружения. Является отличной альтернативой .env файлам в компании с direnv или переменным окружения в GitLab CI/CD / GitHub Actions.

Для кого?

  • Разработчики — чтобы упростить настройку окружений и сократить количество "магических" значений в коде.
  • DevOps-инженеры — для централизации и автоматизации конфигураций.
  • Команды — для безопасного и контролируемого совместного доступа к конфиденциальным данным.

Основные возможности

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

Доступ к секретам осуществляется через веб интерфейс личного кабинета, с помощью консольного клиента tuna или через API.

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

Проекты

Вы можете создавать несколько проектов, под проектом предполагается одно приложение, например API или сервер авторизации. Каждый проект имеет Имя и Алиас. Имя - это название отображаемое в интерфейсе удобное для восприятия, может иметь пробелы и т.д., а Алиас - нужен для обращения к проекту через CLI tuna или через API.

Количество создаваемых проектов лимитировано и зависит от тарифа.

Окружения

Каждый проект содержит окружения, по умолчанию 3 (Development, Staging, Production), их можно переименовывать менять порядок, а также добавлять или убавлять под свои нужды.

Как и проекты окружения имеют Имя и Алиас:

Конфигурации

Каждое окружение имеет основную конфигурацию, ещё нельзя удалить. Относительно основной конфигурации в окружении можно создавать её копии, т.е. дочерние конфигурации.

Так, например, у вас есть Development окружение - это master ветка в git с которой равёрнут стенд. Относительно основной конфигурации каждый разработчик может создать свою уникальную конфигурацию.

Секреты

Сами секреты представляют пару Ключ = Значение. Ключ это всегда строка формата, имени переменной окружения. Значение может быть любым.

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

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

К примеру, вот так выглядит генератор секретов:

Комментарии

К каждому секрету можно оставить комментарий:

  1. Отобразить комментарий конкретного секрета
  2. Отобразить комментарии всех секретов

Напоминания

Ещё к каждому секрету можно оставить напоминания, и вам будут приходить уведомления на email:

Синхронизация секретов в окружениях

Добавляя новые переменные в основную конфигурацию какого-либо окружения вы увидите индикацию у других окружений, что какие-то переменные осутствуют:

Вам будет предложено заполнить пропущенные секреты или скрыть их:

Сравнение значения секрета в разных окружениях

Вы всегда можете провести инвентаризацию и сравнить значение секрета во всех окружениях и убедиться, например, что подключение к Production базе не скопировано по ошибке в Staging или Development.

Скрытые секреты

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

Доступ

к сведению

Доступно только по подписке.

Сервисные ключи

Вы можете выпустить уникальный для данной конфигурации Сервисный ключ, это аналог пользовательского API-ключа, но ограниченный только на данную конфигурацию. Сервисный ключ может быть ограничен как только на чтение так и на чтение и запись. Это полезно например для CI/CD.

Сервисный ключ можно узнать по префиксу - tst_, тогда как API-ключ имеет префикс - tak_, а токен для создания туннелей - tt_.

Разрешенные IP адреса и подсети

Доступ также можно ограничивать по IP адресам и подсетям в CIDR формате. По умолчанию разрешено всем.

В комплексе, например вы можете выпустить Сервисный ключ для prod окружения и ограничить получение секретов для IP адресов с gitlab-runners и ваших Production серверов.

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

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

Навигация