# 生产环境安全检查清单

DRM-X 6.0 正式上线前的检查清单：最小权限凭据、服务端播放规则、敏感信息保护、日志安全、请求转发范围，以及播放结束后的会话释放。

加密视频和 DRM 许可证通过不同路径传输

CDN 负责传输加密视频。您的后端检查观看权限，DRM 许可证服务则授权兼容设备解密播放。

- 01**存储 / CDN**

向播放器传输加密媒体。

- 02**您的后端**

确认用户有权观看后，向 DRM-X 请求播放授权。

- 03**DRM-X**

验证播放授权并处理 DRM 许可证请求。

- 04**播放器 + 设备**

使用设备的 DRM 系统获取许可证，并播放加密媒体。

您的后端决定访问; DRM-X 执行已签名的政策。 加密的媒体和DRM 许可证会遵循不同的传送路径 。

## 凭据管理[#](#credential-controls)

- 分别为 Development 和 Production 创建独立的 API 客户端。
- 播放集成只授予 `license-tokens:create` 权限。
- 将 Access Key 保存在密钥管理服务或受保护的运行时配置中。不要放入源代码、镜像、前端构建文件、APK、IPA 或日志。
- 怀疑凭据泄露时立即更换，并删除不再使用的 API 客户端。
- 将出站请求限制在预期的 DRM-X API 和代理源站范围内。



## 授权控制[#](#authorization-controls)

- 从认证的服务器会话中解析 `subject` 。
- 在服务器端将内容目录记录映射到可信且状态为 Published 的加密文件 Content IDs。
- 根据产品、套餐、租赁、课程、设备或内容档位，选择已批准的命名模板或完整自定义策略。
- 不要信任播放器提交的 Manifest URL、许可证 URL、策略 JSON、画质权限或用户身份。
- 每次实际发起播放时，生成一个新的、不可预测的会话 ID。



## 网络传输与浏览器限制[#](#transport-and-browser-controls)

- 使用 HTTPS，验证 TLS，并拒绝跳转到不可信地址。
- 明确设置超时时间及请求大小上限。
- 仅向响应中返回的证书、许可证、续期和会话释放路径附加授权信息。
- 原样保留原生 DRM Challenge 和许可证二进制数据，不要转换其字节内容。
- 返回播放响应时设置 `Cache-Control: no-store`，并避免将响应持久保存在浏览器中。



## 记录诊断信息时排除敏感数据[#](#evidence-without-secrets)

记录关联 ID、阶段、状态、耗时、环境、应用 ID、DRM 系统和安全的内容引用。对请求头及查询参数进行脱敏。不要记录 Access Keys、DRM License Tokens、内容密钥、私钥、证书、原生 DRM Challenge、许可证响应体，或完整的成功播放响应。

**准确描述安全保障情况**当前平台的安全控制应描述为参照 ISO 27001 要求设计或正在开展认证准备工作。在实际完成认证之前，不得宣称已取得经认可的 ISO/IEC 27001 认证。



## 启用验收[#](#go-live-acceptance)

- 验证以下情况均会拒绝授权：用户无权观看、Token 过期、DRM 系统错误、Content ID 错误，或请求了未获准的画质。
- 对每个宣称支持的平台，使用实体设备验证播放及输出设备切换。
- 确认停止播放、更换视频、发生错误和关闭应用时，均会释放占用的并发播放名额。
- 检查已脱敏的诊断数据及事件处理手册。
- 备份受保护的配置，并在上线前验证能够恢复。

<!-- Canonical: https://docs.drm-x.com/zh-Hans/security/production-checklist -->
<!-- Language: zh-Hans -->
