Работа с паролями в кластере
При изменении паролей от систем хранения и баз данных нужно поменять соответствующие секреты в Kubernetes (Kubernetes Secrets) — объекты, которые хранят конфиденциальную информацию, такую как пароли и токены. Может также потребоваться перезапуск соответствующих приложений, чтобы они смогли повторно прочитать актуальные данные.
В случае с ClickHouse регистрационные данные обновляются через Consul — сервис, который хранит конфигурационные данные и позволяет централизованно управлять паролями и настройками.
Смена пароля пользователя ClickHouse
Чтобы обновить пароль пользователя ClickHouse:
-
Измените пароль ClickHouse, выполнив следующий запрос в консоли ClickHouse:
Пример 1. SQL-запросALTER USER <user> IDENTIFIED BY '<new_password>';
Здесь:
-
<user>
— имя пользователя. -
<new_password>
— новый пароль.
-
-
Если требуется изменить пароль пользователя writer, обновите пароль в блоке
<remote_servers>
в конфигурации кластера. -
Обновите ключ Consul:
-
Проверьте список существующих ключей.
consul kv get
-
Запишите новое значение в ключ, где хранится пароль, и проверьте обновление.
consul kv put <path_to_key> <new_password> consul kv get <path_to_key>
Здесь:
-
<path_to_key>
— путь к ключу, где хранится пароль. -
<new_password>
— новый пароль.
-
-
Смена пароля PostgreSQL
Чтобы обновить пароль PostgreSQL:
-
Подключитесь к кластеру с помощью Lens.
-
Перейдите в раздел Workloads → Pods.
-
Выберите под PostgreSQL и нажмите на кнопку терминала.
Также вы можете подключиться к контейнеру PostgreSQL с помощью командной строки:
kubectl exec -it -n <namespace> <postgresql_container> -- sh
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<postgresql_container>
— имя контейнера PostgreSQL.
-
-
Подключитесь к базе данных.
psql -U postgres -d auth
-
Выполните запрос для обновления пароля.
Пример 2. SQL-запросALTER USER <postgres_user> WITH PASSWORD '<new_password>';
Здесь:
-
<postgres_user>
— имя пользователя. -
<new_password>
— новый пароль.
После смены пароля сервисы, использующие PostgreSQL, перестанут работать до обновления секретов в Kubernetes. -
-
Поменяйте секреты Kubernetes, содержащие пароль, выполнив следующие действия для каждого секрета:
-
Откройте секрет для редактирования:
kubectl -n <namespace> edit secret <secret_name>
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<secret_name>
— имя секрета:evo.core.global
иevo.siem.global
.
-
-
Закодируйте пароль в Base64, например, командой:
echo -n <new_password> | base64
Здесь:
-
<new_password>
— новый пароль.
-
-
Замените в секрете значение ключа
POSTGRES_PASSWORD
на пароль, закодированный на предыдущем шаге. -
Проверьте, что значение ключа было обновлено, командой:
kubectl -n <namespace> get secret <secret_name>
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<secret_name>
— имя секрета:evo.core.global
иevo.siem.global
.
-
-
-
Перейдите в Workloads → 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 <namespace> rollout restart deployment <deployment_name>
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<deployment_name>
— имя деплоймента.
-
-
Проверьте состояние подов:
kubectl -n <namespace> get pods
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
Смена секретного ключа пользователя MinIO
Чтобы обновить ключи пользователя MinIO:
-
Измените ключи MinIO:
После смены ключей сервисы, использующие MinIO, перестанут работать до обновления секретов в Kubernetes. -
Откройте секрет, выполнив команду:
kubectl -n <namespace> get secret evo.siem.global
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
Сохраните значение ключей
S3_ACCESS_KEY
иS3_SECRET_KEY
. -
Раскодируйте значения ключей, выполнив для каждого ключа команду:
echo "<key_in_b64>" | base64 -d
Здесь:
-
<key_in_b64>
— закодированное в Base64 значение ключа, сохраненное на предыдущем шаге.
-
-
Зайдите в контейнер MinIO и измените пароль командами:
kubectl exec -it -n <namespace> <minio_container> -- sh mc admin accesskey edit myminio <access_key> --secret-key "<new_secret_key>"
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<minio_container>
— имя контейнера MinIO. -
<access_key>
— расшифрованное на предыдущем шаге значение ключа доступаS3_ACCESS_KEY
. -
<new_secret_key>
— новое значение секретного ключа.
-
-
-
Поменяйте секреты Kubernetes, содержащие пароль, выполнив следующие действия для каждого секрета:
-
Откройте секрет для редактирования:
kubectl -n <namespace> edit secret <secret_name>
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<secret_name>
— имя секрета:evo.core.global
иevo.siem.global
.
-
-
Закодируйте секретный ключ в Base64, например, командой:
echo -n <new_secret_key> | base64
Здесь:
-
<new_secret_key>
— новое значение секретного ключа.
-
-
Замените в секрете значение ключа
S3_SECRET_KEY
на значение, закодированное на предыдущем шаге. -
Проверьте, что значение ключа было обновлено, командой:
kubectl -n <namespace> get secret <secret_name>
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер. -
<secret_name>
— имя секрета:evo.core.global
иevo.siem.global
.
-
-
-
Подключитесь к кластеру с помощью Lens, перейдите в Workloads → Pods, выберите под MinIO и перезапустите его.
Либо выполните в командной строке следующую команду:
kubectl -n <namespace> rollout restart statefulset minio
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-
-
Проверьте состояние подов:
kubectl -n <namespace> get pods
Здесь:
-
<namespace>
— имя пространства имен, в котором установлен кластер.
-