mirror of
https://github.com/hashicorp/vault.git
synced 2025-11-25 20:51:43 +01:00
Add documentation for new rootless password rotation workflow for DB Static Roles (#28374)
Co-authored-by: John-Michael Faircloth <fairclothjm@users.noreply.github.com> Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com>
This commit is contained in:
parent
69411d7925
commit
08e8776dfb
@ -534,6 +534,11 @@ this in order to know the password.
|
|||||||
- `username` `(string: <required>)` – Specifies the database username that this
|
- `username` `(string: <required>)` – Specifies the database username that this
|
||||||
Vault role corresponds to.
|
Vault role corresponds to.
|
||||||
|
|
||||||
|
- `self_managed_password` `(string)` – <EnterpriseAlert product="vault" inline />
|
||||||
|
The password corresponding to the username in the database. Required when using
|
||||||
|
the Rootless Password Rotation workflow for static roles. Only enabled for select
|
||||||
|
DB engines (Postgres).
|
||||||
|
|
||||||
- `db_name` `(string: <required>)` - The name of the database connection to use
|
- `db_name` `(string: <required>)` - The name of the database connection to use
|
||||||
for this role.
|
for this role.
|
||||||
|
|
||||||
|
|||||||
@ -51,6 +51,10 @@ has a number of parameters to further configure a connection.
|
|||||||
|
|
||||||
- `password` `(string: "")` - The root credential password used in the connection URL.
|
- `password` `(string: "")` - The root credential password used in the connection URL.
|
||||||
|
|
||||||
|
- `self_managed` `(boolean: "false")` - <EnterpriseAlert product="vault" inline /> If
|
||||||
|
set, allows onboarding static roles with a rootless connection configuration. Mutually
|
||||||
|
exclusive with `username` and `password`. If set, will force `verify_connection` to be false.
|
||||||
|
|
||||||
- `tls_ca` `(string: "")` - The x509 CA file for validating the certificate
|
- `tls_ca` `(string: "")` - The x509 CA file for validating the certificate
|
||||||
presented by the PostgreSQL server. Must be PEM encoded.
|
presented by the PostgreSQL server. Must be PEM encoded.
|
||||||
|
|
||||||
|
|||||||
@ -24,9 +24,9 @@ options, including SSL options, can be found in the [pgx][pgxlib] and
|
|||||||
|
|
||||||
## Capabilities
|
## Capabilities
|
||||||
|
|
||||||
| Plugin Name | Root Credential Rotation | Dynamic Roles | Static Roles | Username Customization |
|
| Plugin Name | Root Credential Rotation | Dynamic Roles | Static Roles | Username Customization | Credential Types |
|
||||||
| ---------------------------- | ------------------------ | ------------- | ------------ | ---------------------- |
|
| ---------------------------- | ------------------------ | ------------- | ------------ | ---------------------- | ---------------------------- |
|
||||||
| `postgresql-database-plugin` | Yes | Yes | Yes | Yes (1.7+) |
|
| `postgresql-database-plugin` | Yes | Yes | Yes | Yes (1.7+) | password, gcp_iam |
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
@ -84,6 +84,70 @@ the proper permission, it can generate credentials.
|
|||||||
username v-vaultuse-my-role-x
|
username v-vaultuse-my-role-x
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Rootless Configuration and Password Rotation for Static Roles
|
||||||
|
|
||||||
|
<EnterpriseAlert product="vault" />
|
||||||
|
|
||||||
|
The PostgreSQL secrets engine supports using Static Roles and its password rotation mechanisms with a Rootless
|
||||||
|
DB connection configuration. In this workflow, a static DB user can be onboarded onto Vault's static role rotation
|
||||||
|
mechanism without the need of privileged root accounts to configure the connection. Instead of using a single root
|
||||||
|
connection, multiple dedicated connections to the DB are made for each static role. This workflow does not support
|
||||||
|
dynamic roles/credentials.
|
||||||
|
|
||||||
|
~> Note: It is **highly recommended** that the DB users being onboarded as static roles
|
||||||
|
have the minimum set of privileges. Each static role will open a new connection into the DB.
|
||||||
|
Granting minimum privileges to the DB users being onboarded ensures that multiple
|
||||||
|
highly-privileged connections to an external system are not being made.
|
||||||
|
|
||||||
|
~> Note: Out-of-band password rotations will cause Vault to be out of sync with the state of
|
||||||
|
the DB user, and will require manually updating the user's password in the external PostgreSQL
|
||||||
|
DB in order to resolve any errors encountered during rotation.
|
||||||
|
|
||||||
|
1. Enable the database secrets engine if it is not already enabled:
|
||||||
|
|
||||||
|
```shell-session
|
||||||
|
$ vault secrets enable database
|
||||||
|
Success! Enabled the database secrets engine at: database/
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, the secrets engine will enable at the name of the engine. To
|
||||||
|
enable the secrets engine at a different path, use the `-path` argument.
|
||||||
|
|
||||||
|
1. Configure connection to DB without root credentials and enable the rootless
|
||||||
|
workflow by setting the `self_managed` parameter:
|
||||||
|
|
||||||
|
```shell-session
|
||||||
|
$ vault write database/config/my-postgresql-database \
|
||||||
|
plugin_name="postgresql-database-plugin" \
|
||||||
|
allowed_roles="my-role" \
|
||||||
|
connection_url="postgresql://{{username}}:{{password}}@localhost:5432/database-name" \
|
||||||
|
self_managed=true
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Configure a static role that creates a dedicated connection to a user in the DB with
|
||||||
|
the `self_managed_password` parameter:
|
||||||
|
|
||||||
|
```shell-session
|
||||||
|
$ vault write database/static-roles/my-static-role \
|
||||||
|
db_name="my-postgresql-database" \
|
||||||
|
username="staticuser" \
|
||||||
|
self_managed_password="password" \
|
||||||
|
rotation_period="1h"
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Read static credentials:
|
||||||
|
|
||||||
|
```shell-session
|
||||||
|
$ vault read database/static-creds/static-test
|
||||||
|
Key Value
|
||||||
|
--- -----
|
||||||
|
last_vault_rotation 2024-09-11T14:15:13.764783-07:00
|
||||||
|
password XZY42BVc-UO5bMsbgxrW
|
||||||
|
rotation_period 1h
|
||||||
|
ttl 59m55s
|
||||||
|
username staticuser
|
||||||
|
```
|
||||||
|
|
||||||
## Client x509 certificate authentication
|
## Client x509 certificate authentication
|
||||||
|
|
||||||
This plugin supports using PostgreSQl's [x509 Client-side Certificate Authentication](https://www.postgresql.org/docs/16/libpq-ssl.html#LIBPQ-SSL-CLIENTCERT).
|
This plugin supports using PostgreSQl's [x509 Client-side Certificate Authentication](https://www.postgresql.org/docs/16/libpq-ssl.html#LIBPQ-SSL-CLIENTCERT).
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user