Mengirim peristiwa Security posture ke SIEM Anda
Minta aktivitas Security posture dari Activity Feed Compliance API, baca salah satunya field demi field, dan jaga SIEM Anda tetap mutakhir dengan pembacaan terjadwal yang menangkap aktivitas yang terlambat.
Halaman ini memandu Anda mulai dari Compliance Access Key hingga aktivitas Security posture tiba secara terjadwal sebagai peristiwa di sistem security information and event management (SIEM) Anda. Ikhtisar menjelaskan organisasi mana yang memiliki aktivitas ini. Anda memerlukan Compliance Access Key yang mencakup organisasi tersebut, dengan scope read:compliance_activities atau read:org_audit.
Meminta aktivitas
Untuk membaca hanya aktivitas ini, filter feed dengan activity_types[]. Dalam permintaan ini, created_at.gte menetapkan created_at paling awal yang dibaca, dan order=asc mengembalikan aktivitas terlama terlebih dahulu:
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"Referensi APIPratinjau dengan tautan ke referensi API tersedia — tekan Tab hingga fokus masuk ke kartu, Escape untuk kembali. menjelaskan setiap parameter.
Membaca satu aktivitas
Setiap elemen array data dalam respons adalah aktivitas seperti ini.
{
"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"
}controlmenyebutkan kontrol keamanan, yaitu satu pengaturan atau praktik yang direkomendasikan.actionmenyatakan apa yang terjadi pada atestasi kontrol tersebut, yaitu pernyataan tercatat seseorang tentang kontrol itu. Di siniattestedberarti satu atestasi dicatat untuk kontrol yang sebelumnya tidak memilikinya.statusadalah nilai atestasi. Di sini nilainya Risiko diterima (accepted_risk): kontrol tersebut tidak diterapkan, dan organisasi menerima risikonya.actordi sini mengidentifikasi orang yang memberikan atestasi, berdasarkan ID pengguna dan alamat email.created_atdi sini adalah waktu mereka memberikan atestasi.
Referensi peristiwa Security posture mencantumkan lebih banyak field dan nilai.
Jika respons kosong
Array data yang kosong adalah valid. Feed hanya memuat perubahan yang dibuat sejak feed mulai mencatat aktivitas ini untuk organisasi tersebut. Feed tetap kosong sampai ada atestasi yang dibuat atau diubah.
Periksa bahwa organisasi tersebut memiliki aktivitas ini. Kemudian minta seseorang memberikan atestasi pada sebuah kontrol. Setelah beberapa saat, ulangi permintaan.
Menjalankannya secara terjadwal
Salah satu dari aktivitas ini dapat tersedia untuk dikueri lebih lambat daripada jeda pengindeksan Activity Feed yang biasanya 1 menit, dengan created_at yang sudah berada di masa lalu. Jadi integrasi yang hanya bergerak maju, dari kursor atau created_at.gte yang terus maju, tidak pernah melihat aktivitas seperti itu. Baca ulang rentang waktu mundur tetap selama 4 jam pada setiap eksekusi, dan buang aktivitas yang sudah Anda simpan:
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- Jalankan secara rutin: Jalankan loop sesering yang dibutuhkan peringatan Anda, misalnya setiap 5 menit.
- Gunakan kueri yang sama untuk seluruh eksekusi: Hitung
created_at.gte, dalam UTC dan ter-encode URL, di awal setiap eksekusi. Kirim filter danorderyang sama di setiap halaman. Denganorder=asc, meneruskanlast_idsebagaiafter_idmengembalikan halaman berikutnya berisi aktivitas yang lebih baru. Memaginasi hasil menjelaskanafter_iddanlast_id. - Lakukan deduplikasi berdasarkan
id: Langkah ini wajib, karena eksekusi yang berurutan saling tumpang tindih. - Menangani eksekusi yang gagal: Jika sebuah permintaan gagal setelah percobaan ulang dalam Menangani error Compliance API, hentikan eksekusi. Eksekusi berikutnya membaca seluruh rentangnya lagi. Jika eksekusi gagal atau berhenti selama lebih dari 4 jam, pembacaan ulang harian berikutnya membaca aktivitas yang dilewatkan oleh eksekusi tersebut.
Membaca ulang rentang 15 hari, sekali sehari
Sekali sehari, jalankan loop yang sama dengan rentang waktu mundur 15 hari sebagai pengganti 4 jam. Pembacaan ulang harian ini juga membaca aktivitas yang menjadi bisa dikueri hingga 14 hari setelah created_at-nya.
- Catat waktu mulai setiap pembacaan ulang harian yang selesai.
- Hapus
idyang tersimpan hanya jika Anda menyimpannya lebih dari 16 hari sebelum waktu mulai tercatat yang terakhir. - Jika belum ada waktu mulai yang tercatat, tetapkan
created_at.gtesejauh ke belakang yang Anda perlukan; feed menyimpan aktivitas selama 6 tahun. - Jika sudah lebih dari sehari berlalu sejak waktu mulai tercatat yang terakhir, jalankan pembacaan ulang harian berikutnya dengan
created_at.gteditetapkan ke 15 hari sebelum waktu mulai tersebut.
Jika Anda sudah menyerap seluruh feed
Integrasi yang membaca seluruh Activity Feed, tanpa filter activity_types[] yang mengecualikan aktivitas ini, sudah menerimanya. Periksa dua hal:
- Nilai yang tidak dikenali: Handler Anda meneruskan apa adanya
typeatau nilai field mana pun yang tidak dikenalinya. Lihat Memahami objek Activity. - Aktivitas yang terlambat: Integrasi yang hanya meminta aktivitas yang lebih baru akan melewatkan aktivitas yang baru dapat dikueri belakangan. Tambahkan pembacaan ulang 4 jam dan pembacaan ulang harian 15 hari ke integrasi tersebut.
Memeriksa bahwa semuanya berfungsi
Setelah seseorang mengatestasi sebuah kontrol, jalankan loop hingga loop tersebut menyimpan aktivitas baru itu. Lalu jalankan lagi: loop tidak menyimpan aktivitas tersebut untuk kedua kalinya.
Langkah selanjutnya
Untuk memberikan peringatan berdasarkan waktu Anda menyimpan aktivitas, bukan berdasarkan created_at-nya, lihat Mendeteksi perubahan pada Security posture. Untuk Open Cybersecurity Schema Framework (OCSF), lihat Memetakan peristiwa Security posture ke OCSF. Untuk hasil saat ini, lihat Referensi hasil Security posture.
Apakah halaman ini membantu?