Работа с паролями в кластере

При изменении паролей от систем хранения и баз данных нужно поменять соответствующие секреты в Kubernetes (Kubernetes Secrets) — объекты, которые хранят конфиденциальную информацию, такую как пароли и токены. Может также потребоваться перезапуск соответствующих приложений, чтобы они смогли повторно прочитать актуальные данные.

В случае с ClickHouse регистрационные данные обновляются через Consul — сервис, который хранит конфигурационные данные и позволяет централизованно управлять паролями и настройками.

Смена пароля пользователя ClickHouse

Чтобы обновить пароль пользователя ClickHouse:

  1. Измените пароль ClickHouse, выполнив запрос с ALTER USER.

    Пример 1. SQL-запрос
    ALTER USER <user> IDENTIFIED BY '<NewPassword>';

    Здесь и далее:

    • <user> — имя пользователя;

    • <NewPassword> — новый пароль.

  2. (При изменении пароля пользователя writer.) Обновите пароль в блоке <remote_servers> в конфигурации кластера.

  3. Обновите ключ Consul:

    1. Проверьте список существующих ключей.

      consul kv get
    2. Запишите новое значение в ключ, где хранится пароль, и проверьте обновление.

      consul kv put <PathToKey> <NewPassword>
      consul kv get <PathToKey>

      Здесь:

      • <PathToKey> — путь к ключу, где хранится пароль.

Смена пароля PostgreSQL

Чтобы обновить пароль PostgreSQL:

  1. Подключитесь к кластеру с помощью Lens, перейдите в Workloads → Pods, выберите под PostgreSQL и нажмите на кнопку терминала.

    Либо зайдите в контейнер PostgreSQL в командной строке:

    kubectl exec -it -n <siem> <postgresql-0> -- sh

    Здесь и далее:

    • <siem> — пространство имен, в котором установлен кластер;

    • <postgresql-0> — имя контейнера PostgreSQL.

  2. Подключитесь к базе данных.

    psql -U postgres -d auth
  3. Выполните запрос для обновления пароля.

    Пример 2. SQL-запрос
    ALTER USER <postgres-user> WITH PASSWORD '<NewPassword>';

    Здесь и далее:

    • <postgres-user> — имя пользователя (может быть другим);

    • <NewPassword> — пример пароля.

      После смены пароля сервисы, использующие PostgreSQL, перестанут работать до обновления секретов в Kubernetes.
  4. Поменяйте секреты Kubernetes, содержащие пароль, выполнив следующие действия для каждого секрета:

    1. Откройте секрет для редактирования:

      kubectl -n <siem> edit secret <secret-name>

      Здесь:

      • <secret-name> — имя секрета: evo.core.global и evo.siem.global.

    2. Закодируйте пароль в Base64, например, командой:

      echo -n <NewPassword> | base64
    3. Замените в секрете значение ключа POSTGRES_PASSWORD на пароль, закодированный на предыдущем шаге.

    4. Проверьте, что значение ключа было обновлено, командой:

      kubectl -n <siem> get secret <secret-name>
  5. Перейдите в 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:

  1. Измените ключи MinIO:

    После смены ключей сервисы, использующие MinIO, перестанут работать до обновления секретов в Kubernetes.
    1. Откройте секрет, выполнив команду:

      kubectl -n <siem> get secret evo.siem.global

      Здесь и далее:

      • <siem> — пространство имен, в котором установлен кластер.

    2. Сохраните значение ключей S3_ACCESS_KEY и S3_SECRET_KEY.

    3. Раскодируйте значения ключей, выполнив для каждого ключа команду:

      echo "<KeyInBase64>" | base64 -d

      Здесь:

      • <KeyInBase64> — закодированное в Base64 значение ключа, сохраненное на предыдущем шаге.

    4. Зайдите в контейнер 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> — новое значение секретного ключа.

  2. Поменяйте секреты Kubernetes, содержащие пароль, выполнив следующие действия для каждого секрета:

    1. Откройте секрет для редактирования:

      kubectl -n <siem> edit secret <secret-name>

      Здесь:

      • <secret-name> — имя секрета: evo.core.global и evo.siem.global.

    2. Закодируйте секретный ключ в Base64, например, командой:

      echo -n <NewSecretKey> | base64
    3. Замените в секрете значение ключа S3_SECRET_KEY на значение, закодированное на предыдущем шаге.

    4. Проверьте, что значение ключа было обновлено, командой:

      kubectl -n <siem> get secret <secret-name>
  3. Подключитесь к кластеру с помощью Lens, перейдите в Workloads → Pods, выберите под MinIO и перезапустите его.

    Либо выполните в командной строке команду для каждого приложения:

    kubectl -n <siem> rollout restart statefulset minio

    Затем проверьте состояние подов:

    kubectl -n <siem> get pods