Ротация секретов DataLens On-premises

Классификация по возможности ротации:

Категория Возможность ротации Последствия
🟢 Безопасная ротация Можно ротировать Минимальное влияние на работу системы
🟡 Ротация с последствиями Можно ротировать Требуется учитывать побочные эффекты
🔴 Ротация невозможна Не рекомендуется Приводит к потере данных или неработоспособности

Автоматическая ротация секретов не предусмотрена. Секреты сохраняются между обновлениями благодаря механизму lookup в Helm-чарте, который переиспользует существующие значения из секретов Kubernetes.

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

🟢 Секреты с безопасной ротацией

Эти секреты можно ротировать без значительных последствий. После ротации требуется перезапуск подов.

Секрет Процедура ротации Последствия
AUTH_CALLBACK_COOKIE_SECRET Изменить в values.yaml и выполнить helm upgrade OAuth/OIDC callback-и в процессе аутентификации станут недействительными
DOCKER_CONFIG_JSON Изменить в values.yaml и выполнить helm upgrade Нет влияния на работающие поды
AUTH_PROVIDERS_CONFIG Изменить в values.yaml и выполнить helm upgrade Нет влияния (конфигурация провайдеров)
EXPORT_DATA_VERIFICATION_KEY Изменить в values.yaml и выполнить helm upgrade Ранее экспортированные воркбуки будут импортироваться с предупреждением

🟡 Секреты с ротацией и последствиями

Эти секреты можно ротировать, но это приведет к определенным побочным эффектам.

Секрет Процедура ротации Последствия
AUTH_TOKEN_PRIVATE_KEY / AUTH_TOKEN_PUBLIC_KEY ./init.sh --auth-rsa-gen ⚠️ Все активные пользовательские сессии станут недействительными. Пользователям потребуется повторный вход в систему
CSRF_SECRET Изменить в values.yaml и выполнить helm upgrade ⚠️ Запросы данных будут возвращать ошибки до тех пор, пока апгрейд не завершится
TEMPORAL_AUTH_PRIVATE_KEY / TEMPORAL_AUTH_PUBLIC_KEY ./init.sh --temporal-rsa-gen ⚠️ Выполняющиеся задачи Temporal могут завершиться с ошибкой. Рекомендуется дождаться завершения всех задач перед ротацией
AUTH_MASTER_TOKEN Изменить в values.yaml и выполнить helm upgrade ⚠️ Временная недоступность сервиса аутентификации до перезапуска всех зависимых подов
US_MASTER_TOKEN Изменить в values.yaml и выполнить helm upgrade ⚠️ Временная недоступность United Storage до перезапуска всех зависимых подов
FILE_UPLOADER_MASTER_TOKEN Изменить в values.yaml и выполнить helm upgrade ⚠️ Временная недоступность загрузки файлов до перезапуска всех подов

Ротация этих секретов приводит к потере данных или неработоспособности системы без дополнительных действий.

Секрет Почему нельзя ротировать Что делать при компрометации
AUTH_ADMIN_PASSWORD 🚫 Изменить пароль администратора возможно только через интерфейс DataLens
CONTROL_API_CRYPTO_KEY 🚫 Используется для шифрования паролей и токенов в подключениях к источникам данных. При смене ключа все существующие подключения станут нечитаемыми Можно пересоздать через восстановление из бэкапа
POSTGRES_PASSWORD_* 🚫 Пароли используются как в приложении, так и в самой базе данных. Изменение только в секретах приведет к ошибкам подключения Требуется синхронная смена пароля в PostgreSQL и в секретах. При использовании встроенного PostgreSQL — сложная процедура с даунтаймом
CLICKHOUSE_PASSWORD 🚫 Аналогично PostgreSQL — пароль должен совпадать в БД и секретах Синхронная смена в ClickHouse® и секретах
REDIS_PASSWORD 🚫 Аналогично — пароль должен совпадать в Redis и секретах Синхронная смена в Redis и секретах
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY 🚫 Креденшалы должны совпадать с настройками S3/MinIO Синхронная смена в S3 и секретах

Также при обновлении паролей к БД можно создать нового пользователя и пароль с аналогичными правами доступа и мигрировать на него нагрузку без даунтайма.

Процедура ротации RSA-ключей аутентификации

# 1. (Опционально) Предупредить пользователей о необходимости повторного входа

# 2. Сгенерировать новые ключи и выполнить обновление
./init.sh --auth-rsa-gen

# 3. Убедиться, что все поды перезапустились
./init.sh --kubectl get pods

# 4. Проверить работоспособность аутентификации

Процедура ротации мастер-токенов

# 1. Подготовить новые значения токенов (32 символа, alphanumeric)
NEW_TOKEN=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)

# 2. Создать или обновить values.yaml с новыми значениями
# secrets:
#   US_MASTER_TOKEN: "<новый токен>"

# 3. Выполнить обновление
./init.sh --values ./my-values.yaml

# 4. Убедиться, что все поды перезапустились
./init.sh --kubectl rollout status deployment --timeout=300s

Процедура ротации паролей БД (встроенный PostgreSQL)

Важно

Эта процедура требует даунтайма и должна выполняться с особой осторожностью.

# 1. Создать резервную копию
./init.sh --dump-postgres

# 2. Подключиться к PostgreSQL
./init.sh --pg-sql

# 3. Изменить пароль пользователя в PostgreSQL
ALTER USER "pg-us-user" WITH PASSWORD 'новый_пароль';

# 4. Обновить секрет в values.yaml
# secrets:
#   POSTGRES_PASSWORD_US: "новый_пароль"

# 5. Выполнить обновление
./init.sh --values ./my-values.yaml

# 6. Перезапустить поды, использующие этот пароль
./init.sh --kubectl rollout restart deployment

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.