Key Store
Key Store служит централизованным хранилищем учетных данных в Semaphore. Он управляет данными аутентификации, необходимыми для клонирования удаленных Git-репозиториев, подключения к целевым хостам инфраструктуры, повышения привилегий (sudo/become) и расшифровки секретов Ansible Vault.

Key Store разделен на две основные вкладки:
- Вкладка Keys: Список всех учетных данных, созданных для текущего проекта, с указанием имени, типа хранилища, типа ключа и статуса синхронизации.
- Вкладка Storages (Pro): Настройка внешних хранилищ секретов (таких как HashiCorp Vault, OpenBao, AWS Secrets Manager или CyberArk) для динамического разрешения и автоматической синхронизации.
Типы учетных данных
Semaphore разделяет сохраненные учетные данные на три основных типа:
1. SSH-ключи
SSH-ключи обеспечивают асимметричную криптографическую аутентификацию для подключения к узлам Linux/UNIX и клонирования Git-репозиториев по SSH ([email protected]:...).
При настройке учетных данных SSH-ключа можно указать:
- Имя ключа: Понятное описание учетных данных для инвентарей и шаблонов проекта.
- Имя пользователя (Необязательно): Учетная запись по умолчанию для установления SSH-соединения (например,
ansibleилиubuntu). - Парольная фраза (Необязательно): Парольная фраза для расшифровки защищенных приватных ключей. Поля ввода парольной фразы имеют значок видимости (
глаз) и скрыты по умолчанию. - Приватный ключ: Исходный текст приватного ключа PEM/OpenSSH.
Встроенный генератор SSH-ключей
Вместо ручного запуска ssh-keygen на внешних машинах Semaphore предоставляет встроенный генератор пар SSH-ключей в один клик прямо в модальном окне:

- Выберите SSH Key в выпадающем списке Type.
- Установите флажок Generate SSH Key.
- Поле ручного ввода Private Key будет автоматически отключено и заблокировано.
- Нажмите Create. Semaphore автоматически сгенерирует криптографически стойкую пару ключей (ED25519/RSA), сохранит зашифрованный приватный ключ в базе данных и отобразит публичный ключ в диалоговом окне:

Используйте кнопку Copy to Clipboard для копирования публичного ключа и добавьте его в deploy keys вашего Git-провайдера или в файл ~/.ssh/authorized_keys на целевых хостах.
Извлечение публичных ключей позже (Public Key Drawer)
Если вы закрыли окно или вам потребуется публичный ключ позже, создавать пару заново не нужно. При редактировании любого ключа, созданного генератором, Semaphore предоставляет раскрывающуюся панель Public key:

- Нажмите Show / Hide для просмотра строки публичного ключа.
- Нажмите значок буфера обмена, чтобы мгновенно скопировать публичный ключ.
Привязка deploy keys к популярным Git-хостингам
Для репозиториев Git с аутентификацией по SSH добавьте сгенерированный публичный ключ в качестве deploy key только для чтения:
2. Вход по паролю
Тип учетных данных Вход по паролю поддерживает как традиционную аутентификацию по связке логин/пароль, так и изолированные секретные строки:
- Аутентифи кация хоста и sudo: Обеспечивает парольный доступ по SSH и повышение привилегий через
sudoна целевых узлах. - Аутентификация Git HTTPS: Аутентификация в удаленных репозиториях по HTTPS с использованием имени пользователя и персональных токенов доступа (PAT).
- Пароли Ansible Vault: Разблокировка зашифрованных файлов и переменных Ansible Vault во время выполнения задач.
Для сохранения чистой секретной строки (например, токена API, пароля Vault или PAT) оставьте поле Login / Username пустым. Semaphore сохранит значение как изолированный секрет без привязки к имени пользователя.
Маскирование секр етов и защита от перезаписи
Для защиты учетных данных от несанкционированного просмотра и случайного изменения:
- Поля ввода паролей и парольных фраз маскируются в интерфейсе с возможностью временного показа.
- При редактировании существующего ключа поля ввода секретов отключены по умолчанию.
- Чтобы обновить или заменить секрет, необходимо явно установить флажок Override в нижней части формы. Это предотвращает случайную перезапись при обычном редактировании.
3. Нет
Тип Нет используется как заполнитель при отсутствии аутентификации. Он применяется для общедоступных репозиториев Git (например, на GitHub или GitLab) и локальных плейбуков, не требующих ключей или паролей.
Хранилища секретов
Semaphore поддерживает архитектуру раздельного хранения секретов. При создании или редактировании ключа вы можете выбрать место хранения секрета с помощью вкладок:
| Вкладка хранилища | Доступность | Описание |
|---|---|---|
| Local | Open Source & Pro | Секрет хранится прямо в базе данных Semaphore с использованием конвертного шифрования. |
| Storage | Pro | Секрет ссылается на внешний движок секретов (например, HashiCorp Vault, AWS Secrets Manager). |
| Env | Open Source & Pro | Секрет динамически считывается во время выполнения из переменной окружения сервера. |
| File | Open Source & Pro | Секрет считывается из защищенного файла в настроенном каталоге секретов на сервере. |

Хранилище в базе данных (Local)
По умолчанию секреты хранятся в зашифрованном виде в базе данных приложения с использованием симметричного шифрования AES. Мастер-ключ настраивается через параметры сервера:
- Параметр конфигурации:
access_key_encryption - Переменная окружения:
SEMAPHORE_ACCESS_KEY_ENCRYPTION
Создайте криптографически стойкий 32-байтный ключ base64 перед запуском производственных инстансов:
head -c32 /dev/urandom | base64
Обязательно сохраните резервную копию этого ключа. При его утере восстановить секреты из базы данных будет невозможно.
Переменные окружения и файлы (Только чтение)
При выборе вкладки Env или File Semaphore рассматривает хранилище как внешний источник только для чтения. В интерфейсе появляется уведомление:
Read-only secret storage chosen.

- Источник Env: Укажите точное имя переменной окружения, экспортированной на сервере (например,
SEMAPHORE_EXTERNAL_VAULT_TOKEN). - Источник File: Укажите путь к файлу относительно настроенного каталога секретов (
dirs.secrets/SEMAPHORE_SECRETS_PATH, по умолчанию/tmp/semaphore).
Для структурированных ключей содержимое файлов и переменных должно быть оформлено как корректный JSON-объект. Подробнее см. Источники из переменных и файлов.
Внешние корпоративные системы секретов (Pro & Enterprise)
Semaphore Pro и Enterprise расширяют Key Store нативными коннекторами к корпоративным системам управления секретами:
- HashiCorp Vault: Подключение по AppRole или токену для чтения и записи секретов KV v1/v2.
- OpenBao: Open-source форк HashiCorp Vault, совместимый по API.
- AWS Secrets Manager Enterprise: Интеграция с ролями AWS IAM или статическими ключами доступа.
- Devolutions Server: Интеграция для централизованного управления привилегированным доступом.
- CyberArk PAM Enterprise: Чтение и запись секретов через REST API CyberArk PVWA.
Синхронизация секретов из удаленных хранилищ
Вместо ручного добавления каждого ключа Semaphore поддерживает автоматическую синхронизацию из внешних хранилищ секретов.
Когда секрет управляется через синхронизацию:
- Он помечается активным бейджем synchronized в таблице Key Store.
- Ручное редактирование секрета в интерфейсе блокируется, чтобы внешнее хранилище оставалось единственным источником истины.
- Любые обновления или ротации секретов автоматически передаются в Semaphore согласно настроенному интервалу.
Подробные инструкции по настройке см. в разделе Синхронизация секретов.