HTTP API плагина базы данных Cassandra
Плагин базы данных Cassandra является одним из поддерживаемых плагинов для движка секретов базы данных. Этот плагин динамически генерирует учетные данные базы данных на основе настроенных ролей для базы данных Cassandra.
|
Данный движок может использовать внешние X.509 сертификаты в рамках TLS или проверки подписи. Проверка подписей по X.509 сертификатам, использующим SHA-1, устарела и больше не может использоваться без обходного пути. Дополнительную информацию смотрите в FAQ по устареванию. |
1. Настроить соединение
В дополнение к параметрам, определенным в Движке секретов баз данных, этот плагин имеет ряд параметров для более подробной настройки соединения.
| Метод | Путь |
|---|---|
|
|
2. Параметры
-
hosts(string: <обязательный>) – указывает набор хостов Cassandra, разделенных запятыми, к которым нужно подключиться. -
port(int: 9042) – указывает порт по умолчанию, который будет использоваться, если не указан в URI хоста. По умолчанию используется порт передачи Cassandra по умолчанию — 9042. -
username(string: <обязательный>) – указывает имя пользователя для доступа с правами суперпользователя. -
password(string: <обязательный>) – указывает пароль, соответствующий данному имени пользователя. -
tls(bool: true) – указывает, следует ли использовать TLS при подключении к Cassandra. -
insecure_tls(bool: false) – указывает, следует ли пропустить проверку сертификата сервера при использовании TLS. -
tls_server_name(string: "") – указывает имя, используемое в качестве SNI-хоста при подключении к серверу Cassandra через TLS. -
pem_bundle(string: "") – указывает объединенные PEM блоки, содержащие сертификат и закрытый ключ; сертификат, закрытый ключ и сертификат выдачи ЦА; или только сертификат ЦА. Может быть указан только один изpem_bundleилиpem_json. -
pem_json(string: "") – указывает JSON, содержащий сертификат и закрытый ключ; сертификат, закрытый ключ и сертификат выдачи ЦА; или только сертификат ЦА. Значение в этом поле должно быть закодированным JSON-объектом. Для удобства формат такой же, как и вывод команды issue из движка секретов pki; смотрите документацию по pki. Может быть указан только один изpem_bundleилиpem_json.
{
"certificate": "<клиентский сертификат в формате PEM>",
"private_key": "<закрытый ключ в формате PEM>",
"ca_chain": ["<ЦА в формате PEM>", "<Дополнительный PEM для цепочки ЦА, если необходимо"]
}
Если вы используете CLI StarVault, проще всего записать JSON в файл, а затем указать путь:
starvault write database/config/cassandra-example <...другие поля> pem_json=@/путь/к/файлу.json
-
skip_verification(bool: false) - пропустить проверки прав, когда соединение с Cassandra создается впервые. Эти проверки гарантируют, что StarVault сможет создавать роли, но могут быть ресурсоемкими в кластерах с большим количеством ролей. -
protocol_version(int: 2) – указывает версию протокола CQL для использования. -
connect_timeout(string: "5s") – указывает тайм-аут, который будет использован как для соединений, так и в общем. -
local_datacenter(string: "") – если установлено, включает политику выбора хостов, которая будет отдавать приоритет и использовать хосты, находящиеся в локальном датацентре, перед хостами во всех других датацентрах (например, dc-01). -
socket_keep_alive(string: "0s") – период keep-alive для активного сетевого соединения. Если ноль, keep-alive не включены. -
consistency(string: "") – указывает вариант согласованности, который следует использовать. См. определение gocql для допустимых вариантов. -
username_template(string) - шаблон, описывающий, как генерируются динамические имена пользователей.
{{ printf "v_%s_%s_%s_%s" (.DisplayName | truncate 15) (.RoleName | truncate 15) (random 20) (unix_time) | truncate 100 | replace "-" "_" | lowercase }}
|
|
|
|
Имя пользователя |
|
|
|
|
|
Имя пользователя |
|
2.1. Принцип работы TLS
-
Если
tlsустановлен вtrue, соединение будет использовать TLS; это происходит автоматически, если установленыpem_bundle,pem_jsonилиinsecure_tls. -
Если
insecure_tlsустановлен вtrue, соединение не будет выполнять проверку сертификата сервера; это также устанавливает tls вtrue. -
Если только
issuing_caустановлен вpem_json, или единственный сертификат вpem_bundleявляется сертификатом ЦА, предоставленный сертификат ЦА будет использоваться для проверки сертификата сервера; в противном случае будут использоваться системные сертификаты ЦА. -
Если
certificateиprivate_keyустановлены вpem_bundleилиpem_json, клиентская аутентификация будет включена для соединения.
|
|
{
"plugin_name": "cassandra-database-plugin",
"allowed_roles": "readonly",
"hosts": "cassandra1.local",
"username": "user",
"password": "pass"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/cassandra/config/connection
3. Операторы
Операторы настраиваются во время создания роли и используются плагином для определения того, что отправляется в базу данных при создании, обновлении и отзыве пользователя. Для получения дополнительной информации о настройке ролей смотрите API ролей в документации по движку секретов базы данных.
3.1. Параметры
Следующие операторы используются этим плагином. Если они не упоминаются в этом списке, плагин не поддерживает этот тип оператора.
-
creation_statements(list: []) – указывает SQL операторы базы данных, выполняемые для создания и настройки пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией или строкой JSON с сериализацией, закодированной в base64. Значения{{username}}и{{password}}будут подставлены. Если не указано, по умолчанию используется обычная программа создания пользователя, которая создает не суперпользователя. -
revocation_statements(list: []) – указывает SQL операторы базы данных, которые будут выполняться для отзыва пользователя. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение{{username}}будет подставлено. Если не указано, по умолчанию используется обычный оператор удаления пользователя. -
rollback_statements(list: []) – указывает SQL операторы базы данных, которые будут выполнены для отката операции создания в случае ошибки. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение{{username}}будет подставлено. Если не указано, по умолчанию используется обычный оператор удаления пользователя. -
root_rotation_statements(list: []) - указывает операторы базы данных, которые будут выполнены при ротации пароля пользователя root. Должен быть строкой, разделенной точкой с запятой, строкой, закодированной в base64, строковым массивом JSON с сериализацией, или строкой JSON с сериализацией, закодированной в base64. Значение{{username}}будет подставлено. Если не указано, по умолчанию используется обычный оператор изменения пользователя.