Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

HTTP API плагина базы данных MySQL/MariaDB

Плагин базы данных MySQL является одним из поддерживаемых плагинов для движка секретов базы данных. Этот плагин динамически генерирует учетные данные базы данных на основе настроенных ролей для базы данных MySQL.

Этот движок может использовать внешние X.509 сертификаты в рамках TLS или проверки подписи. Проверка подписей по X.509 сертификатам, использующим SHA-1, устарела и больше не может использоваться без обходного пути.

1. Настройка соединения

В дополнение к параметрам, определенным в статье, этот плагин имеет ряд параметров для дальнейшей настройки соединения.

Метод Путь

POST

/database/config/:name

1.1. Параметры

  • connection_url (string: <обязательный>) - указывает DSN MySQL. Это поле может использовать шаблоны и поддерживает передачу параметров имени пользователя и пароля в следующем формате {{field_name}}. Шаблонная строка соединения обязательна при использовании ротации учетных данных root.

  • 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, используемый в строке соединения.

  • tls_certificate_key (string: "") - x509 сертификат для подключения к базе данных. Это должен быть PEM-кодированный вид закрытого ключа и сертификата, объединенных вместе.

  • tls_ca (string: "") - x509 файл ЦА для проверки сертификата, представленного MySQL сервером. Должен быть PEM-кодированным.

  • tls_server_name (string: "") - указывает альтернативное имя субъекта, которое должно быть представлено в сертификате сервера.

  • tls_skip_verify (boolean: false) - если установлено в true, отключает проверку сертификата сервера. Установка этого значения в true не рекомендуется для производственной среды.

  • username_template (string) - шаблон, описывающий, как генерируются динамические имена пользователей.

  • disable_escaping (boolean: false) - отключает экранирование специальных символов в полях имени пользователя и пароля. См. документацию движка секретов баз данных для получения дополнительной информации. По умолчанию значение false.

1.2. Шаблоны имен пользователей по умолчанию

mysql-database-plugin
{{ printf "v-%s-%s-%s-%s" (.DisplayName | truncate 10) (.RoleName | truncate 10) (random 20) (unix_time) | truncate 32 }}
Таблица 1. Пример имен пользователей:

DisplayName

token

RoleName

myrolename

Username

v-token-myrolename-jNFRlKsZZMxJE

Таблица 2. Пример имен пользователей:

DisplayName

amuchlonger_dispname

RoleName

role-name-with-dashes

Username

v-amuchlonge-role-name—​LUHU9xqm

mysql-aurora-database-plugin, mysql-rds-database-plugin, mysql-legacy-database-plugin
{{ printf "v-%s-%s-%s" (.RoleName | truncate 4) (random 20) | truncate 16 }}
Таблица 3. Пример имен пользователей:

DisplayName

token

RoleName

myrolename

Username

v-myro-jNFRlKsZZ

Таблица 4. Пример имен пользователей:

DisplayName

amuchlonger_dispname

RoleName

role-name-with-dashes

Username

v-role-b9ODeKsfl

Пример тела запроса:
{
  "plugin_name": "mysql-database-plugin",
  "allowed_roles": "readonly",
  "connection_url": "{{username}}:{{password}}@tcp(127.0.0.1:3306)/",
  "max_open_connections": 5,
  "max_connection_lifetime": "5s",
  "username": "root",
  "password": "mysql"
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/database/config/mysql

2. Операторы

Операторы настраиваются во время создания роли и используются плагином для определения того, что отправляется в базу данных при создании, обновлении и отзыве пользователя.

2.1. Параметры

Следующие операторы используются этим плагином. Если они не упоминаются в этом списке, плагин не поддерживает этот тип оператора.

  • creation_statements (list: <обязательный>) - указывает SQL операторы, выполняемые для создания и настройки пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значения {{name}} и {{password}} будут подставлены. Сгенерированный пароль будет случайной алфавитно-цифровой строкой длиной 20 символов.

  • revocation_statements (list: []) - указывает SQL операторы, которые будут выполняться для отзыва пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение {{name}} будет подставлено. Если не указано, по умолчанию используется общий оператор удаления пользователя.