2026-08-13 19:01:16 +08:00
|
|
|
|
# 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`。
|
2026-08-25 16:40:48 +08:00
|
|
|
|
- 客户创建、审核结果及启停写 `IamTenantStatusChanged`。
|
2026-08-13 19:01:16 +08:00
|
|
|
|
- 成员角色、平台内部用户角色及角色权限变更写 `IamPermissionVersionChanged`。
|
|
|
|
|
|
|
2026-08-25 16:40:48 +08:00
|
|
|
|
普通 Admin/Client 的即时失效只覆盖用户停用、客户停用和权限版本推进。`token_version` 不进入 V1 投影,也不传给 Lastleg 校验;其即时权威比对只用于海外 PDA 向 Auth 核验仓绑定与会话版本。
|
|
|
|
|
|
|
2026-08-13 19:01:16 +08:00
|
|
|
|
## 尾程权限
|
|
|
|
|
|
|
|
|
|
|
|
`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`
|