Files
baiyue-firstleg/iam/SECURITY-EVENT-AUDIT.md
2026-08-25 16:40:48 +08:00

42 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IAM 跨区安全事件契约
## 边界
IAM 使用独立的 `iam_security_event_outbox`。业务状态、权限版本与 Outbox 在同一数据库事务内提交;尾程按 `eventId` 幂等消费,并按信封 `aggregateVersion` 拒绝旧事件。事件不包含密码、令牌、联系方式、角色全集或权限全集。
## V1 事件
三个事件均使用标准 `EventEnvelope`,`eventVersion=1`、`sourceRegion=CN`、`targetRegion=OVERSEAS`。
1. `IamUserStatusChanged`
- 聚合:`aggregateType=USER`、`aggregateId=authUserId`
- payload:`authUserId`、`tenantId`、`appCode`、`status`、`permissionVersion`、`changedAt`
- status:`ACTIVE`、`DISABLED`
2. `IamTenantStatusChanged`
- 聚合:`aggregateType=TENANT`、`aggregateId=tenantId`
- payload:`tenantId`、`status`、`changedAt`
- status:`ACTIVE`、`DISABLED`
- `aggregateVersion` 来自 `iam_security_tenant_version.status_version`,每次状态变化单调递增
3. `IamPermissionVersionChanged`
- 聚合:`aggregateType=AUTHORIZATION`、`aggregateId=authUserId`
- payload:`authUserId`、`tenantId`、`appCode`、`permissionVersion`、`reason`、`changedAt`
- `permissionVersion` 来自 `iam_security_subject_version.permission_version`,按账号单调递增
## 当前接入
- 企业成员、平台内部用户和平台用户启停均写 `IamUserStatusChanged`。
- 客户创建、审核结果及启停写 `IamTenantStatusChanged`。
- 成员角色、平台内部用户角色及角色权限变更写 `IamPermissionVersionChanged`。
普通 Admin/Client 的即时失效只覆盖用户停用、客户停用和权限版本推进。`token_version` 不进入 V1 投影,也不传给 Lastleg 校验;其即时权威比对只用于海外 PDA 向 Auth 核验仓绑定与会话版本。
## 尾程权限
`lastleg-permissions.sql` 初始化以下平台权限,并授予 `PLATFORM_ADMIN`:
- `platform:lastleg:order:list`
- `platform:lastleg:order:detail`
- `platform:lastleg:order:assign`
- `platform:lastleg:order:transfer`
- `platform:lastleg:order:merge-pallet`