Claude Platform Docs

Отправка событий Security posture в вашу SIEM

Запросите активности Security posture из ленты активности Compliance API, разберите одну из них поле за полем и поддерживайте актуальность вашей SIEM с помощью чтения по расписанию, которое улавливает запоздалые активности.

Эта страница проведёт вас от Compliance Access Key до активностей Security posture, которые по расписанию поступают в виде событий в вашу систему SIEM (security information and event management). В обзоре указано, у каких организаций есть эти активности. Вам понадобится Compliance Access Key, охватывающий организацию, с областью действия read:compliance_activities или read:org_audit.

Запрос активностей

Чтобы читать только эти активности, отфильтруйте ленту с помощью activity_types[]. В этом запросе created_at.gte задаёт самый ранний created_at для чтения, а order=asc возвращает сначала самые старые активности:

cURL
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/activities" \
  -H "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  -H "anthropic-version: 2026-10-21" \
  --data-urlencode "activity_types[]=org_security_control_attestation_updated" \
  --data-urlencode "created_at.gte=2026-10-20T00:00:00Z" \
  --data-urlencode "order=asc" \
  --data-urlencode "limit=5000"

Каждый параметр описан в справочнике по APIДоступен предпросмотр со ссылками на справочник API — нажимайте Tab, пока фокус не перейдет на карточку; чтобы вернуться, нажмите Escape..

Разбор одной активности

Каждый элемент массива data в ответе — это активность, подобная этой.

{
  "id": "activity_01Hq7ZtYc4Vb2NmKx8RsPd3W",
  "type": "org_security_control_attestation_updated",
  "created_at": "2026-10-20T15:04:00.220114Z",
  "organization_id": "org_01JuY4bkwkH1x4PodBJaWmh2",
  "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
  "actor": {
    "type": "user_actor",
    "email_address": "jane.doe@example.com",
    "user_id": "user_01WxYzAbCdEfGhJkMnPqRsTu",
    "ip_address": "192.0.2.34",
    "user_agent": "Mozilla/5.0..."
  },
  "control": "directory_sync_enabled",
  "action": "attested",
  "status": "accepted_risk"
}
  • control называет меру безопасности — одну рекомендуемую настройку или практику.
  • action сообщает, что произошло с подтверждением меры — зафиксированным заявлением человека об этой мере. Здесь attested означает, что подтверждение было записано для меры, у которой его не было.
  • status — значение подтверждения. Здесь это «Принятый риск» (accepted_risk): мера не внедрена, и организация принимает риск.
  • actor здесь указывает человека, который дал подтверждение, по идентификатору пользователя и адресу электронной почты.
  • created_at здесь — момент, когда было дано подтверждение.

В разделе Справочник по событиям Security posture перечислены и другие поля и значения.

Если ответ пуст

Пустой массив data допустим. Лента содержит только изменения, внесённые с тех пор, как она начала записывать эти активности для организации. Она остаётся пустой, пока подтверждение не будет дано или изменено.

Убедитесь, что у организации есть эти активности. Затем попросите кого-нибудь подтвердить меру. Через некоторое время повторите запрос.

Запуск по расписанию

Любая из этих активностей может стать доступной для запросов позже обычной для ленты активности 1-минутной задержки индексации, причём с created_at, который уже находится в прошлом. Поэтому интеграция, которая движется только вперёд — от курсора или по возрастающему created_at.gte, — никогда не увидит такую активность. При каждом запуске заново читайте фиксированный период повторного просмотра в 4 часа и отбрасывайте уже сохранённые активности:

query = activity_types[]=org_security_control_attestation_updated
      & created_at.gte={now - 4 hours}
      & order=asc
      & limit=5000
cursor = null
loop:
  if cursor is null:
    page = GET /v1/compliance/activities?{query}
  else:
    page = GET /v1/compliance/activities?{query}&after_id={cursor}
  for activity in page.data:
    if activity.id is not in stored_ids:
      store(activity)
      add activity.id to stored_ids
  if not page.has_more: break
  cursor = page.last_id
  • Частые запуски: запускайте цикл так часто, как требуют ваши оповещения, например каждые 5 минут.
  • Используйте один и тот же запрос на протяжении всего запуска: вычисляйте created_at.gte в UTC и в URL-кодировке в начале каждого запуска. Отправляйте одни и те же фильтры и order для каждой страницы. При order=asc передача last_id в качестве after_id возвращает следующую страницу более поздних активностей. В разделе Постраничная навигация по результатам объясняются after_id и last_id.
  • Устраняйте дубликаты по id: этот шаг обязателен, поскольку последовательные запуски перекрываются.
  • Обработка неудачных запусков: если запрос завершается ошибкой после повторных попыток, описанных в разделе Обработка ошибок Compliance API, завершите запуск. Следующий запуск снова прочитает весь свой период. Если запуски на протяжении более 4 часов подряд завершаются ошибкой или не выполняются, следующее ежедневное повторное чтение прочитает пропущенные ими активности.

Повторное чтение 15 дней раз в сутки

Раз в сутки запускайте тот же цикл с периодом повторного просмотра в 15 дней вместо 4 часов. Это ежедневное повторное чтение также читает активность, которая становится доступной для запросов в течение 14 дней после её created_at.

  • Записывайте время начала каждого завершившегося ежедневного повторного чтения.
  • Удаляйте сохранённый id, только если вы сохранили его более чем за 16 дней до последнего записанного начала.
  • Если начало не записано, установите created_at.gte настолько далеко в прошлое, насколько вам нужно; лента хранит активности в течение 6 лет.
  • Если с последнего записанного начала прошло более суток, запустите следующее ежедневное повторное чтение с created_at.gte, установленным на 15 дней раньше этого начала.

Если вы уже принимаете всю ленту

Интеграция, которая читает всю ленту активности без фильтра activity_types[], исключающего эти активности, уже их получает. Проверьте две вещи:

Проверка работы

После того как кто-либо подтвердит меру, запускайте цикл, пока он не сохранит новую активность. Затем запустите его снова: он не сохраняет эту активность второй раз.

Следующие шаги

Чтобы создавать оповещения по времени сохранения активности, а не по её created_at, см. Обнаружение изменений в Security posture. Для Open Cybersecurity Schema Framework (OCSF) см. Сопоставление событий Security posture с OCSF. Для текущих результатов см. Справочник по результатам Security posture.

Эта страница была полезной?