SIEM への取り込み手順
特定の製品に依存せず、監査ログを定期的に取得する手順です。
- 対象組織を選び、OWNER / ADMIN が設定の「プランと API」でトークンを発行します。認証とトークンを確認してください。
- 初回は必要な開始時刻を
SINCEに設定し、取得開始時に終了時刻UNTILを固定します。 next_cursorがある間、同じ検索条件と終了時刻で続きを取得します。取得成功自体も監査イベントを増やすため、終了時刻を更新しながら追いかけないでください。- 取得したイベントを
event_idを一意キーとして保存します。全ページの保存に成功してから終了時刻をチェックポイントとして保存します。 - 次回は前回の終了時刻より 10 分前から取り直します。時刻より遅れて記録が確定する場合があるためです。重複は
event_idで除きます。これは遅延が無制限でも欠落しないという保証ではなく、必要に応じて過去の時間窓も照合してください。
curl + jq のページング例
Bash、curl、jq が必要です。トークンは環境変数 SPECTRA_AUDIT_TOKEN に設定します。標準出力は NDJSON です。エラー終了時はチェックポイントを進めず、同じ時間窓を再取得してください。
Bash
#!/usr/bin/env bash
set -euo pipefail
: "${SPECTRA_AUDIT_TOKEN:?Set the organization token}"
: "${SINCE:?Set the UTC start, for example 2026-09-01T00:00:00Z}"
UNTIL=$(date -u +%Y-%m-%dT%H:%M:%SZ)
cursor=''
work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT
while :; do
args=(--data-urlencode "since=$SINCE" --data-urlencode "until=$UNTIL"
--data-urlencode 'limit=1000')
if [[ -n "$cursor" ]]; then args+=(--data-urlencode "cursor=$cursor"); fi
status=$(curl --silent --show-error --get \
-H "Authorization: Bearer $SPECTRA_AUDIT_TOKEN" -H 'Accept: application/json' \
-D "$work/headers" -o "$work/page" -w '%{http_code}' \
"${args[@]}" 'https://api.spectra-app.net/api/v1/audit-events')
if [[ "$status" == '429' ]]; then
retry=$(tr -d '\r' < "$work/headers" | awk 'tolower($1)=="retry-after:" {print $2}')
[[ "$retry" =~ ^[0-9]+$ ]] || exit 1
sleep "$retry"
continue
fi
[[ "$status" == '200' ]] || { cat "$work/page" >&2; exit 1; }
jq -e 'has("data") and has("next_cursor") and (.data | type == "array") and
(.next_cursor == null or (.next_cursor | type == "string" and length > 0))' "$work/page" >/dev/null
jq -c '.data[]' "$work/page"
cursor=$(jq -r '.next_cursor // empty' "$work/page")
[[ -n "$cursor" ]] || break
done
printf 'Completed window through %s\n' "$UNTIL" >&2ファイルへ取得する例: bash collect.sh > window.ndjson。終了コードの成功を確認してから取り込みます。小さな検証用ファイル内の重複除去例です。本運用では保存先で継続的に一意性を保ってください。
jq
jq -s 'unique_by(.event_id)[]' window.ndjsonエラーと回数制限も参照してください。