Comparar los eventos de Security posture almacenados con los resultados actuales
Una vez al día, compara las actividades de atestación que tu SIEM ha almacenado con los resultados actuales del endpoint y decide qué discrepancias necesitan a una persona.
El Activity Feed puede entregar una actividad con retraso, y el endpoint no guarda historial, así que cada fuente puede mostrar un cambio que la otra no muestra. Una comparación diaria encuentra lo que le falta a tu almacén de “security information and event management” (gestión de información y eventos de seguridad), o SIEM. El Activity Feed no registra todos los cambios, así que una atestación puede ser anterior a la primera actividad del Activity Feed para su control de seguridad, y en casos poco frecuentes un cambio no tiene ninguna actividad. Si solo informas de los resultados actuales, no necesitas la comprobación.
Necesitas una Compliance Access Key que cubra la organización, con read:compliance_org_data para el endpoint y read:compliance_activities para el Activity Feed, o read:org_audit para ambos.
Ejecutar la comprobación
Inicia cada ejecución después de que termine la relectura diaria del día, para que las actividades tardías ya estén almacenadas.
- Lista las organizaciones vinculadas con Listar organizaciones. Obtienes el
uuidde cada una. - Llama al endpoint una vez por cada organización. Obtienes un 200, o un 404 en cada ejecución para una organización a la que el endpoint no da servicio (consulta Disponibilidad de Security posture). Un 404 significa que la organización no se lee en esta ejecución. Mantén una lista de las organizaciones que devuelven un 200, cada una con el
evaluated_atde su primera respuesta 200: tu primera ejecución para la organización. - Aparta lo que indican las reglas de exclusión.
- Agrupa las actividades de atestación almacenadas restantes de la organización por control de seguridad y toma la más reciente según
created_atde cada uno. Obtienes una actividad por cada control, o ninguna. - Para cada control que quede, busca su fila en la tabla de decisión. Obtienes Coincide, Esperado o Investigar.
- Actúa sobre un Investigar solo cuando la siguiente ejecución que lee la organización lo vuelva a mostrar; actúa sobre la fila 6 de inmediato, y para las filas 10 y 11 sigue en cambio las reglas de registros sustitutos. Una ejecución que no leyó la organización ni cuenta ni reinicia la espera.
Espacia tus llamadas y gestiona un 429 como se describe en 429 Too Many Requests; una organización cuyas llamadas fallan tras tus reintentos no se lee en esta ejecución, y una llamada fallida no es un cambio.
Emparejar los campos
Empareja una entrada de la respuesta con una actividad almacenada mediante estos campos.
| En la respuesta | En la actividad | Cómo se relacionan |
|---|---|---|
organization_id | organization_uuid | El mismo valor; el propio organization_id de la actividad lleva el prefijo org_. |
controls[].id | control | El mismo identificador, salvo lo indicado en la regla S2. |
attestation.attested_at | created_at de la actividad attested, changed o renewed más reciente | El mismo momento cuando la respuesta muestra la atestación; compáralos como marcas de tiempo, no como cadenas. |
status | status | Mientras la atestación está vigente, attested_completed se empareja con completed, y attested_accepted_risk y failed_check_accepted_risk con accepted_risk; nada se empareja con control_failed. |
Apartar lo que no se puede comparar
Antes de comparar, aparta lo siguiente.
| # | Qué | Regla |
|---|---|---|
| S1 | Una actividad de atestación almacenada cuyo action no es attested, changed, renewed, cleared ni lapsed | Déjala fuera de toda la comprobación; marca cada nuevo valor de action para revisión una vez. |
| S2 | Una actividad de atestación almacenada que nombra mdm_cowork_required_organization | Cuéntala como una de mdm_chat_required_organization. |
| S3 | Una actividad de atestación almacenada cuyo control no tiene entrada en la respuesta | Nada que comparar; informa del control como ausente de la respuesta, nunca como Superado (passed). |
| S4 | Una entrada cuyo status es descriptive, not_applicable o not_evaluated | Omítela; una ejecución en la que es not_evaluated no cuenta para ese control. |
Decidir qué significa cada discrepancia
Cada control que queda encaja exactamente en una fila.
| # | Actividad almacenada más reciente | Entrada en la respuesta | Dictamen | Qué hacer |
|---|---|---|---|---|
| 1 | attested, changed o renewed | attested_at es igual a su created_at; state es in_force; status se empareja con su valor. | Coincide | Nada. |
| 2 | cleared | attestation es null, salvo lo indicado en la fila 11. | Coincide | Nada. |
| 3 | lapsed, con Riesgo aceptado (accepted_risk) | attestation es null, o tiene la marca de tiempo de la actividad anterior con state check_passing o setting_changed. | Coincide | Nada. |
| 4 | lapsed, con completed o control_failed | attestation es null. | Coincide | Nada. |
| 5 | attested, changed o renewed | attested_at es igual a su created_at; state es review_due, check_passing o setting_changed. | Esperado | No vigente: actúa una vez ante cada nueva situación, sin esperar una actividad; un regreso a in_force lo reinicia. |
| 6 | attested, changed o renewed, con Completado (completed) y un created_at posterior a tu primera ejecución | En la primera ejecución que compara la actividad, attestation es null y status es failed con un current_value. | Investigar | La página Security posture puede mostrar como Superado un control cuya verificación no se cumple: marca el control para revisión, sin esperar. |
| 7 | attested, changed o renewed, con completed | attestation es null; status no es ni not_attested ni failed con un current_value null; la fila 6 no encaja. | Esperado | Nada que comparar; la respuesta nunca lo muestra. |
| 8 | attested, changed o renewed, como Fallido (control_failed) | attestation es null; status es uno de estos tres: failed; cualquier estado que dé la verificación automática; o, a partir de la fecha de finalización (review_date, en UTC), not_attested. | Esperado | Nada que comparar; actúa una vez cuando status deje de ser failed a partir de la fecha de finalización. |
| 9 | attested, changed o renewed, con accepted_risk | attestation es null, y status es passed, matches_profile o exceeds_baseline. | Esperado | Almacena un registro sustituto (regla de registros sustitutos 7). |
| 10 | Ninguna, o todas las actividades almacenadas son anteriores a attested_at | attestation está presente. | Investigar | Sigue las reglas de registros sustitutos. |
| 11 | Ninguna, o una cuyo valor no es control_failed | current_value es null, y status es failed. | Investigar | A tu almacén le falta una atestación como Fallido (control_failed): sigue las reglas de registros sustitutos y actúa una vez cuando status deje de ser failed. |
| 12 | attested, changed, renewed o cleared, posterior a attested_at, con otra actividad de casi el mismo momento | attestation está presente. | Esperado | Los cambios realizados casi al mismo tiempo pueden almacenarse en cualquier orden. |
| 13 | Lo mismo, sin esa segunda actividad | attestation está presente. | Investigar | Contacta con el soporte de Anthropic una sola vez. |
| 14 | attested, changed o renewed | attested_at es igual a su created_at; state es in_force; status no se empareja con su valor. | Investigar | Contacta con el soporte de Anthropic una sola vez. |
| 15 | attested, changed o renewed; ninguna fila anterior encaja | attestation es null. | Investigar | Lo más probable es que la atestación se haya borrado: almacena un registro sustituto (regla de registros sustitutos 7) y marca para revisión una sola vez. |
| 16 | Ninguna | attestation es null, y la fila 11 no encaja. | Coincide | Nada. |
| 17 | Cualquier otra | Cualquier otra. | Investigar | Marca para revisión una vez. |
Conservar un registro sustituto cuando las dos fuentes no se pueden emparejar
Un registro sustituto ocupa el lugar de lo que le falta a una de las dos fuentes, y lo mantienes separado de tus actividades almacenadas. Para las filas 10 y 11, vuelve a leer el Activity Feed, y almacena y marca el registro sustituto solo si no llega nada dentro de 15 días, el alcance de la relectura diaria. En tu primera ejecución, almacénalo de inmediato, sin revisión.
Registros sustitutos de la fila 10, identificados por el control y attested_at:
- Vuelve a leer desde tu actividad almacenada más reciente para el control, o desde
attested_atinclusive si no has almacenado ninguna; los 15 días cuentan desdeattested_at. Construye el registro sustituto a partir de la entrada, marcado como sin actividad; en la tabla de decisión, léelo como una actividadattesteden eseattested_atcuyo valor se empareja con sustatus, si lo hay. - En cada ejecución que muestre la atestación, actualiza su
statusy sustate. - Cuando llegue una actividad cuyo
created_atsea igual a eseattested_at, reemplaza el registro sustituto por ella. - Cuando dos ejecuciones seguidas no muestren la atestación, resuelve el registro sustituto; marca eso para revisión salvo que lo explique una actividad almacenada posterior o una discrepancia pendiente de la fila 10 para el control, o que ambas ejecuciones muestren
descriptive. - Una ejecución que no leyó la organización, o que muestra
not_evaluated, ni cuenta para esas dos ejecuciones ni las reinicia. - Si la atestación vuelve a mostrarse, reabre el mismo registro sustituto.
Registros sustitutos de las filas 9, 11 y 15, identificados solo por el control:
- Para la fila 11, los 15 días cuentan desde la primera ejecución que muestra el
status. Mientras el registro sustituto esté pendiente, no marques nada más para ese control; resuélvelo cuando llegue una actividad posterior, se muestre la atestación o dos ejecuciones seguidas encajen en otra fila. - Cuando un registro sustituto de la fila 9 se resuelva porque la atestación se muestra como
failed_check_accepted_risk, márcalo para revisión una vez: el riesgo está vigente.
Ejemplo práctico
Estas dos ejecuciones leen la organización del ejemplo de respuesta de la Referencia de resultados; la ejecución 1 es tu primera ejecución.
- Ejecución 1,
directory_sync_enabled. Almacenado:attested,accepted_risk, creado en2026-10-20T15:04:00.220114Z. Respuesta:failed_check_accepted_risk,in_force, el mismoattested_at. Fila 1: Coincide. - Ejecución 1,
allowed_invite_domains. Almacenado: nada. Respuesta:descriptive,attestationnull. Regla S4: se aparta. - Ejecución 1,
oauth_conditional_access. Almacenado: nada. Respuesta: unaattestationconstatereview_due. Fila 10: Investigar. En tu primera ejecución, almacena un registro sustituto de inmediato, sin revisión. - Ejecución 2,
oauth_conditional_access. Registro sustituto: el de la ejecución 1. Respuesta: la misma. Fila 5: Esperado. Actúa una vez antereview_due.
Lo que la comprobación no puede encontrar
La comprobación diaria no puede encontrar una actividad que falta para una atestación que la respuesta omite en un control automático. La respuesta no da ninguna señal de esa atestación, o solo el status failed, que parece el estado que da la verificación automática.
Cuando una organización deja de responder
Una organización que ha devuelto un 200 y después devuelve un 404 en varias ejecuciones seguidas necesita a una persona, una vez. Pregunta a alguien con acceso a la página Security posture si se ha desactivado la página para la organización (consulta Disponibilidad de Security posture). Si no se ha desactivado la página, contacta con tu representante de Anthropic. Puede que la organización se haya eliminado, o que tu acceso, Security posture o el endpoint hayan dejado de estar disponibles para la organización. Sea cual sea la causa, resuelve los registros sustitutos y las discrepancias pendientes de la organización sin revisión, sigue llamando a la organización y vuelve a abrirlos si la organización devuelve un 200.
¿Te resultó útil esta página?