Администрирование секретов#
Последовательность выполнения#
Внимание
При использовании KV движка обязательно использование второй версии (KV2)
Настройки для консоли grdl-console.conf и воркера grdl-module.conf в ConfigMap в среде k8s#
Конфигурационные параметры для среды VM описаны в разделе Установка RPLW на VM
Имя |
Компоненты |
Описание |
Тип |
Значение по-умолчанию |
Ограничения |
|---|---|---|---|---|---|
grdl-hot-reload-enable |
Console/Worker |
Включение/выключение работы с секретами |
boolean |
true |
Значение этого параметра в текущей версии должно быть одинаковым для воркера и консоли |
grdl-hot-reload-fail-safe-enable |
Console/Worker |
Переключение стратегий: true - fail-safe, false - fail-fast |
boolean |
true |
|
grdl-hot-reload-retry-count |
Console/Worker |
Количество попыток повторно прочитать и применить секрет при неудаче |
int |
10 |
Влияет на приложение только при включенном fail-fast, иначе количество попыток прочитать и применить секрет не ограничено |
grdl-hot-reload-poll-interval |
Console/Worker |
Время в миллисекундах, через которое происходит попытка обновления секретов, если произошло обновление |
int |
5000 |
|
grdl-hot-reload-pg-secret-path |
Console |
Путь до файла на диске с секретом от базы конфигураций |
string |
||
grdl-console.hot-reload-audit-secret-path |
Console |
Путь до файла на диске с секретом для Аудита |
string |
||
grdl-hot-reload-dir-kafka |
Worker |
Путь до директории на диске с директориями с секретами от Kafka |
string |
/vault/secrets/kafka |
|
grdl-hot-reload-dir-postgres |
Worker |
Путь до директории на диске с директориями с секретами от Postgres |
string |
/vault/secrets/databases |
fail-safe (рекомендуется): Приложение продолжает использовать старые секреты, если обновление секретов или зависимых от них объектов завершилось с ошибкой.
fail-fast: Приложение завершает работу, если обновление секретов или зависимых от них объектов завершилось с ошибкой и попытки повторного чтения исчерпаны.
Правила названия секретов для воркера на k8s#
Имя файла, содержащего секрет для БД, должно содержать
db, например,db-1.properties.Имя файла, содержащего PEM цепочку сертификатов (ssl.keystore.certificate.chain), должно содержать
kafka_cert.Имя файла, содержащего PEM truststore (ssl.truststore.certificates), должно содержать
kafka_cacert.Имя файла, содержащего PEM private key (ssl.keystore.key), должно содержать
kafka_private-key.В названии директории, куда записывается файл с секретом, должна быть уникальная часть сетевого адреса ресурса.
Например, если настройка grdl-hot-reload-dir-postgres по умолчанию равна /vault/secrets/databases и есть две БД со следующими адресами:
jdbc:postgresql://vm-gdev-db-psql-143.vdc11.db.dev.sbt:5432/postgres;jdbc:postgresql://vm-gdev-db-psql-144.vdc11.db.dev.sbt:5432/postgres;
будет два секрета по следующим путям:
/vault/secrets/databases/vm-gdev-db-psql-143.vdc11.db.dev.sbt/db-1.txt;/vault/secrets/databases/vm-gdev-db-psql-144.vdc11.db.dev.sbt/db-2.txt.
Настройка аннотаций Vault Sidecar на k8s#
Создайте группу аннотаций для каждой БД как в примере для db-1.properties:
vault.hashicorp.com/agent-inject: 'true'включает инъекцию секретов с помощью Vault Agent.vault.hashicorp.com/agent-inject-secret-db-1.properties: 'true'включает инъекцию секретаdb-1.properties.vault.hashicorp.com/secret-volume-path-db-1.properties: /vault/secrets/databases/vm-gdev-db-psql-143.vdc11.db.dev.sbtзадает путь в файловой системе контейнера, куда будет помещен секретdb-1.properties.vault.hashicorp.com/agent-inject-template-db-1.properties: | {{- with secret "<secret_path>/GRDL/KV2/vm-gdev-db-psql-143" -}} JDBC_USER={{ .Data.data.USER }} JDBC_PASSWORD={{ .Data.data.PASSWORD }} {{ end -}}задает шаблон для файла
db-1.properties, для которого выполняется инъекция.JDBC_USER и JDBC_PASSWORD не меняются: эти ключи в файле ищет воркер для обновления секрета.
vault.hashicorp.com/agent-inject-file-db-1.properties: db-1.propertiesуказывает имя файла, который будет создан для секретаdb-1.properties.
Настройте аналогичные аннотации для Kafka, для трех файлов:
kafka_cert;
kafka_cacert;
kafka_private-key.
Три файла лежат в одной директории, ассоциированной с адресом брокера, например:
/vault/secrets/kafka/vm-gdev-db-kafka-120.vdc11.db.dev.sbt.
Для секрета Kafka шаблон инъекции будет отличаться, так как необходимо value секрета записать как бинарный файл:
vault.hashicorp.com/agent-inject-template-kafka_cacert-1.pem: |
{{- with secret "<secret_path>/GRDL/KV2/vm-gdev-db-kafka-120" -}}
{{ .Data.data.truststore }}
{{ end -}}
vault.hashicorp.com/agent-inject-template-kafka_cert-1.pem: |
{{- with secret "<secret_path>/GRDL/KV2/vm-gdev-db-kafka-120" -}}
{{ .Data.data.keystore }}
{{ end -}}
vault.hashicorp.com/agent-inject-template-kafka_private-key-1.pem: |
{{- with secret "<secret_path>/GRDL/KV2/vm-gdev-db-kafka-120" -}}
{{ .Data.data.key }}
{{ end -}}
Секрет для Аудита аналогичен секрету БД, но отличаются названия полей
AUDIT_SALT=some_salt
AUDIT_PASSWORD=some_password
Результат#
Работоспособность секретов для воркеров можно проверить с помощью тестирования соединение: если тестирование соединения к БД/Kafka успешно, значит секреты настроены правильно.