Шифрование и аутентификация etcd

Примечание!
Перед выполнением любых операций настоятельно рекомендуется создать резервную копию файлов конфигурации из каталога /etc/matrixdb6 в другой каталог или обратиться в техническую поддержку YMatrix.

При обновлении после переустановки RPM-пакета YMatrix перезапустите службу supervisor на всех узлах следующей командой:

sudo systemctl restart matrixdb6.supervisor.service

Быстрый старт

Базовый рабочий процесс

  1. Остановите кластер базы данных:
    mxstop -af
  2. Включите TLS-сертификаты для etcd:
    supervisorctl enable-etcd-credential
  3. Запустите кластер базы данных:
    mxstart -a

Проверка текущего состояния

Выполните etcdctl с указанием сертификатов:

  • Команда:

    etcdctl --endpoints="$ETCD_ENDPOINTS" \
    --cacert "$MXCONFDIR/etcd_credential/ca.crt" \
    --cert   "$MXCONFDIR/etcd_credential/client.crt" \
    --key    "$MXCONFDIR/etcd_credential/client.key" \
    --write-out=table endpoint status
  • Пример вывода:

    [mxadmin@ip-172-31-35-209 ~]$ etcdctl --endpoints="https://172.31.35.209:4679,https://172.31.32.54:4679,https://172.31.47.1:4679" \
    >     --cacert "$MXCONFDIR/etcd_credential/ca.crt" \
    >     --cert   "$MXCONFDIR/etcd_credential/client.crt" \
    >     --key    "$MXCONFDIR/etcd_credential/client.key" \
    >     --write-out=table endpoint status
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    |          ENDPOINT          |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    | https://172.31.35.209:4679 | 67e0d780ecd95b3b |  3.5.20 |  164 kB |     false |      false |         4 |        473 |                473 |        |
    |  https://172.31.32.54:4679 | 9c2d17a0b36aed50 |  3.5.20 |  164 kB |      true |      false |         4 |        473 |                473 |        |
    |   https://172.31.47.1:4679 | 5fa5b306916e2d84 |  3.5.20 |  164 kB |     false |      false |         4 |        473 |                473 |        |
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

Каталог конфигурации по умолчанию — /etc/matrixdbX.

  • Проверьте endpoints etcd (HTTP/HTTPS):

    grep -n "etcd_endpoints" "/etc/matrixdb6/physical_cluster.toml"

    Пример:

    [mxadmin@ip-127-1-1-1 ~]$ grep -n "etcd_endpoints" "/etc/matrixdb6/physical_cluster.toml"
    4:etcd_endpoints = ['https://127.1.1.1:4679', 'https://127.1.1.1:4679', 'https://127.1.1.1:4679']
  • Убедитесь в наличии TLS-учётных данных:

    ls -la "/etc/matrixdb6/etcd_credential"

    Пример:

    [mxadmin@ip-127-1-1-1 ~]$ ls -la "/etc/matrixdb6/etcd_credential"
    total 28
    drwx------. 2 mxadmin mxadmin  123 Jan 22 03:26 .
    drwxr-xr-x. 6 root    root     288 Jan 22 01:52 ..
    -rw-------. 1 mxadmin mxadmin 1846 Jan 22 02:47 ca.crt
    -rw-------. 1 mxadmin mxadmin 3272 Jan 22 02:47 ca.key
    -rw-------. 1 mxadmin mxadmin 1513 Jan 22 02:47 client.crt
    -rw-------. 1 mxadmin mxadmin 1708 Jan 22 02:47 client.key
    -rw-------. 1 mxadmin mxadmin  407 Jan 22 01:52 meta.json
    -rw-------. 1 mxadmin mxadmin 1558 Jan 22 02:47 server.crt
    -rw-------. 1 mxadmin mxadmin 1704 Jan 22 02:47 server.key

Как определить, включён ли TLS:
TLS включён: в файле physical_cluster.toml указаны endpoints с префиксом https://..., и в каталоге /etcd_credential присутствуют файлы ca.crt, ca.key, server.crt, server.key, client.crt и client.key.
TLS отключён: endpoints используют префикс http://..., и каталог /etcd_credential отсутствует.

Включение TLS для etcd (генерация сертификатов)

supervisorctl enable-etcd-credential

Откат на HTTP (отключение сертификатов)

supervisorctl enable-etcd-credential --rollback

Подробности команд

Включение TLS для etcd

  • Команда:

    supervisorctl enable-etcd-credential
  • Результаты выполнения:

    • Останавливаются все службы, кроме supervisord.
    • Генерируются файлы сертификатов в каталоге /etcd_credential.
    • Обновляется файл /service/etcd.conf: URL клиента заменяется на https://, включается параметр --client-cert-auth.
    • Обновляется файл physical_cluster.toml: endpoints заменяются на https://....
    • Все службы перезапускаются единообразно.
  • Пример вывода:

    [mxadmin@ip-127-1-1-1 ~]$ supervisorctl enable-etcd-credential
    EnableEtcdCredential succeeded.

Откат на HTTP

  • Команда:

    supervisorctl enable-etcd-credential --rollback
  • Сценарии использования:

    1. Включение TLS завершилось ошибкой, автоматический откат не сработал; требуется полное восстановление режима HTTP.
    2. TLS уже включён, но необходимо временно вернуться к работе без сертификатов.
  • Результаты выполнения:

    1. Восстанавливается файл /service/etcd.conf: удаляются параметры, связанные с TLS, URL клиента меняется с https:// обратно на http://.
    2. Обновляется файл physical_cluster.toml: endpoints возвращаются к формату http://....
    3. Удаляются локальные учётные данные: каталог /etcd_credential удаляется.
  • Пример вывода:

    [mxadmin@ip-127-1-1-1 ~]$ supervisorctl enable-etcd-credential --rollback
    EnableEtcdCredential succeeded.