Секреты
В этом разделе описаны возможности и функции Секретов.
Обзор
Секреты — это компонент платформы Tuna, созданный для безопасного хранения конфиденциальных и не только данных, удобного управления конфигурациями приложений в любых средах: локально, CI/CD, тестовые и продуктивные окружения. Является отличной альтернативой .env
файлам в компании с direnv или переменным окружения в GitLab CI/CD / GitHub Actions.
- VK Видео
- YouTube
Для кого?
- Разработчики — чтобы упростить настройку окружений и сократить количество "магических" значений в коде.
- DevOps-инженеры — для централизации и автоматизации конфигураций.
- Команды — для безопасного и контролируемого совместного доступа к конфиденциальным данным.
Основные возможности
Мы придерживаемся общепринятой структуры, поэтому хранение секретов разделяется по проектам, внутри проектов есть окружения, а внутри окружений конфигурации основные или дочерние. Внутри конфигураций сосредоточенно множество функций работы непосредственно с секретами и доступом к ним, аудит и прочее. При работе в Команде, в разделе с ролями появляется возможность гранулярно распределять доступ участников к нужным окружениям в проектах.
Доступ к секретам осуществляется через веб интерфейс личного кабинета, с помощью консольного клиента tuna или через API.
Все секреты хранятся в нашей базе данных в зашифрованном виде, при этом ключ шифрования в самой базе не хранится, так что в случае утечки базы, ваши секреты останутся анонимными. Но всё таки Секреты это не Пароли, здесь мы не применяем подход нулевого знания, в угоду удобству. Секреты позволяют удобно управлять чувствительными настройками приложений, вроде токенов интеграций с внешними сервисами, URL подключения к базе данных и прочих настроек.
Проекты
Вы можете создавать несколько проектов, под проектом предполагается одно приложение, например API или сервер авторизации. Каждый проект имеет Имя и Алиас. Имя - это название отображаемое в интерфейсе удобное для восприятия, может иметь пробелы и т.д., а Алиас - нужен для обращения к проекту через CLI tuna или через API.

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

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

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

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

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

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

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

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


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


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

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


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


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

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

В комплексе, например вы можете выпустить Сервисный ключ для prod окружения и ограничить получение секретов для IP адресов с gitlab-runners и ваших Production серверов.
История изменений
Также ведётся полный аудит всех действий и изменений внутри конфигурации. Если кто-то изменил пароль подключения к безе данных, вы сможете узнать об этом.

Навигация
📄️ Работа в CLI
Получение секретов и настройка окружения через консольный клиент tuna
📄️ Примеры
Примеры работы с tuna secrets