
# keenauth_management_client

El recurso `keenauth_management_client` define el acceso a la API de administración de una aplicación con `app_type = "management"`: los permisos y la lista de IP permitidas con los que el cliente de máquina a máquina de la aplicación puede llamar a la API de administración. Una aplicación tiene como máximo un registro, y el registro se identifica por el ID de la aplicación.

## Privilegio mínimo

Este recurso concede acceso a la API de administración. Manténgalo acotado:

- Incluya solo los permisos que necesita la automatización, por ejemplo `users:read` en lugar de todos los permisos `users:*`.
- Restrinja `allowed_cidrs` a las redes en las que se ejecuta el cliente.
- Use una aplicación de administración por automatización, de modo que cada una pueda reducirse o eliminarse por separado.

La clave de API que aplica la configuración solo puede conceder permisos y redes que ella misma tenga.

```terraform
resource "keenauth_application" "ops" {
  key      = "ops-automation"
  name     = "Ops automation"
  app_type = "management"
  party    = "first_party"
}

resource "keenauth_management_client" "ops" {
  application_id = keenauth_application.ops.id
  permissions    = ["users:read", "applications:read"]
  allowed_cidrs  = ["203.0.113.0/24"]
}
```

## Claves de firma

El recurso no contiene ningún secreto ni ninguna clave. Registre la clave pública de la aplicación con `POST /v1/applications/{application_id}/credentials` (`type: public_key`) en la CLI o en el panel. La API rechaza `jwks_uri` y `public_keys` en este recurso.

## `allowed_cidrs` en el plan

- Si omite `allowed_cidrs` al crear el registro, la API escribe la lista propia de la clave de API que realiza la llamada. Si la clave no tiene lista, el cliente no tiene ninguna restricción de IP. El plan muestra `(known after apply)`.
- Una vez que el registro existe, omitir el atributo conserva el valor actual. Quitarlo de la configuración no restablece la lista, y un cambio realizado fuera de la configuración se acepta sin diferencias. Escriba la lista de forma explícita para gestionarla.
- Una lista vacía se rechaza en el momento del plan, porque la API convierte `[]` en la lista de la clave que realiza la llamada. Omita el atributo en su lugar.
- Escriba cada bloque en forma canónica: la dirección de red y los IPv6 en minúsculas. Por ejemplo, escriba `10.0.0.0/24`, no `10.0.0.5/24`.

## Errores

| Error | Significado |
|---|---|
| `403 insufficient_permissions` | Solo una clave de API puede gestionar estos registros; use un proveedor configurado con `api_key`, no con `client_id` + `private_key`. Con una clave de API, a una clave restringida le falta `management-clients:read` o `management-clients:write`. |
| `403 permission_escalation` | El registro tendría permisos o redes que la clave de API no tiene. |
| `404` al crear | La aplicación no existe en el entorno de la clave de API. |
| `409` | La aplicación ya tiene un registro. Impórtelo. |
| `422` en `application_id` | La aplicación no es de tipo `management`. |
| `412` | El registro cambió después del plan. No se cambió nada; ejecute `plan` de nuevo. |

## Importación

Importe por ID de aplicación:

```shell
tofu import keenauth_management_client.ops app_01j9zq3v8c5m2x7k4t6r1n0b3d
```
