ISO/IEC 27034-5 — 应用安全 第5部分:协议与应用安全控制数据结构

用于自动化应用安全管理的数据格式、通信协议与API规范

ISO/IEC 27034-5 定义了实现应用安全管理中不同工具和系统之间互操作性的协议和应用安全控制数据结构。第一部分到第三部分关注应用安全的概念、组织和流程方面,而第五部分则涉及技术互操作层——允许 ASC 信息在开发工具、安全测试平台、治理系统和审计工具之间交换的数据格式、通信协议和 API 规范。该标准对于寻求自动化应用安全工作流并将安全工具集成到 DevOps 管道中的组织至关重要。

ISO/IEC 27034-5 是应用安全自动化的技术推动者。如果您希望将 ASC 规范自动从治理系统传输到开发工具并接收验证结果,该标准定义了实现这一目标所需的数据结构和协议。

应用安全的协议与数据结构

ISO/IEC 27034-5 规定了应用安全控制数据(ASCD)模型:一种可被不同软件系统序列化、传输和解释的 ASC 信息结构化数据表示。ASCD 模型为 ASC 规范定义了正式的模式,包括安全需求、控制描述、实施指导、验证标准和验证证据。这些模式被设计为技术中立的,支持 XML、JSON 和其他序列化格式。标准还定义了 ASCD 交换必须伴随的元数据,包括版本标识、作者信息、审批状态和生效日期。

标准针对不同用例规定了多种协议配置文件。离线交换配置文件支持基于文件的交换(XML 或 JSON 文件)在系统间批量传输 ASC 库。实时查询配置文件通过 RESTful API 调用支持按需检索 ASC 规范。事件驱动配置文件支持发布-订阅模式,当发生变化时 ASC 更新被推送到订阅系统。每个配置文件包括详细的消息格式、错误处理过程以及交换本身的安全考量,包括 ASC 数据在传输中的认证、完整性保护和保密性要求。

交换配置文件 用例 协议 时序 安全要求
离线交换 在隔离环境间批量传输ASC库 基于文件(XML/JSON)带数字签名 定期(每日/每周) 数字签名保证完整性,加密保证保密性
实时查询 CI/CD管道请求特定应用的ASC 基于HTTPS的RESTful API 按需(每次构建/部署) 双向TLS认证、OAuth 2.0授权
事件驱动 ASC库更新触发受影响应用的重新验证 带webhook的发布/订阅消息队列 事件触发(实时) 消息签名、重放保护、访问控制
流式传输 来自安全测试工具的连续验证结果 gRPC或WebSocket流 持续(实时) 端到端加密、速率限制、消息排序

应用安全控制数据模型

ASCD 模型定义了四种主要数据对象类型。ASCSpecification 对象包含 ASC 的完整规范,包括其标识符、版本、描述、适用上下文、安全需求、控制描述以及相关组织策略的引用。ASCVerificationPlan 对象定义验证方法,包括验证方式(评审、分析、测试)、要使用的工具、验收标准和负责角色。ASCVerificationResult 对象捕获验证活动的结果,包括通过/失败状态、证据引用、发现描述和修复建议。ASCDeploymentContext 对象描述 ASC 适用的具体应用和环境,实现了 ASC 规范与其部署实例之间的可追溯性。

标准为每个数据对象定义了一组全面的属性。例如,ASCSpecification 包括 ascID(全局唯一标识符)、versionNumber、status(草案、已批准、已弃用)、effectiveDate、expiryDate、relatedOASC(对于可追溯到 O-ASC 的 A-ASC)和 securityControls(带有实施指导的结构化控制列表)等强制性属性。可选属性包括 applicableFrameworks(如 NIST CSF、OWASP ASVS)、regulatoryReferences 和 threatModelReferences。这种丰富的数据模型支持对组织内 ASC 组合进行复杂的查询和分析。

ASCD 模型实现了强大的自动化场景。例如,当发现新的漏洞类别时,可以用新控制更新 O-ASC 库,事件驱动配置文件自动通知所有受影响的应用程序,触发重新验证工作流,并生成合规报告——所有这些都无需人工干预。
实施 ASCD 模型需要对工具集成进行前期投入,但随着应用组合的增长会带来丰厚回报。管理超过 50 个应用的组织报告,与手动流程相比,ISO/IEC 27034-5 实现的自动化将每个应用的安全管理开销减少了 70-80%。

安全工具链中的互操作性与自动化

从工程实施的角度来看,ISO/IEC 27034-5 为构建集成的应用安全工具链提供了蓝图。标准认识到现代开发环境使用多样化的工具集——静态分析、动态分析、软件组成分析、容器扫描、基础设施即代码安全和运行时保护——而有效的应用安全管理需要这些工具协同工作。ASCD 模型提供了一种通用语言,使不同的工具能够共享安全需求和验证结果。

标准还涉及 CI/CD 管道中 ASC 验证的自动化。它定义了如何将 ASCVerificationPlan 对象转换为管道阶段定义,如何由管道编排工具消费 ASCVerificationResult 对象以做出发布决策,以及在应用部署到不同环境时如何自动更新 ASCDeploymentContext 对象。这种集成水平将应用安全从手动评审过程转变为软件交付生命周期中的自动化质量关卡。标准提供了与常见 CI/CD 平台集成的具体指导,包括 Jenkins、GitLab CI、GitHub Actions 和 Azure DevOps。

实施 ASCD 交换时的一个关键安全考量是保护 ASC 数据的完整性和保密性。能够修改 ASC 规范的攻击者可能在不被发现的情况下削弱安全要求。ISO/IEC 27034-5 要求对 ASCD 对象进行数字签名,并建议在高安全环境中使用硬件安全模块进行密钥管理。切勿通过未认证的通道传输 ASC 数据,或接受来自不可信来源的未签名 ASC 规范。
问1:我需要实施所有四种交换配置文件吗?
答:不需要。大多数组织从用于 CI/CD 集成的实时查询配置文件开始,然后根据需要添加其他配置文件。离线交换配置文件主要适用于具有隔离环境的组织或与外部合作伙伴交换 ASC 时使用。从简单的开始,根据您的自动化需求进行扩展。
问2:ISO/IEC 27034-5 与 OpenSSF Scorecard 或 SLSA 兼容吗?
答:ASCD 模型被设计为可扩展的。您可以将 ASC 规范映射到 OpenSSF Scorecard 检查和 SLSA 证明。第 5 部分中定义的协议配置文件支持将这些外部框架映射作为核心 ASCD 对象的扩展进行传输。
问3:我应该使用哪种序列化格式?
答:标准支持 XML 和 JSON。对于 RESTful API 集成和基于 Web 的工具,推荐使用 JSON;而在具有成熟 XML Schema 验证工具的环境中,则首选 XML。标准还为高性能流式传输场景提供了 Protocol Buffers 序列化的指导。
问4:在自动化交换中如何处理 ASC 规范的版本控制?
答:每个 ASCSpecification 都包含 versionNumber 和 changeHistory 属性。自动化消费者在接收 ASC 更新时应检查 versionNumber 并按版本顺序处理。重大更改应使用新的 ascID 并附带对旧 ASC 的 supersedes 引用。标准建议对 ASC 规范使用语义化版本控制。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注