Guía completa de comandos y flujos de trabajo de HashiCorp Vault para gestión de secretos, cifrado y acceso seguro a datos sensibles.
Instalación y Configuración
| Comando | Descripción |
|---|
vault version | Mostrar versión de Vault |
vault server -dev | Iniciar servidor de desarrollo |
vault server -config=config.hcl | Comienza con el archivo de configuración |
vault status | Comprobar estado del servidor |
Autenticación e Inicio de Sesión
Autenticación Básica
| Comando | Descripción |
|---|
vault auth -method=userpass username=myuser | Iniciar sesión con nombre de usuario/contraseña |
vault auth -method=ldap username=myuser | Iniciar sesión con LDAP |
vault auth -method=github token=mytoken | Iniciar sesión con GitHub |
vault auth -method=aws | Iniciar sesión con AWS IAM |
vault auth -method=kubernetes | Login con Kubernetes |
Gestión de Tokens
| Comando | Descripción |
|---|
vault token create | Crear nuevo token |
vault token create -ttl=1h | Crear token con TTL |
vault token lookup | Buscar token actual |
vault token renew | Renovar token actual |
vault token revoke TOKEN | Revocar token específico |
Gestión de Secretos
Secretos de Clave-Valor (v2)
| Comando | Descripción |
|---|
vault kv put secret/myapp username=admin password=secret | Almacenar secreto |
vault kv get secret/myapp | Recuperar secreto |
vault kv get -field=password secret/myapp | Obtener campo específico |
vault kv delete secret/myapp | Eliminar secreto |
vault kv list secret/ | Listar secretos |
vault kv metadata get secret/myapp | Obtener metadata |
Versiones de Secretos
| Comando | Descripción |
|---|
vault kv put secret/myapp @data.json | Almacenar desde archivo JSON |
vault kv get -version=2 secret/myapp | Obtener versión específica |
vault kv rollback -version=1 secret/myapp | Rollback a la versión |
vault kv destroy -versions=2,3 secret/myapp | Destruir versiones |
vault kv undelete -versions=2 secret/myapp | Recuperar versiones |
Motor de Secretos de Base de Datos
Configuración de Base de Datos
| Comando | Descripción |
|---|
vault secrets enable database | Habilitar motor de base de datos |
vault write database/config/my-mysql-database plugin_name=mysql-database-plugin connection_url="\\{\\{username\\}\\}:\\{\\{password\\}\\}@tcp(localhost:3306)/" allowed_roles="my-role" username="vaultuser" password="vaultpass" | Configurar MySQL |
vault write database/roles/my-role db_name=my-mysql-database creation_statements="CREATE USER '\\{\\{name\\}\\}'@'%' IDENTIFIED BY '\\{\\{password\\}\\}';GRANT SELECT ON *.* TO '\\{\\{name\\}\\}'@'%';" default_ttl="1h" max_ttl="24h" | Crear rol |
Credenciales Dinámicas
| Comando | Descripción |
|---|
vault read database/creds/my-role | Generar credenciales de base de datos |
vault write database/rotate-root/my-mysql-database | Rotar credenciales root |
PKI (Infraestructura de Clave Pública)
Configuración de PKI
| Comando | Descripción |
|---|
vault secrets enable pki | Habilitar motor PKI |
vault secrets tune -max-lease-ttl=87600h pki | Establecer TTL máximo |
vault write pki/root/generate/internal common_name=example.com ttl=87600h | Generar CA raíz |
vault write pki/config/urls issuing_certificates="http://vault.example.com:8200/v1/pki/ca" crl_distribution_points="http://vault.example.com:8200/v1/pki/crl" | Configurar URLs |
Gestión de Certificados
| Comando | Descripción |
|---|
vault write pki/roles/example-dot-com allowed_domains=example.com allow_subdomains=true max_ttl=72h | Crear rol |
vault write pki/issue/example-dot-com common_name=test.example.com | Emitir certificado |
vault write pki/revoke serial_number=39:dd:2e:90:b7:23:1f:8d:d3:7d:31:c5:1b:da:84:d0:5b:65:31:58 | Revocar certificado |
Motor de Secretos de AWS
Configuración de AWS
| Comando | Descripción |
|---|
vault secrets enable aws | Habilitar motor AWS |
vault write aws/config/root access_key=AKIAI... secret_key=R4nm... | Configurar credenciales de root |
vault write aws/roles/my-role credential_type=iam_user policy_document=-<<EOF \\{...\\} EOF | Crear rol IAM |
Credenciales de AWS
| Comando | Descripción |
|---|
vault read aws/creds/my-role | Generar credenciales de AWS |
vault write aws/sts/my-role ttl=15m | Generar credenciales STS |
Motor de Secretos Transit
Configuración de Cifrado
| Comando | Descripción |
|---|
vault secrets enable transit | Habilitar motor de tránsito |
vault write transit/keys/my-key type=aes256-gcm96 | Crear clave de cifrado |
vault write transit/encrypt/my-key plaintext=$(base64 <<< "my secret data") | Encriptar datos |
vault write transit/decrypt/my-key ciphertext=vault:v1:8SDd3WHDOjf7mq69CyCqYjBXAiQQAVZRkFM13ok481zoCmHnSeDX9vyf7w== | Descifrar datos |
Gestión de Claves
| Comando | Descripción |
|---|
vault write transit/keys/my-key/rotate | Rotar clave de cifrado |
vault read transit/keys/my-key | Leer información clave |
vault write transit/rewrap/my-key ciphertext=vault:v1:... | Reenvolver con la última clave |
Políticas
Gestión de Políticas
| Comando | Descripción |
|---|
vault policy write my-policy policy.hcl | Crear/actualizar política |
vault policy read my-policy | Leer política |
vault policy list | Listar todas las políticas |
vault policy delete my-policy | Eliminar política |
Ejemplo de Política
# Read operation on the k/v secrets
path "secret/data/*" \\\\{
capabilities = ["read"]
\\\\}
# Write operation on the k/v secrets
path "secret/data/myapp/*" \\\\{
capabilities = ["create", "update"]
\\\\}
# Deny all access to secret/admin
path "secret/data/admin" \\\\{
capabilities = ["deny"]
\\\\}
Métodos de Autenticación
Habilitar Métodos de Autenticación
| Comando | Descripción |
|---|
vault auth enable userpass | Habilitar nombre de usuario/contraseña |
vault auth enable ldap | Habilitar LDAP |
vault auth enable github | Habilitar GitHub |
vault auth enable aws | Habilitar AWS IAM |
vault auth enable kubernetes | Habilitar Kubernetes |
Configurar Métodos de Autenticación
| Comando | Descripción |
|---|
vault write auth/userpass/users/myuser password=mypass policies=my-policy | Crear usuario |
vault write auth/ldap/config url="ldap://ldap.example.com" userdn="ou=Users,dc=example,dc=com" | Configurar LDAP |
vault write auth/github/config organization=myorg | Configurar GitHub |
Registro de Auditoría
Habilitar Dispositivos de Auditoría
| Comando | Descripción |
|---|
vault audit enable file file_path=/vault/logs/audit.log | Habilitar auditoría de archivos |
vault audit enable syslog | Habilitar auditoría de syslog |
vault audit list | Listar dispositivos de auditoría |
vault audit disable file/ | Deshabilitar dispositivo de auditoría |
Alta Disponibilidad y Clustering
Operaciones de Cluster
Would you like me to continue with the remaining translations?
| Comando | Descripción |
|---|
vault operator init | Inicializar clúster de Vault |
vault operator unseal | Desbloquear Vault |
vault operator seal | Sello Vault |
vault operator step-down | Dimitir como líder |
vault operator raft list-peers | Listar pares Raft |
| Comando | Descripción |
|---|
vault operator raft snapshot save backup.snap | Crear snapshot |
vault operator raft snapshot restore backup.snap | Restaurar snapshot |
Configuración del servidor
storage "consul" \\\\{
address = "127.0.0.1:8500"
path = "vault/"
\\\\}
listener "tcp" \\\\{
address = "0.0.0.0:8200"
tls_disable = 1
\\\\}
api_addr = "http://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
ui = true
seal "awskms" \\\\{
region = "us-east-1"
kms_key_id = "12345678-1234-1234-1234-123456789012"
\\\\}
```### Desactivación automática con AWS KMS
| Variable | Descripción |
|----------|-------------|
| `VAULT_ADDR` | Dirección del servidor Vault |
| `VAULT_TOKEN` | Token de autenticación |
| `VAULT_NAMESPACE` | Espacio de nombres de Vault (Enterprise) |
| `VAULT_CACERT` | Archivo de certificado CA |
| `VAULT_CLIENT_CERT` | Archivo de certificado de cliente |
| `VAULT_CLIENT_KEY` | Archivo de clave privada del cliente |## Variables de entorno
## Mejores prácticas
### Seguridad