Browse Security Audit Privacy

stable · guide · 0.1.0

Public audit boundary

Structured fact,不是 business record

Project Audit 是 client-scoped、append-only structured fact:actor reference、action、resource type/reference、outcome、occurred time 與 correlation identifier。It is not a business record,不接受 arbitrary payload、request body、credential、payment-card data 或 document content。

Project Backend 保有完整業務紀錄。MiniCenter audit copy 只支援跨 capability correlation、retention 與授權調查;相同 idempotency key 只能重送完全相同的 fact。

使用官方 Python SDK 提交

Project Credential 只授予 audit:write,且保存在 Project Backend。Project Client 由 credential 決定,不可放進 request body。actor 與 resource 使用 project-owned opaque reference;不得放 email、姓名、信件內容或 provider payload。

Python example
from minicenter import Client

client = Client(
    "https://sandbox.minicenter.otus.tw/api/v1",
    credential=project_credential,
)
audit = client.request(
    "POST",
    "/project-audits",
    body={
        "actor_id": "actor:38000000-0000-4000-8000-000000000010",
        "action": "project.membership.changed",
        "resource_type": "ProjectMembership",
        "resource_id": "membership:38000000-0000-4000-8000-000000000011",
        "outcome": "succeeded",
    },
    idempotency_key="project-membership-change-42",
)

對 uncertain response 重送完全相同的 body 與 idempotency key;成功會回傳相同 Audit ID。 每次 transport attempt 可使用新的 correlation ID,Project Audit 保留首次成功提交的 correlation。 如果 caller 明確提供 correlation header,相同 idempotency key 必須沿用該值。

Access 與 correction

公開 API 不提供 audit timeline、operator investigation 或 operational record 查詢。Platform Account 對自己的 audit-related personal data 可透過 Privacy Request 提出 access/export;append-only fact 不被改寫,correction 會新增可追溯的 correction record。

Internal incident procedure、recovery instruction、provider configuration、security secret、operator identity 與 account-specific timeline 都不屬於 public documentation。需要產品安全協助時使用公開的 Privacy Request 或 legal contact,而不是要求內部操作資料。