> For the complete documentation index, see [llms.txt](https://wiki.datadike.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.datadike.com/es/pam/administration/integrations/application-to-application.md).

# Acceso de aplicación a aplicación

Permitir que una herramienta obtenga la credencial de la bóveda en lugar de guardar una propia: registrar la aplicación, firmar la solicitud y el rastro que deja cada recuperación.

## Qué es esto y cuándo usarlo

A2A permite que **las herramientas**, y no las personas, obtengan credenciales de la bóveda. Un escáner, una canalización, un agente de monitoreo o una plataforma de ITSM pide la credencial en el momento en que la necesita, la usa y no guarda nada.

El problema que resuelve es la credencial que nadie rota: la contraseña en el `config.yaml`, la clave en la variable de Jenkins, la cuenta de servicio pegada en un escáner hace años. Esas credenciales son invisibles para la bóveda, así que la rotación nunca las alcanza y ningún informe puede decir quién las usó.

{% hint style="info" %}
**La dirección importa, y suele malinterpretarse.** La solución no se conecta hacia sus herramientas. Ella **publica una API que esas herramientas llaman**. El trabajo de integración ocurre del lado de quien llama, y no hace falta instalar nada dentro de la solución.
{% endhint %}

## Conceptos

| Término                       | Qué significa                                                                                                                                                |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Aplicación de integración** | La identidad con la que se autentica una herramienta. No es un usuario, no accede a la consola y no hace nada más que obtener las credenciales de su alcance |
| **ID y secreto**              | El par de credenciales con el que la aplicación firma sus solicitudes                                                                                        |
| **Alcance de cuentas**        | El conjunto de cuentas que esa aplicación puede leer. Lo que quede fuera no existe para ella                                                                 |
| **Grupo de IP**               | Las direcciones de origen desde las que la aplicación puede llamar                                                                                           |

Una aplicación pertenece a una organización y alcanza únicamente las cuentas de esa organización.

## Antes de empezar

* Un rol administrativo capaz de gestionar aplicaciones de integración.
* Las cuentas que la herramienta necesitará, ya gestionadas en la bóveda.
* Las direcciones de origen desde las que la herramienta llamará.

## Registrar una aplicación

1. Abra **Configuración del sistema › A2A** y cree una aplicación.
2. Póngale un **nombre** que diga de qué herramienta se trata. Ese nombre aparece en el rastro de auditoría, así que "escáner Tenable, producción" es mejor que "app1".
3. Defina las **cuentas** que puede leer. Conceda el conjunto más estrecho que permita a la herramienta funcionar.
4. Defina el **grupo de IP** con las direcciones desde las que llama la herramienta.
5. Guarde y revele el **secreto**. Revelarlo exige un segundo factor, y el valor se muestra para que quien llama lo copie.

{% hint style="danger" %}
**El grupo de IP permite cualquier dirección de forma predeterminada.** Una aplicación nueva es alcanzable desde cualquier sitio hasta que usted la restrinja. Definirlo es lo que convierte un secreto filtrado en una llamada rechazada desde la red equivocada.
{% endhint %}

Pedir el secreto de nuevo **sustituye el anterior**. Cualquier cliente que conserve el valor antiguo deja de autenticarse, así que rote a propósito, y no para averiguar cuál era.

## Obtener una credencial

```
GET /api/v1/accounts/integration-applications/account-secret/
```

| Parámetro    | Uso                                                        |
| ------------ | ---------------------------------------------------------- |
| `account_id` | El UUID de la cuenta. La forma más simple, usada sola      |
| `account`    | El nombre de la cuenta, cuando no se tiene el UUID         |
| `asset`      | El nombre del activo, para desambiguar un nombre de cuenta |
| `asset_id`   | El UUID del activo, con la misma finalidad                 |

La solicitud se firma con HTTP Signature, HMAC-SHA256, usando el ID de la aplicación como `keyId` y su secreto como clave. También lleva `X-Source: datadike-pam`, que es lo que indica a la solución que debe autenticar una aplicación y no la clave de acceso de un usuario.

```
Authorization: Signature keyId="<id de la aplicacion>",algorithm="hmac-sha256",
               headers="(request-target) date",signature="<base64>"
Date: Wed, 23 Sep 2026 20:44:35 GMT
X-Source: datadike-pam
X-PAM-ORG: <id de la organizacion>
```

Una llamada correcta responde con el secreto y nada más:

```json
{ "id": "<id de la aplicacion>", "secret": "<la credencial>" }
```

Para la construcción exacta de la cadena de firma, y los tres detalles que más suelen romperla, vea [API](/es/pam/reference/api.md).

### Clientes listos para usar

No hace falta implementar la firma. La solución sirve un cliente funcional y su documentación para seis lenguajes, en la pestaña **SDKs** de la aplicación: **Python, Java, Go, Node.js, PowerShell y curl**. Java, Go y PowerShell no requieren biblioteca externa.

### Códigos de respuesta

| Código | Significado                                                                               |
| ------ | ----------------------------------------------------------------------------------------- |
| 200    | La credencial está en el cuerpo                                                           |
| 400    | Los parámetros no identifican una única cuenta                                            |
| 401    | Firma rechazada, aplicación inactiva, o llamada desde una dirección fuera del grupo de IP |
| 404    | Ninguna cuenta coincide, o la cuenta está fuera del alcance de esa aplicación             |

## Integrar una herramienta que no habla esta API

Plataformas como **Aranda**, **SOTI**, **Tenable** o **Qualys** no saben firmar una solicitud de esta manera de forma nativa. Dos patrones funcionan, y ambos mantienen la credencial fuera de la configuración de la herramienta:

* **Un paso de obtención antes del trabajo.** Un script corto, construido a partir de uno de los clientes suministrados, obtiene la credencial y se la entrega a la herramienta en tiempo de ejecución. Es la opción habitual para canalizaciones y tareas de escaneo.
* **El mecanismo de extensión de la propia plataforma**, donde exista, llamando al endpoint anterior.

{% hint style="warning" %}
No existe un conector de encaje directo para esas plataformas. La solución expone una API documentada y suministra clientes de referencia; conectarla a una plataforma concreta es trabajo de integración del lado de ella. Planifique ese esfuerzo en lugar de suponer que es una casilla de verificación.
{% endhint %}

## Cada recuperación queda registrada

Cada obtención correcta escribe un registro de auditoría con el nombre de la aplicación, la cuenta y el activo al que pertenece, la dirección de origen y la hora. Cae en el mismo rastro que una persona pulsando *ver* sobre una credencial, que es lo que convierte "quién ha leído esta credencial" en una pregunta con respuesta completa.

Vea [Rastro de auditoría](/es/pam/administration/audit/audit-trail.md) y [La bóveda de credenciales](/es/pam/administration/accounts/vault.md).

## Cómo verificar que funcionó

1. **Obtenga una credencial** con el cliente suministrado y confirme que el cuerpo trae el secreto.
2. **Llame de nuevo desde una dirección fuera del grupo de IP** y confirme el rechazo. Una restricción de IP que nadie ha probado es una configuración, no un control.
3. **Pida una cuenta fuera del alcance de la aplicación** y confirme el 404. Es la comprobación que prueba que el alcance es real.
4. **Abra el rastro de auditoría** y confirme que tanto la llamada correcta como la rechazada están allí. Una recuperación que no deja rastro no es una recuperación, es una fuga.

## Errores comunes

| Síntoma                                                      | Causa                                                                                | Corrección                                                          |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
| 401 con una firma aparentemente correcta                     | La fecha se formateó en el idioma de la máquina, o el reloj está desfasado           | Formatee la fecha en inglés, en GMT, y sincronice el reloj del host |
| 401 desde un servidor, pero no desde su estación             | El grupo de IP no incluye ese servidor                                               | Añada la dirección                                                  |
| La llamada se autentica como usuario y no como la aplicación | Falta el `X-Source: datadike-pam`                                                    | Añada la cabecera                                                   |
| 404 para una cuenta que usted ve en la consola               | Está fuera del alcance de cuentas de la aplicación, o en otra organización           | Amplíe el alcance, o envíe el `X-PAM-ORG` correcto                  |
| Todos los clientes dejaron de funcionar a la vez             | El secreto se reveló de nuevo, lo que lo sustituye                                   | Distribuya el secreto nuevo                                         |
| 200, pero el secreto vuelve vacío                            | La lectura de secretos de cuenta está deshabilitada en la configuración de seguridad | Revise **Configuración del sistema › Seguridad**                    |

## Páginas relacionadas

* [API](/es/pam/reference/api.md), cómo firmar una solicitud y las convenciones comunes a todos los endpoints
* [La bóveda de credenciales](/es/pam/administration/accounts/vault.md), de donde leen estas llamadas
* [Cuentas gestionadas](/es/pam/administration/accounts/managed-accounts.md), las cuentas con las que se arma el alcance de una aplicación
* [Rotar credenciales](/es/pam/administration/accounts/rotation.md), por qué obtener es mejor que guardar
* [Rastro de auditoría](/es/pam/administration/audit/audit-trail.md), donde queda registrada cada recuperación
