mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 04:28:08 +00:00 
			
		
		
		
	* Update consul secrets engine docs and api-docs * Update databases secrets engine docs and api-docs
		
			
				
	
	
		
			151 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
---
 | 
						||
layout: api
 | 
						||
page_title: PostgreSQL - Database - Secrets Engines - HTTP API
 | 
						||
description: >-
 | 
						||
  The PostgreSQL plugin for Vault's database secrets engine generates database
 | 
						||
  credentials to access PostgreSQL servers.
 | 
						||
---
 | 
						||
 | 
						||
# PostgreSQL Database Plugin HTTP API
 | 
						||
 | 
						||
The PostgreSQL database plugin is one of the supported plugins for the database
 | 
						||
secrets engine. This plugin generates database credentials dynamically based on
 | 
						||
configured roles for the PostgreSQL database.
 | 
						||
 | 
						||
## Configure Connection
 | 
						||
 | 
						||
In addition to the parameters defined by the [Database
 | 
						||
Backend](/api/secret/databases#configure-connection), this plugin
 | 
						||
has a number of parameters to further configure a connection.
 | 
						||
 | 
						||
| Method | Path                     |
 | 
						||
| :----- | :----------------------- |
 | 
						||
| `POST` | `/database/config/:name` |
 | 
						||
 | 
						||
### Parameters
 | 
						||
 | 
						||
- `connection_url` `(string: <required>)` - Specifies the PostgreSQL DSN. This field
 | 
						||
  can be templated and supports passing the username and password
 | 
						||
  parameters in the following format `{{field_name}}`. Certificate authentication
 | 
						||
  can be used by setting `?sslinline=true` and giving the SSL credentials in the
 | 
						||
  `sslrootcert`, `sslcert` and `sslkey` credentials. A templated connection URL
 | 
						||
  is required when using root credential rotation.
 | 
						||
 | 
						||
- `max_open_connections` `(int: 4)` - Specifies the maximum number of open
 | 
						||
  connections to the database.
 | 
						||
 | 
						||
- `max_idle_connections` `(int: 0)` - Specifies the maximum number of idle
 | 
						||
  connections to the database. A zero uses the value of `max_open_connections`
 | 
						||
  and a negative value disables idle connections. If larger than
 | 
						||
  `max_open_connections` it will be reduced to be equal.
 | 
						||
 | 
						||
- `max_connection_lifetime` `(string: "0s")` - Specifies the maximum amount of
 | 
						||
  time a connection may be reused. If <= `0s`, connections are reused forever.
 | 
						||
 | 
						||
- `username` `(string: "")` - The root credential username used in the connection URL.
 | 
						||
 | 
						||
- `password` `(string: "")` - The root credential password used in the connection URL.
 | 
						||
 | 
						||
- `username_template` `(string)` - [Template](/docs/concepts/username-templating) describing how
 | 
						||
  dynamic usernames are generated.
 | 
						||
 | 
						||
- `disable_escaping` `(boolean: false)` - Turns off the escaping of symbol characters inside of the username
 | 
						||
  and password fields. See the [databases secrets engine docs](/docs/secrets/databases#disable-character-escaping)
 | 
						||
  for for information. Defaults to `false`.
 | 
						||
 | 
						||
<details>
 | 
						||
<summary><b>Default Username Template</b></summary>
 | 
						||
 | 
						||
```
 | 
						||
{{ printf "v-%s-%s-%s-%s" (.DisplayName | truncate 8) (.RoleName | truncate 8) (random 20) (unix_time) | truncate 63 }}
 | 
						||
```
 | 
						||
 | 
						||
<details>
 | 
						||
<summary><b>Example Usernames:</b></summary>
 | 
						||
 | 
						||
| Example       |                                                    |
 | 
						||
| ------------- | -------------------------------------------------- |
 | 
						||
| `DisplayName` | `token`                                            |
 | 
						||
| `RoleName`    | `myrolename`                                       |
 | 
						||
| Username      | `v-token-myrolena-jNFRlKsZZMxJEx60o66i-1614294836` |
 | 
						||
 | 
						||
| Example       |                                                       |
 | 
						||
| ------------- | ----------------------------------------------------- |
 | 
						||
| `DisplayName` | `amuchlonger_dispname`                                |
 | 
						||
| `RoleName`    | `role-name-with-dashes`                               |
 | 
						||
| Username      | `v-amuchlon-role-nam-LUHU9xqm6YNisikA3iCQ-1614294836` |
 | 
						||
 | 
						||
</details>
 | 
						||
</details>
 | 
						||
 | 
						||
### Sample Payload
 | 
						||
 | 
						||
```json
 | 
						||
{
 | 
						||
  "plugin_name": "postgresql-database-plugin",
 | 
						||
  "allowed_roles": "readonly",
 | 
						||
  "connection_url": "postgresql://{{username}}:{{password}}@localhost:5432/postgres",
 | 
						||
  "max_open_connections": 5,
 | 
						||
  "max_connection_lifetime": "5s",
 | 
						||
  "username": "username",
 | 
						||
  "password": "password"
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
### Sample Request
 | 
						||
 | 
						||
```shell-session
 | 
						||
$ curl \
 | 
						||
    --header "X-Vault-Token: ..." \
 | 
						||
    --request POST \
 | 
						||
    --data @payload.json \
 | 
						||
    http://127.0.0.1:8200/v1/database/config/postgresql
 | 
						||
```
 | 
						||
 | 
						||
## Statements
 | 
						||
 | 
						||
Statements are configured during role creation and are used by the plugin to
 | 
						||
determine what is sent to the database on user creation, renewing, and
 | 
						||
revocation. For more information on configuring roles see the [Role
 | 
						||
API](/api/secret/databases#create-role) in the database secrets engine docs.
 | 
						||
 | 
						||
### Parameters
 | 
						||
 | 
						||
The following are the statements used by this plugin. If not mentioned in this
 | 
						||
list the plugin does not support that statement type.
 | 
						||
 | 
						||
- `creation_statements` `(list: <required>)` – Specifies the database
 | 
						||
  statements executed to create and configure a user. Must be a
 | 
						||
  semicolon-separated string, a base64-encoded semicolon-separated string, a
 | 
						||
  serialized JSON string array, or a base64-encoded serialized JSON string
 | 
						||
  array. The `{{name}}`, `{{password}}` and `{{expiration}}` values will be
 | 
						||
  substituted. The generated password will be a random alphanumeric 20 character
 | 
						||
  string.
 | 
						||
 | 
						||
- `revocation_statements` `(list: [])` – Specifies the database statements to
 | 
						||
  be executed to revoke a user. Must be a semicolon-separated string, a
 | 
						||
  base64-encoded semicolon-separated string, a serialized JSON string array, or
 | 
						||
  a base64-encoded serialized JSON string array. The `{{name}}` value will be
 | 
						||
  substituted. If not provided defaults to a generic drop user statement.
 | 
						||
 | 
						||
- `rollback_statements` `(list: [])` – Specifies the database statements to be
 | 
						||
  executed rollback a create operation in the event of an error. Not every
 | 
						||
  plugin type will support this functionality. Must be a semicolon-separated
 | 
						||
  string, a base64-encoded semicolon-separated string, a serialized JSON string
 | 
						||
  array, or a base64-encoded serialized JSON string array. The `{{name}}` value
 | 
						||
  will be substituted.
 | 
						||
 | 
						||
- `renew_statements` `(list: [])` – Specifies the database statements to be
 | 
						||
  executed to renew a user. Not every plugin type will support this
 | 
						||
  functionality. Must be a semicolon-separated string, a base64-encoded
 | 
						||
  semicolon-separated string, a serialized JSON string array, or a
 | 
						||
  base64-encoded serialized JSON string array. The `{{name}}` and
 | 
						||
  `{{expiration}}` values will be substituted.
 | 
						||
 | 
						||
- `rotation_statements` `(list: [])` – Specifies the database statements to be
 | 
						||
  executed to rotate the password for a given username. Must be a
 | 
						||
  semicolon-separated string, a base64-encoded semicolon-separated string, a
 | 
						||
  serialized JSON string array, or a base64-encoded serialized JSON string
 | 
						||
  array. The `{{name}}` and `{{password}}` values will be substituted. The
 | 
						||
  generated password will be a random alphanumeric 20 character string.
 |