# Kylin Settings - 法律合规文档

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

---

## 一、适用法律法规

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

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 采取数据分类、重要数据备份和加密等措施 | 配置数据需加密存储敏感项 |
| 第二十二条 | 网络产品应明示收集使用信息的目的、方式和范围 | 系统配置变更需记录审计日志 |
| 第四十一条 | 收集个人信息应当遵循合法、正当、必要原则 | 配置中不得存储个人信息明文 |

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

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第六条 | 最小必要原则 | 配置项仅包含系统运行必需参数 |
| 第二十八条 | 敏感个人信息需单独同意并严格保护 | 配置中禁止存储身份证号、银行卡号等敏感信息 |
| 第五十一条 | 采取加密、去标识化等安全技术措施 | 敏感配置项（密钥、Token）应加密存储 |
| 第四十七条 | 处理目的已实现时应删除 | 配置项删除后确保数据不可恢复 |

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

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 建立数据分类分级保护制度 | 配置数据按敏感度分级 |
| 第二十七条 | 数据处理活动应加强风险监测 | 配置变更需记录并可追溯 |
| 第二十九条 | 数据处理活动应留存审计记录 | 配置增删改操作需记录审计日志 |

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

| 控制点 | 要求 | 合规要点 |
|------|------|----------|
| 安全审计 (8.1.4.6) | 对系统配置变更进行审计 | 配置修改操作需记录操作用户、时间、内容 |
| 访问控制 (8.1.4.1) | 对系统配置管理进行访问控制 | 配置管理需基于角色授权 |
| 安全配置 (8.1.4.3) | 系统应提供安全配置管理功能 | 敏感配置通过 .env 管理，不可通过界面修改 |

### 1.5 《中华人民共和国密码法》(2020.1.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十七条 | 关键信息基础设施应当使用商用密码进行保护 | 配置中的密钥、Token 等需加密存储 |
| 第十二条 | 不得窃取他人加密保护的信息 | 加密配置项不可明文导出 |

---

## 二、行业规范

### 2.1 系统配置管理

- 依据 **ITIL 配置管理标准**，配置项应具备变更历史记录
- 配置项应支持分组管理（group 字段），便于按模块分类
- 配置缓存应支持主动失效，避免脏读

### 2.2 SaaS 多租户配置

- 依据 **《云计算服务安全要求》(GB/T 31168-2023)**，多租户配置需隔离
- 租户级配置与系统级配置需分开存储

---

## 三、合规检查清单

### 3.1 配置管理安全

- [x] 配置变更需记录审计日志（`SettingsService::set()`/`delete()` 均写入审计日志）
- [x] 敏感配置变更自动脱敏后记录（`SettingsService::maskSensitiveValue()`）
- [x] 敏感配置分组（security/payment/third_party/sms/email）变更触发 `SettingChanged` 事件
- [x] 配置缓存支持主动失效，避免脏读

### 3.2 访问控制

- [x] 配置管理需 RBAC 权限控制（`SettingPolicy` 继承 `CrudPolicy`）
- [x] 配置增删改查各方法均需 `authorize()` 校验（`SettingController`）
- [x] 敏感配置通过 `.env` 管理，不可通过界面修改

### 3.3 数据加密

- [x] 密钥/Token 类配置需加密存储（`encrypted` 类型，`Crypt::encryptString()`）
- [x] 加密配置读取自动解密（`SettingsService::get()` 自动调用 `Crypt::decryptString()`）
- [x] 加密配置项不可明文导出

### 3.4 数据安全

- [x] 配置数据按敏感度分级（常规/加密）
- [x] 配置项仅包含系统运行必需参数（最小必要原则）
- [x] 配置中禁止存储身份证号、银行卡号等敏感信息明文
- [x] 配置项删除后确保数据不可恢复

### 3.5 多租户合规

- [x] 配置项支持分组管理（`group` 字段），便于按模块分类
- [x] 租户级配置与系统级配置分开存储

---

## 四、代码检测报告

### 4.1 检测结果

| 检测项 | 状态 | 说明 |
|------|------|------|
| 配置缓存 | ✅ 已通过 | `SettingsService` 读取缓存，防止重复查询 |
| 配置隔离 | ✅ 已通过 | 独立 `settings` 表，按 group 分组 |
| 安全配置 | ✅ 已通过 | 敏感配置通过 `.env` 管控，不通过界面修改 |
| 配置变更审计 | ✅ 已修复 | `SettingsService::set()`/`delete()` 均写入 `kylin/audit-log`，敏感值自动脱敏 |
| 配置访问控制 | ✅ 已修复 | `SettingPolicy` 继承 `CrudPolicy`，`SettingController` 各方法已添加 `$this->authorize()` |
| 敏感配置加密 | ✅ 已修复 | 新增 `encrypted` 类型，存储自动 `Crypt::encryptString()`，读取自动解密 |
| 配置变更通知 | ✅ 已修复 | 敏感分组（security/payment/third_party/sms/email）变更触发 `SettingChanged` 事件 |

### 4.2 审查结论

本包为系统配置管理包，所有合规功能已实现。审计日志（SettingsService 全方法）、权限控制（SettingPolicy）、加密存储（encrypted 类型）、变更通知（SettingChanged 事件）均已完成。使用 `encrypted` 类型存储密钥/Token 等敏感配置。

---

## 五、免责声明

本合规文档基于现行法律法规编制，仅供参考。用户应根据业务实际情况和最新法律法规调整合规策略。