Работа с паролями в кластере
При изменении паролей от систем хранения и баз данных нужно поменять соответствующие секреты в Kubernetes (Kubernetes Secrets) — объекты, которые хранят конфиденциальную информацию, такую как пароли и токены. Может также потребоваться перезапуск соответствующих приложений, чтобы они смогли повторно прочитать актуальные данные.
В случае с ClickHouse регистрационные данные обновляются через Consul — сервис, который хранит конфигурационные данные и позволяет централизованно управлять паролями и настройками.
Смена пароля пользователя ClickHouse
Чтобы обновить пароль пользователя ClickHouse:
-
Измените пароль ClickHouse, выполнив запрос с
ALTER USER
.Пример 1. SQL-запросALTER USER <user> IDENTIFIED BY '<NewPassword>';
Здесь и далее:
-
<user>
— имя пользователя; -
<NewPassword>
— новый пароль.
-
-
(При изменении пароля пользователя writer.) Обновите пароль в блоке
<remote_servers>
в конфигурации кластера. -
Обновите ключ Consul:
-
Проверьте список существующих ключей.
consul kv get
-
Запишите новое значение в ключ, где хранится пароль, и проверьте обновление.
consul kv put <PathToKey> <NewPassword> consul kv get <PathToKey>
Здесь:
-
<PathToKey>
— путь к ключу, где хранится пароль.
-
-
Смена пароля PostgreSQL
Чтобы обновить пароль PostgreSQL:
-
Подключитесь к кластеру с помощью Lens, перейдите в Workloads → Pods, выберите под PostgreSQL и нажмите на кнопку терминала.
Либо зайдите в контейнер PostgreSQL в командной строке:
kubectl exec -it -n <siem> <postgresql-0> -- sh
Здесь и далее:
-
<siem>
— пространство имен, в котором установлен кластер; -
<postgresql-0>
— имя контейнера PostgreSQL.
-
-
Подключитесь к базе данных.
psql -U postgres -d auth
-
Выполните запрос для обновления пароля.
Пример 2. SQL-запросALTER USER <postgres-user> WITH PASSWORD '<NewPassword>';
Здесь и далее:
-
<postgres-user>
— имя пользователя (может быть другим); -
<NewPassword>
— пример пароля.После смены пароля сервисы, использующие PostgreSQL, перестанут работать до обновления секретов в Kubernetes.
-
-
Поменяйте секреты Kubernetes, содержащие пароль, выполнив следующие действия для каждого секрета:
-
Откройте секрет для редактирования:
kubectl -n <siem> edit secret <secret-name>
Здесь:
-
<secret-name>
— имя секрета:evo.core.global
иevo.siem.global
.
-
-
Закодируйте пароль в Base64, например, командой:
echo -n <NewPassword> | base64
-
Замените в секрете значение ключа
POSTGRES_PASSWORD
на пароль, закодированный на предыдущем шаге. -
Проверьте, что значение ключа было обновлено, командой:
kubectl -n <siem> get secret <secret-name>
-
-
Перейдите в Workloads → Deployments и перезапустите приложения (Deployments) кластера:
-
evo.core.access
-
evo.core.mf-feed
-
evo.siem.active-list-manager
-
evo.siem.dashboard-manager
-
evo.siem.driver-manager
-
evo.siem.entity-relation-manager
-
evo.siem.event-model-manager
-
evo.siem.event-storage-manager
-
evo.siem.expertise-manager
-
evo.siem.integration-manager
-
evo.siem.query-log-manager
-
evo.siem.secret-manager
-
evo.siem.settings-manager
-
evo.siem.template-manager
Либо выполните в командной строке команду для каждого приложения:
kubectl -n <siem> rollout restart deployment <deployment-name>
Здесь:
-
<deployment-name>
— имя приложения.Затем проверьте состояние подов:
kubectl -n <siem> get pods
-
Смена секретного ключа пользователя MinIO
Чтобы обновить ключи пользователя MinIO:
-
Измените ключи MinIO:
После смены ключей сервисы, использующие MinIO, перестанут работать до обновления секретов в Kubernetes. -
Откройте секрет, выполнив команду:
kubectl -n <siem> get secret evo.siem.global
Здесь и далее:
-
<siem>
— пространство имен, в котором установлен кластер.
-
-
Сохраните значение ключей
S3_ACCESS_KEY
иS3_SECRET_KEY
. -
Раскодируйте значения ключей, выполнив для каждого ключа команду:
echo "<KeyInBase64>" | base64 -d
Здесь:
-
<KeyInBase64>
— закодированное в Base64 значение ключа, сохраненное на предыдущем шаге.
-
-
Зайдите в контейнер MinIO и измените пароль командами:
kubectl exec -it -n <siem> <minio-0> -- sh mc admin accesskey edit myminio <AccessKey> --secret-key "<NewSecretKey>"
Здесь и далее:
-
<minio-0>
— имя контейнера MinIO. -
<AccessKey>
— расшифрованное на предыдущем шаге значение ключа доступаS3_ACCESS_KEY
. -
<NewSecretKey>
— новое значение секретного ключа.
-
-
-
Поменяйте секреты Kubernetes, содержащие пароль, выполнив следующие действия для каждого секрета:
-
Откройте секрет для редактирования:
kubectl -n <siem> edit secret <secret-name>
Здесь:
-
<secret-name>
— имя секрета:evo.core.global
иevo.siem.global
.
-
-
Закодируйте секретный ключ в Base64, например, командой:
echo -n <NewSecretKey> | base64
-
Замените в секрете значение ключа
S3_SECRET_KEY
на значение, закодированное на предыдущем шаге. -
Проверьте, что значение ключа было обновлено, командой:
kubectl -n <siem> get secret <secret-name>
-
-
Подключитесь к кластеру с помощью Lens, перейдите в Workloads → Pods, выберите под MinIO и перезапустите его.
Либо выполните в командной строке команду для каждого приложения:
kubectl -n <siem> rollout restart statefulset minio
Затем проверьте состояние подов:
kubectl -n <siem> get pods