Deckhouse Development Portal (DDP) позволяет безопасно сменить ключ шифрования (security.secretKey) без потери учётных данных и других зашифрованных значений. Операция выполняется из веб-интерфейса и перешифровывает все данные, которые хранятся с использованием текущего ключа.
Основания для ротации ключа
Выполните ротацию ключа шифрования, если необходимо заменить параметр модуля security.secretKey — например, по политике безопасности или после компрометации ключа.
Параметр задаётся в ModuleConfig development-platform (spec.settings.security.secretKey) или в настройках модуля в веб-интерфейсе Deckhouse Platform.
Не меняйте security.secretKey в настройках модуля до завершения перешифрования в веб-интерфейсе, иначе сохранённые значения станут недоступны.
Права доступа
Для запуска ротации требуется глобальное разрешение rotate:encryption-key.
Перешифровываемые данные
Операция затрагивает следующие категории данных:
- «Учётные данные пользователей» — значения в PostgreSQL для типов с хранилищем «База данных».
- «Учётные данные AI-провайдеров» — персональные реквизиты для AI-интеграций.
- «Временные ответы действий» — зашифрованные временные ответы в записях выполнения действий.
- «Секреты Vault» — значения учётных данных, хранящихся в HashiCorp Vault или Deckhouse Stronghold.
- «Конфигурация Vault» — AppRole Role ID и AppRole Secret ID в настройках интеграции с Vault.
- Пароли подключений реестра шаблонов. Отдельной строки в таблице результатов для них нет: они учитываются в строке «Итого».
Порядок выполнения
Создайте резервную копию базы данных PostgreSQL портала. Если перешифрование завершится с ошибкой, зашифрованные значения можно будет восстановить из резервной копии.
Перейдите в раздел «Администрирование» → «Учётные данные».
Нажмите «Ротация ключа шифрования».
В поле «Старый ключ шифрования» введите текущий ключ (параметр модуля
security.secretKey).В поле «Новый ключ шифрования» введите новый ключ. Требования к ключу те же, что при первоначальной настройке:
- длина — 16, 24 или 32 печатаемых ASCII-символа;
- ключ не должен состоять из одного повторяющегося символа;
- ключ не должен совпадать с распространёнными значениями, например
1234567890123456илиpasswordpassword; - новый ключ должен отличаться от старого.
Нажмите «Перешифровать».
Дождитесь завершения операции и проверьте таблицу результатов. Для каждой категории отображается количество успешно перешифрованных, пропущенных и неуспешных записей.
Укажите новый ключ в параметре модуля
security.secretKey: в ModuleConfigdevelopment-platform(spec.settings.security.secretKey) или в настройках модуля в веб-интерфейсе Deckhouse Platform.Пример фрагмента ModuleConfig:
apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: development-platform spec: settings: security: secretKey: <NEW_SECRET_KEY>После изменения настроек модуля DDP Backend и воркеры DDP перезапускаются автоматически с новым ключом.
После перешифрования и до перезапуска DDP Backend с новым ключом сохранённые значения расшифровать нельзя.
Значения, которые пользователи сохранят в этот промежуток, будут зашифрованы старым ключом и после перезапуска станут нечитаемыми. Чтобы перешифровать их, повторите ротацию с той же парой старого и нового ключей: значения, уже зашифрованные новым ключом, будут пропущены.
Сессии в браузере и сессии имперсонации подписываются ключом security.secretKey. После смены ключа текущие сессии становятся недействительными: веб-интерфейс пытается обновить сессию через Dex, а если это не удаётся, перенаправляет пользователя на страницу входа. Активные сессии имперсонации завершаются.
Результаты операции
В таблице результатов для каждой категории данных указываются три счётчика:
- «Успешно» — записи перешифрованы новым ключом.
- «Пропущено» — записи, которые уже доступны с новым ключом (например, были перешифрованы ранее), и записи без сохранённого значения.
- «Неуспешно» — запись не удалось перешифровать (чаще всего из-за неверного старого ключа или повреждённых данных).
Строка «Итого» содержит суммарные значения по всем категориям.
Если в столбце «Неуспешно» есть ненулевые значения, не меняйте ключ в настройках модуля до устранения причины ошибок. Проверьте корректность старого ключа и повторите операцию.