Хранилища
Команда semaphore vault управляет шифрованием секретов, которые Semaphore
хранит в базе данных, — секретов ключей доступа (SSH-ключи, пары
логин/пароль, секретные строки) и ключа подписи JWT.
semaphore vault --help
vault— псевдоним дляvaults.
У неё две подкоманды:
| Команда | Назначение |
|---|---|
vault rekey | Перешифровать все хранимые секреты активным ключом шифрования. |
vault check | Показать, каким идентификатором ключа зашифрован каждый хранимый секрет (только чтение). |
О том, как настраиваются и ротируются ключи шифрования, см. раздел Ключи шифрования.
Перешифрование секретов (vault rekey)
Перешифровывает все локально хранимые секреты — секреты ключей доступа и ключ подписи JWT — активным ключом шифрования, проставляя идентификатор этого ключа в каждое значение. Секреты, хранящиеся во внешнем хранилище секретов, пропускаются (они не шифруются связкой ключей Semaphore).
semaphore vault rekey
Ротация ключей без простоя
Активный ключ шифрует новые записи; все остальные ключи в наборе по-прежнему могут расшифровывать старые данные. Поэтому ротация выглядит так: добавить ключ, переключить указатель активного ключа, перешифровать данные в фоне, затем удалить старый ключ.
- Добавьте новый ключ в набор (файл в
keys_folderили запись вkeys:) и направьте на него указатель активного ключа (active.secret_keyилиsecret_key_file). Изменение применяется в течениеkeys_poll_interval(по умолчанию15s) или немедленно поkill -HUP <pid>— перезапуск не требуется. - Выполните
semaphore vault rekey, чтобы перешифровать существующие данные новым ключом. - Выполните
semaphore vault check; как только у старого ключа отобразится0 rows, его можно безопасно удалить из набора.
Опции
| Флаг | Описание |
|---|---|
--old-key <key> | Явно указанный старый ключ шифрования для миграции с устаревшей схемы с одним ключом. Не требуется, если старый ключ уж е присутствует в наборе как дополнительный. Используется для расшифровки данных без префикса (устаревших), у которых нет проставленного идентификатора ключа. |
--backup <file> | Перед перешифрованием записать резервную копию текущих шифротекстов ключей доступа в <file>. |
--rollback <file> | Восстановить шифротексты ключей доступа из файла резервной копии вместо перешифрования. |
Резервное копирование и откат
Сделайте снимок текущих шифротекстов перед перешифрованием и восстановите его, если что-то пойдёт не так:
# Back up current ciphertexts, then re-encrypt to the active key:
semaphore vault rekey --backup /var/backups/vault.jsonl
# Restore the ciphertexts from the backup:
semaphore vault rekey --rollback /var/backups/vault.jsonl
Резервная копия — это файл в формате JSON Lines, по одной записи на ключ доступа
(project_id, key_id, secret). Откат записывает эти шифротексты обратно
без изменений.