PostgreSQL это один из поддерживаемых плагинов для механизма секретов баз данных. Этот плагин генерирует учетные данные базы данных динамически на основе настроенных ролей для базы данных PostgreSQL, а также поддерживает Static Roles.

Смотрите database secrets engine документацию для получения дополнительной информации о настройке механизма секретов базы данных.

Возможности

Имя плагина Изменение Root учетной записи Динамические роли Статические роли Кастомизация имени пользователя
postgresql-database-plugin Да Да Да Да

Установка

Включите механизм секретов базы данных, если он еще не включен:

$ d8 stronghold secrets enable database
Success! Enabled the database secrets engine at: database/

По умолчанию механизм секретов будет включаться на основе его имени. Чтобы включить механизм секретов по другому пути, используйте аргумент -path.

Настройте Stronghold с помощью соответствующего плагина и информации о подключении:

$ d8 stronghold write database/config/my-postgresql-database \
  plugin_name="postgresql-database-plugin" \
  allowed_roles="my-role" \
  connection_url="postgresql://:@localhost:5432/database-name" \
  username="strongholduser" \
  password="strongholdpass" \
  password_authentication="scram-sha-256"

Настройте роль, которая сопоставляет имя в Stronghold SQL-запросом, выполняемым для создания учетной записи базы данных:

$ d8 stronghold write database/roles/my-role \
  db_name="my-postgresql-database" \
  creation_statements="CREATE ROLE \"\" WITH LOGIN PASSWORD '' VALID UNTIL ''; \
      GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"\";" \
  default_ttl="1h" \
  max_ttl="24h"
Success! Data written to: database/roles/my-role

Использование

После того как механизм секретов настроен и у пользователя/машины есть токен Stronghold с соответствующими правами, он может генерировать учетные данные.

Сгенерируйте новую учетную запись, используя /creds и имя роли:

$ d8 stronghold read database/creds/my-role
Key                Value
---                -----
lease_id           database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
lease_duration     1h
lease_renewable    true
password           SsnoaA-8Tv4t34f41baD
username           v-strongholduse-my-role-x