Enviar eventos de Security posture para o seu SIEM
Solicite as atividades de Security posture do Activity Feed da Compliance API, leia uma delas campo por campo e mantenha seu SIEM atualizado com uma leitura agendada que captura atividades atrasadas.
Esta página leva você de uma Compliance Access Key até atividades de Security posture chegando como eventos ao seu sistema de gerenciamento de informações e eventos de segurança (SIEM) de forma agendada. A visão geral informa quais organizações têm essas atividades. Você precisa de uma Compliance Access Key que cubra a organização, com o escopo read:compliance_activities ou read:org_audit.
Solicitar as atividades
Para ler apenas essas atividades, filtre o feed com activity_types[]. Nesta requisição, created_at.gte define o created_at mais antigo a ser lido, e order=asc retorna primeiro as atividades mais antigas:
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"A referência da APIPré-visualização disponível com links para a referência da API — pressione Tab até o foco entrar no cartão, Escape para voltar. descreve cada parâmetro.
Ler uma atividade
Cada elemento do array data da resposta é uma atividade como esta.
{
"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"
}controlnomeia o controle de segurança, uma configuração ou prática recomendada.actioninforma o que aconteceu com a atestação do controle, a declaração registrada de uma pessoa sobre o controle. Aqui,attestedsignifica que uma atestação foi registrada para um controle que não tinha nenhuma.statusé o valor da atestação. Aqui ele é Risco aceito (accepted_risk): o controle não está implementado, e a organização aceita o risco.actoraqui identifica a pessoa que fez a atestação, pelo ID de usuário e pelo endereço de e-mail.created_ataqui é quando ela fez a atestação.
A Referência de eventos de Security posture lista mais campos e valores.
Se a resposta estiver vazia
Um array data vazio é válido. O feed contém apenas alterações feitas desde que ele começou a registrar essas atividades para a organização. Ele fica vazio até que uma atestação seja feita ou alterada.
Verifique se a organização tem essas atividades. Depois, peça a alguém que faça a atestação de um controle. Após algum tempo, repita a requisição.
Executar de forma agendada
Qualquer uma dessas atividades pode se tornar consultável mais tarde do que o atraso de indexação habitual de 1 minuto do Activity Feed, com um created_at que já está no passado. Assim, uma integração que só avança, a partir de um cursor ou de um created_at.gte que avança, nunca vê essa atividade. Releia uma janela retroativa fixa de 4 horas a cada execução e descarte as atividades que você já armazenou:
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- Execute com frequência: Execute o loop com a frequência de que seus alertas precisam, por exemplo a cada 5 minutos.
- Mantenha a mesma consulta durante toda a execução: Calcule
created_at.gte, em UTC e codificado para URL, no início de cada execução. Envie os mesmos filtros e o mesmoorderem todas as páginas. Comorder=asc, passarlast_idcomoafter_idretorna a próxima página de atividades mais recentes. Paginar resultados explicaafter_idelast_id. - Desduplique por
id: Esta etapa é obrigatória, porque execuções consecutivas se sobrepõem. - Tratar execuções com falha: Se uma requisição falhar após as novas tentativas descritas em Tratar erros da Compliance API, encerre a execução. A próxima execução lê toda a janela dela novamente. Se as execuções falharem ou pararem por mais de 4 horas, a próxima releitura diária lê as atividades que elas perderam.
Reler 15 dias uma vez por dia
Uma vez por dia, execute o mesmo loop com uma janela retroativa de 15 dias em vez de 4 horas. Esta releitura diária também lê uma atividade que se torna consultável até 14 dias após o seu created_at.
- Registre o horário de início de cada releitura diária que for concluída.
- Exclua um
idarmazenado somente se você o armazenou mais de 16 dias antes do último início registrado. - Se nenhum início tiver sido registrado, defina
created_at.gtetão para trás quanto você precisar; o feed mantém as atividades por 6 anos. - Se tiver passado mais de um dia desde o último início registrado, execute a próxima releitura diária com
created_at.gtedefinido como 15 dias antes desse início.
Se você já ingere o feed completo
Uma integração que lê todo o Activity Feed, sem um filtro activity_types[] que deixe essas atividades de fora, já as recebe. Verifique duas coisas:
- Valores não reconhecidos: Seu handler repassa qualquer
typeou valor de campo que ele não reconhece. Consulte Entender o objeto Activity. - Atividades atrasadas: Uma integração que só solicita atividades mais recentes perde uma atividade que se torna consultável com atraso. Adicione à integração a releitura de 4 horas e a releitura diária de 15 dias.
Verificar se funciona
Depois que alguém atesta um controle, execute o loop até que ele armazene a nova atividade. Em seguida, execute-o novamente: ele não armazena essa atividade uma segunda vez.
Próximos passos
Para gerar alertas com base no horário em que você armazenou uma atividade, e não no seu created_at, consulte Detectar alterações de Security posture. Para o Open Cybersecurity Schema Framework (OCSF), consulte Mapear eventos de Security posture para OCSF. Para os resultados atuais, consulte Referência de resultados de Security posture.
Esta página foi útil?