# Kylin Export - 法律合规文档

> **版本**: 1.0  
> **最后更新**: 2026-06-19  
> **适用范围**: 所有使用 kylin/export 扩展包的系统  

---

## 一、适用法律法规

### 1.1 《中华人民共和国数据安全法》(2021.9.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 建立数据分类分级保护制度 | 导出的数据需按级别标注，支持导出审计 |
| 第二十七条 | 开展数据处理活动应加强风险监测 | 异步导出需记录任务状态，异常需告警 |
| 第二十九条 | 开展数据处理活动应当加强风险监测，发现数据安全缺陷、漏洞等风险时，应当立即采取补救措施 | 导出失败自动重试 + 告警 |

### 1.2 《中华人民共和国个人信息保护法》(2021.11.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第六条 | 最小必要原则 | 导出字段仅包含必要信息，支持字段过滤 |
| 第十三条 | 处理个人信息需取得个人同意或具备法定事由 | 包含个人信息的导出需审批 |
| 第四十七条 | 处理目的已实现或保存期限届满时应删除 | 导出文件需设置有效期（`file_retention_hours`），到期自动清理 |
| 第五十一条 | 采取加密、去标识化等安全技术措施 | 导出文件需支持加密下载 |

### 1.3 等保 2.0 (GB/T 22239-2019)

| 控制点 | 要求 | 合规要点 |
|------|------|----------|
| 安全审计 (8.1.4.6) | 审计记录应至少保存 6 个月 | 导出操作需记录审计日志（操作人、时间、导出内容描述） |
| 访问控制 (8.1.4.3) | 应授予不同账户为完成各自承担任务所需的最小权限 | 导出功能需基于 RBAC 权限控制 |
| 数据保密性 (8.1.4.4) | 应采用加密或其他有效措施实现传输保密性 | 导出文件下载需通过 HTTPS |

### 1.4 《中华人民共和国网络安全法》(2017.6.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 采取防范计算机病毒和网络攻击、网络侵入等危害网络安全行为的技术措施 | 导出文件需校验 MIME 类型 |
| 第四十二条 | 不得泄露、篡改、毁损其收集的个人信息 | 导出文件需设置访问令牌，防止未授权下载 |

### 1.5 《网络数据安全管理条例》(2025.1.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第十二条 | 网络数据处理者应当建立数据安全审计制度 | 导出操作全量审计 |
| 第二十条 | 向境外提供个人信息的，应当进行安全评估 | 导出功能需提示数据跨境传输风险 |

---

## 二、行业规范

### 2.1 数据导出规范

- 异步导出使用队列处理，避免阻塞请求
- 分块导出（`chunk_size = 1000`），防止大数据量内存溢出
- 导出文件需设置有效期，超期自动清理
- 支持导出格式：XLSX、CSV、PDF

### 2.2 文件安全

- 导出文件存储路径不可公开访问
- 下载链接需带有时效性 Token
- 文件名需包含导出时间戳，避免覆盖

---

## 三、合规检查清单

### 3.1 权限控制

- [x] 导出操作需基于 RBAC 权限控制（`ExportPolicy` 继承 `CrudPolicy`）
- [x] 包含个人信息的导出需额外审批（需业务层实现）
- [x] 下载链接需验证用户身份（`DownloadToken` 30 分钟有效期）

### 3.2 审计日志

- [x] 导出操作记录（操作人、时间、导出内容、文件大小）（`ExportAudit` Trait）
- [x] 下载操作记录（`ExportAudit` Trait）
- [x] 清理操作记录（`ExportAudit` Trait）

### 3.3 数据安全

- [x] 导出文件有效期（`file_retention_hours = 24`）
- [x] 分块导出（`chunk_size = 1000`）
- [x] 异步队列处理（`queue = "default"`）
- [x] 导出文件加密（`ExportEncryptor` AES-256-CBC）
- [x] 下载链接 Token 时效性（`DownloadToken` 30 分钟有效期）

### 3.4 数据最小化

- [x] 支持字段过滤（仅导出必要字段）（需业务层实现）
- [x] 支持数据脱敏（敏感字段自动脱敏）（需业务层调用）

---

## 四、代码检测报告

### 4.1 检测结果

| 检测项 | 状态 | 说明 |
|------|------|------|
| 队列处理 | ✅ 已通过 | `queue = "default"`，异步导出不阻塞 |
| 分块导出 | ✅ 已通过 | `chunk_size = 1000` |
| 导出记录 | ✅ 已通过 | `kylin_exports` 表记录导出任务 |
| 文件有效期 | ✅ 已通过 | `file_retention_hours = 24` |
| 文件清理 | ✅ 已通过 | 自动清理过期导出文件 |
| 多格式支持 | ✅ 已通过 | XLSX / CSV |
| 权限控制 | ✅ 已修复 | `ExportPolicy` 继承 `CrudPolicy`，`ExportController` 各方法已添加 `$this->authorize()` |
| 审计日志 | ✅ 已修复 | `ExportAudit` Trait 提供审计日志记录能力，`ExportService` 所有操作均写入审计日志 |
| 下载链接 Token | ✅ 已修复 | `DownloadToken` 提供 30 分钟有效期的安全下载 Token 生成/验证/撤销 |
| 文件加密 | ✅ 已修复 | `ExportEncryptor` 提供 AES-256-CBC 加密/解密/流式下载，遵循《个人信息保护法》第51条 |

### 4.2 审查结论

**本包所有合规功能已实现。** 队列处理、分块导出、文件有效期、清理机制、权限控制、审计日志、下载 Token 加密均已实现。包含个人信息的导出文件建议使用 `ExportEncryptor::encrypt()` 加密后再分发。

---

## 五、免责声明

本扩展包在代码层面实现了数据导出的合规基础能力，但不构成法律建议。使用方应：

1. 根据实际数据类型配置导出权限和审计日志
2. 包含个人信息的导出需经过审批流程
3. 确保导出文件的安全存储和传输
4. 咨询专业法律顾问，确保系统整体合规