# Vault Secrets Engines Guide ## KV Secrets Engine (v2) ### Enable and Configure ```bash # Enable KV v2 vault secrets enable -path=secret kv-v2 # Write secret vault kv put secret/myapp/config \ db_host="postgres.example.com" \ db_user="myapp" \ db_password="secret123" # Read secret vault kv get secret/myapp/config vault kv get -field=db_password secret/myapp/config # List secrets vault kv list secret/myapp/ # Delete secret vault kv delete secret/myapp/config # Versioning vault kv get -version=1 secret/myapp/config vault kv rollback -version=1 secret/myapp/config ``` ## Database Secrets Engine ### Setup Dynamic Credentials ```bash # Enable database engine vault secrets enable database # Configure PostgreSQL vault write database/config/myapp-db \ plugin_name=postgresql-database-plugin \ allowed_roles="myapp-role" \ connection_url="postgresql://{{username}}:{{password}}@postgres:5432/myapp?sslmode=disable" \ username="vault_admin" \ password="admin_password" # Create role vault write database/roles/myapp-role \ db_name=myapp-db \ creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; \ GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \ default_ttl="1h" \ max_ttl="24h" # Generate credentials vault read database/creds/myapp-role ``` ## AWS Secrets Engine ### Setup Dynamic AWS Credentials ```bash # Enable AWS engine vault secrets enable aws # Configure root credentials vault write aws/config/root \ access_key=AKIAXXXXXXXX \ secret_key=xxxxxxxx \ region=us-east-1 # Create role vault write aws/roles/deploy-role \ credential_type=iam_user \ policy_document=-<