# Rotación de contraseñas

> Haz que Ironchip genere y cambie las contraseñas de servidores, escritorios y bases de datos según un calendario, tras cada sesión y con la complejidad que elijas.

URL: https://docs.ironchip.com/pam/boveda/rotacion/

Esta página explica cómo hacer que Ironchip gestione la contraseña de un recurso: que la genere, que nadie la conozca y que la cambie sola según un calendario y después de cada sesión. Es para quien administra los recursos de PAM.

## Antes de empezar

- El recurso es **SSH**, **RDP**, **PostgreSQL** o **MySQL**. VNC, Kubernetes y HTTP no tienen una contraseña que Ironchip pueda rotar.
- Necesitas el permiso **PAM targets, sites and agents** con la operación **Update** (y **PAM control and password policies** para la complejidad de la compañía). Consulta [Puesta en marcha](https://docs.ironchip.com/pam/administracion/primeros-pasos/).
- Según quién cambia la contraseña, prepara antes:

  | Cuenta                                                               | Quién cambia la contraseña                                                                       | Qué necesitas                                                                                                                  |
  | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
  | Usuario de PostgreSQL o MySQL                                        | El almacén de secretos, conectado a la base de datos                                             | Una cuenta de administración de la base de datos (**Admin account** y **Admin password**) con permiso para cambiar contraseñas |
  | Cuenta local de un servidor Linux o Windows                          | El [agente](https://docs.ironchip.com/pam/administracion/agente/) de la máquina, con una contraseña que genera el almacén | El enforcer instalado y arrancado con `-rotate-accounts` y el nombre de la cuenta                                              |
  | Cuenta de dominio (`DOMINIO\cuenta`, `cuenta@dominio` o con dominio) | El almacén, en el directorio de la compañía                                                      | El [directorio](https://docs.ironchip.com/pam/administracion/directorio/) configurado en **PAM > Hosts > Directory**                                    |

## Activar la rotación

La rotación se activa al elegir el método **Managed by Ironchip: nobody types or sees it** en el recurso.

1. Ve a **PAM > Hosts > Targets** y abre **Options > Edit target** en el recurso, o crea uno nuevo con **Add target**.
2. En **How the broker proves itself**, elige **Managed by Ironchip: nobody types or sees it** en **Method**.
3. En una base de datos, escribe **Admin account** y **Admin password**: el almacén entra con esa cuenta y cambia en ese momento la contraseña de la cuenta del recurso. Solo el almacén guarda la cuenta de administración.
4. Haz clic en **Save** (o **Add target**).

La rotación empieza al guardar, con el calendario por defecto: **cada día y después de cada sesión**.

:::caution[Cuentas locales: hasta la primera contraseña nadie entra]
En una cuenta local de Linux o Windows es el enforcer de la máquina quien pone la contraseña. Mientras no ponga la primera, el recurso muestra **Waiting for the machine to set its first password** y nadie puede conectarse. Comprueba que el enforcer está instalado y que `-rotate-accounts` incluye esa cuenta: una cuenta que no esté en la lista nunca se cambia, aunque Ironchip lo pida.
:::

## Elegir el calendario

En la página del recurso, la pestaña **Credential** muestra la rotación:

[Imagen: Pestaña Credential de un recurso con la cuenta, quién la cambia, la frecuencia y la próxima rotación]

| Campo            | Qué indica                                                                                                                                                       |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Account**      | La cuenta cuya contraseña se cambia.                                                                                                                             |
| **Changed by**   | Quién la cambia: la base de datos, el enforcer de la máquina o el directorio. En una cuenta de dominio, todos los recursos que entran con ella reciben la nueva. |
| **How often**    | El calendario (**Changed**) y si además se cambia después de cada sesión.                                                                                        |
| **Last changed** | Cuándo se cambió por última vez.                                                                                                                                 |
| **Next**         | Cuándo toca la siguiente. Si la máquina tiene un cambio pendiente, aparece **Now** con el estado.                                                                |
| **Last attempt** | Si el último intento falló, el motivo. Ironchip lo reintenta a los pocos minutos.                                                                                |

Para cambiarlo:

1. En **Changed**, elige **Every hour**, **Every 8 hours**, **Every day**, **Every week** o **Every 30 days**.
2. Usa **Also after every session** o **Not after sessions** para decidir si también se cambia cuando termina la última sesión abierta en esa cuenta.
3. Si necesitas cambiarla ya, haz clic en **Rotate now**.

Elige el calendario según la criticidad del recurso. Una pauta habitual:

| Criticidad | Ejemplo                                           | Calendario                              |
| ---------- | ------------------------------------------------- | --------------------------------------- |
| Alta       | Servidores y bases de datos de producción         | **Every hour** y después de cada sesión |
| Media      | Escritorios de soporte, entornos de preproducción | **Every day** y después de cada sesión  |
| Baja       | Laboratorio, máquinas de formación                | **Every week**                          |

Un recurso **Managed by Ironchip** siempre rota: no se puede detener. Para dejar de rotar, cambia su método en **Edit target**.

:::note
Mientras alguien tiene la contraseña sacada con un [checkout](https://docs.ironchip.com/pam/boveda/checkouts/), la rotación programada y la de después de cada sesión esperan. Cuando la devuelve o vence el plazo, la contraseña se cambia.
:::

## Complejidad de las contraseñas

La complejidad decide cómo genera Ironchip las contraseñas que pone. Por defecto son de 24 caracteres, con al menos 2 minúsculas, 2 mayúsculas, 2 dígitos y 2 símbolos de `!#%+-=?^_~`.

Para cambiarla en toda la compañía:

1. Ve a **PAM > Hosts > Password complexity**.

   [Imagen: Página Password complexity con la longitud, los tipos de carácter y los símbolos permitidos]

2. Elige la longitud (**Length**, de 12 a 128 caracteres) y, para cada tipo de carácter, si se usa y cuántos como mínimo (**At least**).
3. En **Symbols that may appear**, marca los símbolos que admiten tus sistemas. Ironchip nunca usa dos puntos, comillas, barra invertida, espacio, `$`, `{` ni `}`.
4. Haz clic en **Save**. **Use Ironchip's default** vuelve a la complejidad por defecto.

Para un recurso concreto, en su pestaña **Credential**, sección **Password complexity**, elige **Its own** y guárdala. Las cuentas de dominio siempre usan la de la compañía.

La complejidad nueva se aplica en el siguiente cambio: la contraseña puesta ahora sigue hasta que rote.

:::tip
Windows rechaza contraseñas con menos de tres tipos de carácter cuando tiene activa su regla de complejidad. Deja activos al menos tres.
:::

## Otras credenciales

Estas credenciales también viven en el almacén, pero se cambian cuando lo pides:

- La cuenta con la que el almacén entra en el directorio: **Change its password** en **PAM > Hosts > Directory**.
- Las credenciales de AWS, Google Cloud y Azure: **Change its key** o **Change its client secret** en **PAM > Secrets > Credentials**.
- La credencial de un workload: **Replace credential** en **PAM > Secrets > Workloads**.

Después del cambio, solo el almacén conoce la credencial nueva.

## Problemas frecuentes

| Síntoma                                                            | Qué hacer                                                                                                                                                             |
| ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **This machine has no enforcer, so its password does not change.** | Instala el [enforcer](https://docs.ironchip.com/pam/administracion/agente/) en la máquina y arráncalo con `-rotate-accounts` y la cuenta.                                                      |
| Se queda en **Waiting for the machine to set a new password**      | El enforcer consulta cada 30 segundos. Comprueba que está en marcha y que la cuenta está en `-rotate-accounts`. Mientras tanto, el broker usa la contraseña anterior. |
| No aparece **Managed by Ironchip**                                 | El protocolo no lo admite: solo SSH, RDP, PostgreSQL y MySQL.                                                                                                         |
| Una cuenta de dominio no se puede gestionar                        | Configura antes el [directorio](https://docs.ironchip.com/pam/administracion/directorio/).                                                                                                     |
