HTTP API плагина базы данных PostgreSQL
Плагин базы данных PostgreSQL является одним из поддерживаемых плагинов для движка секретов базы данных. Этот плагин динамически генерирует учетные данные базы данных на основе настроенных ролей для базы данных PostgreSQL.
1. Настроить соединение
В дополнение к параметрам, определенным в Движке секретов баз данных, этот плагин имеет несколько параметров для дальнейшей настройки соединения.
| Метод | Путь |
|---|---|
|
|
1.1. Параметры
-
connection_url(string: <обязательный>)- указывает DSN PostgreSQL. Это поле может использовать шаблоны и поддерживает передачу параметров имени пользователя и пароля в формате{{field_name}}. Аутентификация с помощью сертификатов может быть использована, установив?sslmode=в любое из применимых значений, указанных в документации PostgreSQL и предоставляя учетные данные SSL в параметрахsslrootcert,sslcertиsslkey. Шаблонная строка соединения требуется при использовании ротации учетных данных root. Это поле поддерживает как строковые форматы, так и форматы URI, а также формат "ключ/значение". Оба формата поддерживают несколько строк соединений для хостов. В связи с тем, как работаетpgx, параметры, такие какsslrootcert,sslcert,sslkey, рассматриваются как пути на сервере StarVault. -
max_open_connections(int: 4)- указывает максимальное количество открытых соединений с базой данных. -
max_idle_connections(int: 0)- указывает максимальное количество неактивных соединений с базой данных. Значение 0 использует значениеmax_open_connectionsи отрицательное значение отключает неактивные соединения. Если больше, чемmax_open_connections, оно будет уменьшено до этого значения. -
max_connection_lifetime(string: "0s")- указывает максимальное время, в течение которого соединение может быть повторно использовано. Если ≤ 0s, соединения используются навсегда. -
username(string: "")- имя пользователя учетных данных root, используемое в строке соединения. -
password(string: "")- пароль учетных данных root, используемый в строке соединения. -
username_template(string)- шаблон, описывающий, как генерируются динамические имена пользователей. -
disable_escaping(boolean: false)- отключает экранирование специальных символов в полях имени пользователя и пароля. См. документацию движка секретов баз данных для получения дополнительной информации. По умолчанию значениеfalse. -
password_authentication(string: "password")- при установке на "scram-sha-256" пароли будут хешироваться StarVault и храниться в PostgreSQL как есть. Использование "scram-sha-256" требует минимальной версии PostgreSQL 10. Доступные варианты: "scram-sha-256" и "password". По умолчанию используется "password". При установке на "password" пароли будут отправляться в PostgreSQL в открытом виде и могут появляться в логах PostgreSQL, как есть. Для получения дополнительной информации, смотрите документацию PostgreSQL.
{
"plugin_name": "postgresql-database-plugin",
"allowed_roles": "readonly",
"connection_url": "{{username}}:{{password}}@localhost:5432/postgres",
"max_open_connections": 5,
"max_connection_lifetime": "5s",
"username": "username",
"password": "password"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/database/config/postgresql
1.2. Строки соединений с несколькими хостами
PostgreSQL поддерживает несколько хостов в строке соединения. Примером использования может быть настройка PostgreSQL с Replication Manager. Однако есть некоторые правила форматирования, которые следует учитывать при использовании этой функции. Пожалуйста, обратитесь к разделу "Указание нескольких хостов" официальной документации PostgreSQL для получения дополнительной информации. Ниже приведены два примера.
{
"connection_url": "postgresql://{{username}}:{{password}}@hostone:5432,hosttwo:5432,hostthree:9999/postgres"
}
{
"connection_url": "host=hostone,hosttwo,hostthree port=5432,5432,9999 user={{username}} password={{password}} dbname=postgres"
}
2. Операторы
Операторы настраиваются во время создания роли и используются плагином для определения того, что отправляется в базу данных при создании, обновлении и отзыве пользователя. Для получения дополнительной информации о настройке ролей смотрите API ролей в документации по движку секретов базы данных.
2.1. Параметры
Следующие операторы используются этим плагином. Если они не упоминаются в этом списке, плагин не поддерживает этот тип оператора.
-
creation_statements(list: <обязательный>)- указывает SQL операторы, выполняемые для создания и настройки пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значения{{name}},{{password}}и{{expiration}}будут подставлены. Сгенерированный пароль будет случайной алфавитно-цифровой строкой длиной 20 символов. -
revocation_statements(list: [])- указывает SQL операторы, которые будут выполняться для отзыва пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение{{name}}будет подставлено. Если не указано, по умолчанию используется общий оператор удаления пользователя. -
rollback_statements(list: [])- указывает SQL операторы, которые будут выполняться для отката операции создания в случае ошибки. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение{{name}}будет подставлено. Если не указано, по умолчанию используется оператор удаления пользователя. -
renew_statements(list: [])- указывает SQL операторы, которые будут выполняться для обновления пользователя. Не каждый тип плагина будет поддерживать эту функциональность. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение{{name}}и{{expiration}}будут подставлены. -
rotation_statements(list: [])- указывает SQL операторы, которые будут выполнены для ротации пароля для данного имени пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией или строкой JSON с сериализацией, закодированной в base64. Значения{{name}}и{{password}}будут подставлены. Сгенерированный пароль будет случайной алфавитно-цифровой строкой длиной 20 символов.