Uygulamayı aç
Moonborn — Developers

Audit log export

Hash-zincirli audit log'u imzalı bir arşiv olarak export et. Zinciri offline doğrula; kendi retention sisteminde arşivle.

Audit log hash-zincirli ve immutable. Retention sisteminde offline arşivlemek için export et; zincirin tamper edilmediğini doğrula.

Export iste

const exportJob = await client.audit.requestExport({
  workspaceId: 'ws_...',
  range: { from: '2026-01-01', to: '2026-12-31' },
  format: 'jsonl',
});
 
console.log(exportJob.id); // status için poll et

format: jsonl (default), csv, parquet.

Tamamlanmayı poll et

let status = exportJob.status;
while (status === 'pending' || status === 'running') {
  await new Promise((r) => setTimeout(r, 5000));
  const fresh = await client.audit.getExport({ id: exportJob.id });
  status = fresh.status;
  if (status === 'ready') {
    console.log(fresh.downloadUrl); // imzalı S3 URL, 24s geçerli
    console.log(fresh.sha256);      // arşiv checksum
    console.log(fresh.chainSeed);   // doğrulama için hash chain root
  }
}

Zinciri offline doğrula

import { createHash } from 'node:crypto';
 
let expected = exportJob.chainSeed;
for (const event of events) {
  const computed = createHash('sha256')
    .update(JSON.stringify(event.payload) + expected)
    .digest('hex');
  if (computed !== event.hash) {
    throw new Error(`Tamper at event ${event.id}`);
  }
  expected = event.hash;
}

Doğrulama geçerse, arşivin kanıtlanabilir şekilde dokunulmamış.

Retention

Export artifact'leri 30 gün tutulur, sonra Moonborn-tarafı storage'tan silinir. Grace penceresinde kendi sistemine indir.

Scope

Default'ta workspace-scope'lu. Org-genelinde export'lar owner rolü ve açık orgWide: true flag'i gerektirir.

Tarif

Team ve üstü.

İlgili