Сверка сохранённых событий Security posture с текущими результатами
Раз в день сравнивайте активности подтверждения, сохранённые в вашей SIEM, с текущими результатами конечной точки и решайте, какие несоответствия требуют внимания человека.
Лента активности может доставить активность с опозданием, а конечная точка не хранит историю, поэтому каждый источник может показывать изменение, которого нет в другом. Ежедневное сравнение выявляет, чего не хватает в хранилище вашей системы «security information and event management» (управление информацией и событиями безопасности), или SIEM. Лента записывает не каждое изменение, поэтому подтверждение может быть старше первой активности в ленте для соответствующей меры безопасности, а в редких случаях у изменения вообще нет активности. Если вы сообщаете только текущие результаты, эта проверка вам не нужна.
Вам нужен Compliance Access Key, охватывающий организацию, с read:compliance_org_data для конечной точки и read:compliance_activities для ленты активности либо с read:org_audit для обеих.
Выполнение проверки
Начинайте каждый запуск после завершения сегодняшнего ежедневного повторного чтения, чтобы запоздавшие активности уже были сохранены.
- Получите связанные организации с помощью Список организаций. Вы получите
uuidкаждой из них. - Вызовите конечную точку по одному разу для каждой организации. Вы получите 200 или — при каждом запуске — 404 для организации, которую конечная точка не обслуживает (см. Доступность Security posture). Ответ 404 означает, что организация не прочитана в этом запуске. Ведите список организаций, вернувших 200, и для каждой из них —
evaluated_atеё первого ответа 200: это ваш первый запуск для этой организации. - Исключите из сравнения то, что перечислено в правилах исключения.
- Сгруппируйте оставшиеся сохранённые активности подтверждения организации по мерам безопасности и для каждой меры возьмите самую новую по
created_at. Вы получите для каждой меры одну активность или ни одной. - Для каждой оставшейся меры найдите её строку в таблице решений. Вы получите «Совпадает», «Ожидаемо» или «Требует разбора».
- Реагируйте на заключение «Требует разбора» только тогда, когда следующий запуск, прочитавший организацию, снова его покажет; на строку 6 реагируйте сразу, а для строк 10 и 11 вместо этого следуйте правилам для записей-заполнителей. Запуск, который не прочитал организацию, не засчитывается и не перезапускает ожидание.
Распределяйте вызовы во времени и обрабатывайте ответ 429 так, как описано в разделе 429 Too Many Requests; организация, вызовы для которой завершаются ошибкой после ваших повторных попыток, не прочитана в этом запуске, а неудачный вызов не является изменением.
Сопоставление полей
Сопоставляйте запись в ответе с сохранённой активностью по следующим полям.
| В ответе | В активности | Как они связаны |
|---|---|---|
organization_id | organization_uuid | Одно и то же значение; собственное поле organization_id активности имеет префикс org_. |
controls[].id | control | Один и тот же идентификатор, кроме случая из правила S2. |
attestation.attested_at | created_at самой новой активности attested, changed или renewed | То же время, если ответ содержит подтверждение; сравнивайте как значения времени, а не как строки. |
status | status | Пока подтверждение действует, attested_completed соответствует completed, а attested_accepted_risk и failed_check_accepted_risk — accepted_risk; значению control_failed не соответствует ничего. |
Исключение того, что нельзя сравнить
Перед сравнением исключите следующее.
| # | Что | Правило |
|---|---|---|
| S1 | Сохранённая активность подтверждения, у которой action не равно attested, changed, renewed, cleared или lapsed | Не учитывайте её во всей проверке; каждое новое значение action один раз пометьте для разбора. |
| S2 | Сохранённая активность подтверждения, в которой указана mdm_cowork_required_organization | Считайте её активностью для mdm_chat_required_organization. |
| S3 | Сохранённая активность подтверждения, для меры которой в ответе нет записи | Сравнивать нечего; сообщайте о мере как об отсутствующей в ответе, но никогда — со статусом «Пройдено» (passed). |
| S4 | Запись, у которой status равен descriptive, not_applicable или not_evaluated | Пропустите её; запуск, в котором она имеет статус not_evaluated, не засчитывается для этой меры. |
Определение смысла каждого несоответствия
Каждая оставшаяся мера подходит ровно под одну строку.
| # | Самая новая сохранённая активность | Запись в ответе | Заключение | Что делать |
|---|---|---|---|---|
| 1 | attested, changed или renewed | attested_at равно её created_at; state равно in_force; status соответствует её значению. | Совпадает | Ничего. |
| 2 | cleared | attestation равно null, кроме случая из строки 11. | Совпадает | Ничего. |
| 3 | lapsed, со значением «Принятый риск» (accepted_risk) | attestation равно null или содержит время более ранней активности с state check_passing или setting_changed. | Совпадает | Ничего. |
| 4 | lapsed, со значением completed или control_failed | attestation равно null. | Совпадает | Ничего. |
| 5 | attested, changed или renewed | attested_at равно её created_at; state равно review_due, check_passing или setting_changed. | Ожидаемо | Не действует: реагируйте один раз на каждое новое состояние, не дожидаясь активности; возврат к in_force сбрасывает это. |
| 6 | attested, changed или renewed со значением «Выполнено» (completed) и created_at позже вашего первого запуска | При первом запуске, в котором сравнивается эта активность, attestation равно null, а status равен failed с current_value. | Требует разбора | Страница Security posture может показывать неуспешную проверку как «Пройдено»: пометьте для разбора без ожидания. |
| 7 | attested, changed или renewed со значением completed | attestation равно null; status не равен not_attested и не равен failed при current_value, равном null; строка 6 не подходит. | Ожидаемо | Сравнивать нечего; ответ никогда этого не содержит. |
| 8 | attested, changed или renewed со значением «Не пройдено» (control_failed) | attestation равно null; status принимает одно из трёх значений: failed; любой статус, который выставляет автоматическая проверка; или, начиная с даты окончания (review_date, в UTC), not_attested. | Ожидаемо | Сравнивать нечего; отреагируйте один раз, когда status перестанет быть failed, начиная с даты окончания. |
| 9 | attested, changed или renewed со значением accepted_risk | attestation равно null, а status равен passed, matches_profile или exceeds_baseline. | Ожидаемо | Сохраните запись-заполнитель (правило 7 для записей-заполнителей). |
| 10 | Нет, или все сохранённые активности старше attested_at | attestation присутствует. | Требует разбора | Следуйте правилам для записей-заполнителей. |
| 11 | Нет, или есть активность, значение которой не control_failed | current_value равно null, а status равен failed. | Требует разбора | В вашем хранилище нет подтверждения со значением «Не пройдено» (control_failed): следуйте правилам для записей-заполнителей и отреагируйте один раз, когда status перестанет быть failed. |
| 12 | attested, changed, renewed или cleared, более поздняя, чем attested_at, при наличии другой активности почти с тем же временем | attestation присутствует. | Ожидаемо | Изменения, внесённые почти одновременно, могут быть сохранены в любом порядке. |
| 13 | То же, но без такой второй активности | attestation присутствует. | Требует разбора | Обратитесь в службу поддержки Anthropic — один раз. |
| 14 | attested, changed или renewed | attested_at равно её created_at; state равно in_force; status не соответствует её значению. | Требует разбора | Обратитесь в службу поддержки Anthropic — один раз. |
| 15 | attested, changed или renewed; ни одна из предыдущих строк не подходит | attestation равно null. | Требует разбора | Скорее всего, подтверждение снято: сохраните запись-заполнитель (правило 7 для записей-заполнителей) и один раз пометьте для разбора. |
| 16 | Нет | attestation равно null, и строка 11 не подходит. | Совпадает | Ничего. |
| 17 | Любая другая | Любая другая. | Требует разбора | Один раз пометьте для разбора. |
Ведение записи-заполнителя, когда два источника нельзя сопоставить
Запись-заполнитель заменяет то, чего нет в одном из двух источников, и вы храните её отдельно от сохранённых активностей. Для строк 10 и 11 прочитайте ленту повторно и сохраните и пометьте запись-заполнитель, только если в течение 15 дней, то есть в пределах охвата ежедневного повторного чтения, ничего не поступит. При первом запуске сохраните её сразу, без разбора.
Записи-заполнители для строки 10, которые однозначно определяются по мере и attested_at:
- Прочитайте ленту повторно, начиная с самой новой сохранённой активности для этой меры или, если вы не сохранили ни одной, с
attested_atвключительно; 15 дней отсчитываются отattested_at. Создайте запись-заполнитель на основе записи из ответа с отметкой об отсутствии активности; в таблице решений считайте её активностьюattestedс этимattested_at, значение которой соответствует еёstatus, если он есть. - При каждом запуске, в котором ответ содержит подтверждение, обновляйте её
statusиstate. - Когда поступит активность, у которой
created_atравно этомуattested_at, замените ею запись-заполнитель. - Когда в двух запусках подряд ответ не содержит подтверждения, закройте запись-заполнитель; пометьте это для разбора, кроме случаев, когда это объясняется более поздней сохранённой активностью или незакрытым несоответствием по строке 10 для этой меры, или когда оба запуска показывают
descriptive. - Запуск, который не прочитал организацию или показывает
not_evaluated, не засчитывается в эти два запуска и не начинает их отсчёт заново. - Если ответ снова содержит подтверждение, повторно откройте ту же запись-заполнитель.
Записи-заполнители для строк 9, 11 и 15, которые однозначно определяются только по мере:
- Для строки 11 эти 15 дней отсчитываются от первого запуска, в котором появляется этот
status. Пока запись-заполнитель не закрыта, больше ничего не помечайте для этой меры; закройте её, когда выполнится одно из трёх условий: поступит более поздняя активность, ответ будет содержать подтверждение или два запуска подряд подойдут под другую строку. - Когда запись-заполнитель для строки 9 закрывается, потому что ответ содержит подтверждение со статусом
failed_check_accepted_risk, один раз пометьте её для разбора: риск действует.
Разобранный пример
Эти два запуска читают организацию из примера ответа на странице «Справочник по результатам»; запуск 1 — ваш первый запуск.
- Запуск 1,
directory_sync_enabled. Сохранено:attested,accepted_risk, создана в2026-10-20T15:04:00.220114Z. Ответ:failed_check_accepted_risk,in_force, тот жеattested_at. Строка 1: «Совпадает». - Запуск 1,
allowed_invite_domains. Сохранено: ничего. Ответ:descriptive,attestationnull. Правило S4: исключается из сравнения. - Запуск 1,
oauth_conditional_access. Сохранено: ничего. Ответ:attestationсstatereview_due. Строка 10: «Требует разбора». При первом запуске сразу сохраните запись-заполнитель, без разбора. - Запуск 2,
oauth_conditional_access. Запись-заполнитель: та же, что в запуске 1. Ответ: тот же. Строка 5: «Ожидаемо». Отреагируйте один раз наreview_due.
Что проверка не может обнаружить
Ежедневная проверка не может обнаружить отсутствующую активность для подтверждения, которое ответ не включает для автоматически проверяемой меры. Ответ никак не указывает на такое подтверждение или содержит только status failed, который выглядит как статус, выставляемый автоматической проверкой.
Когда организация перестаёт отвечать
Организация, которая вернула 200, а затем возвращает 404 в нескольких запусках подряд, требует однократного внимания человека. Спросите пользователя с доступом к странице Security posture, отключили ли эту страницу для организации (см. Доступность Security posture). Если страницу не отключили, обратитесь к своему представителю Anthropic. Возможно, организация была удалена, либо ваш доступ, Security posture или конечная точка перестали действовать для организации. В любом случае закройте записи-заполнители и незакрытые несоответствия организации без разбора, продолжайте вызывать организацию и снова откройте их, если организация вернёт 200.
Эта страница была полезной?