保护 MLOps 管道的实际步骤

所有文章

想象一下下一次董事会会议。作为组织中的安全领导者,您将向您的标准展示风险、缓解措施和事件。然后,一位董事会成员会问:你准备如何保护公司已经在使用的新人工智能技术和 MLOps 管道? 

这是你的答案。

人工智能带来新的风险

MLOps 管道(有时也称为 AI Ops)虽然对组织的价值类似于传统的数据处理系统,但具有明显的漏洞。攻击者的目标可能是 插入偏差、操纵模型结果或损害数据完整性或工具, 指着 破坏模型可靠性并扭曲决策过程. ATLAS是 MITRE 组织针对 MLOps 保护制定的框架,强调了制定定制安全措施来应对这些挑战的必要性。

人工智能将带来新的监管

人工智能和 MLOps 这一新兴领域正受到全球监管机构越来越严格的审查。在美国缺乏全面的联邦立法的情况下,美国国家标准与技术研究院 (NIST) 等机构的指导 人工智能风险管理框架1.0,提供了对未来监管框架的一瞥。该框架强调人工智能系统的可信性,包括可信人工智能系统的七个定义特征: 安全性, 安全性和复原力, 可解释性和可解释性, 隐私增强, 公平并管理有害偏见, 负责任和透明以及 有效、可靠。

MLOps 和软件供应链有很多共同点

MLOps 管道漏洞与传统软件供应链风险之间存在惊人的相似之处。这两个领域都面临着损害开发过程完整性和最终产品安全性的妥协威胁。恶意修改 LLM 与恶意修改软件依赖项非常相似;恶意修改LLM运行的软件实际上是一种软件供应链攻击; AI 世界中讨论的问责制、透明度和信任要求正是软件供应链世界中 SBOM 要求背后的内容。

MITRE 组织发布网络安全模型。 MITRE最近发布了MLOps保护的Atlas模型,可以找到 点击这里。该模型的概述如下:

阿特拉斯矩阵

就像在“传统”网络安全领域一样,人工智能和 MLOps 法规仍在制定中。遵循这些新兴法规将更容易保护 MLOps 现有资产,并证明 MLOps 流程符合现有和新兴的最佳实践。组织需要证明其模型的完整性以及模型的公正性。

有些技术可以服务于这两个领域

确保数据、代码和工具完整性的技术可以为 MLOps 和 DevOps 的软件供应链安全提供所需的完整性控制。

提供软件透明度和信任度量的技术可以为 MLOps 提供类似的价值。 

基于认证的供应链安全技术

基于证据的软件供应链保护的概念很简单:除非有足够的证据证明软件工件的可信度,否则不应信任软件工件。这一概念的实施涉及证据收集工具、评估证据以进行验证的政策引擎、违规警报和缓解建议,以及允许透明度和协作的共享机制。这 整体框架 是此类解决方案的一个学术示例。 Scribe 的软件供应链平台是该技术的商业体现,并扩展了其技术以支持 ML-Ops 挑战。

Scribe 的基于证据的方法对于证据的具体情况是不可知的;因此,相同的技术可以提供 MLOps 保护,例如:

  • 确保软件完整性和机器学习管道完整性。
  • 确保开源依赖关系的完整性和人工智能模型的完整性。
  • 评估 SAST 报告以确保特定于 AI 的测试工具报告(例如,偏差测试)。
  • 共享 SBOM 和政策评估,以及 MLBOM 和 MLOps 政策评估。 

适用于 AI/ML-Ops 的 Scribe 安全软件供应链技术

MITRE ATLAS 和 Scribe 的技术

以下是 Scribe 当前功能与 MITRE ATLAS 攻击图相比的映射:

攻击阶段技术抄写员的解决方案
攻击者资源开发发布中毒数据集
毒药训练数据。
数据的完整性:
证明所使用的数据集,并验证数据集来源和内容。
证明训练数据,并验证训练数据内容和来源。
初始访问机器学习供应链妥协数据和代码完整性:
证明 ML 管道的数据、模型、软件和配置。

ML Pipeline 策略执行:
证明操作并相应地验证策略(例如,发布流程套件、测试、访问模式)
初次访问、影响规避 ML 模型(例如精心设计的请求)准确的管道跟踪:
跟踪资源并检测 ML 管道访问模式的异常 (FS-Tracker)
执行命令和脚本解释器准确的管道跟踪:
跟踪资源并检测 ML 管道访问模式的异常 (FS-Tracker)
坚持毒训练数据数据的完整性:
证明训练数据,验证训练数据内容和来源。
坚持,
机器学习攻击阶段
后门机器学习模型数据的完整性:
证明 ML 模型生命周期,验证使用情况。
冲击系统滥用造成外部影响系统级策略:
证明系统行为和特征并相应地应用策略(例如,计算成本、访问模式)。

以下是 MITRE 缓解措施与 Scribe 技术相比的映射:

MITRE 缓解措施 ID减轻抄写员的解决方案
AML.M0005控制对 ML 模型和静态数据的访问准确的管道跟踪:
跟踪资源并检测 ML 管道访问模式的异常 (FS-Tracker)
AML.M0007清理训练数据数据的完整性:
证明并验证用于训练的数据
AML.M0011限制库加载 数据和代码完整性:
证明并验证数据模型和代码库加载。
AML.M0013代码签名 代码完整性:
证明并验证所使用的代码。
AML.M0014验证 ML 工件数据和代码完整性:
证明并验证数据模型和代码库加载。
AML.M0016漏洞扫描 漏洞扫描、策略评估:
证明漏洞扫描等工具的执行情况。评估有关这些证明的政策。
根据从 ML 管道收集的 SBOM 证明扫描漏洞。

使用 Valint 签署和验证 ML 数据集和模型

Valint 是 Scribe 强大的 CLI 工具,用于生成和验证证明。 Valint 可用于签名和验证 ML 数据集和模型。

示例:

我们想使用 HuggingFace 模型 wtp-bert-tiny。为了防止模型被泄露,我们希望在使用之前对其进行签名并验证。可以使用以下命令创建证明(签名证据):

valint bom git:https://huggingface.co/benjamin/wtp-bert-tiny -o attest

此命令将为模型的存储库创建签名证明。证明将存储在证明存储中(在本例中为本地文件夹)并进行签名(在本例中为使用 Sigstore 无密钥签名)。

该模型的典型用途是克隆存储库并使用其文件。下载后立即验证模型的完整性可以使用以下命令完成:

git 克隆 git:https://huggingface.co/benjamin/wtp-bert-tiny valint 验证 git:wtp-bert-tiny

可以使用以下命令在每次使用之前验证模型的完整性:

valint 验证 git:wtp-bert-tiny

笔记: 

  • 类似的方法可用于签署和验证数据集。
  • 机器学习模型的特点之一是其庞大的规模。为了避免下载和处理不需要的大文件, 最佳实践 是只下载必要的文件。 Valint 支持此用例,它仅支持对特定文件夹或文件进行签名。

验证 ML 模型的策略

Scribe 的 Valint 是一个强大的策略验证工具。管理风险的方法之一是执行政策。在下一节中,我们将演示如何通过对所使用的 ML 模型实施许可策略来降低风险。 

假设我们只允许在我们的项目中使用 MIT 许可证。配置完成后,Valint 可以验证它:

valint 验证 git:wtp-bert-tiny -d att -c verify-license.yml

该命令使用 验证许可证 政策定义如下:

证明:cocosign:策略:-名称:ML-policy 启用:true 模块:-名称:验证许可证类型:验证工件启用:true 输入:签名:true 格式:attest-cycledx-json rego:路径:verify-hf -license.rego

该政策实施于 验证-hf-license.rego 文件从签名证明中提取 HuggingFace 模型 ID,从 HuggingFace API 中提取有关模型的信息,并验证它是否是 MIT。

类似的流程可用于验证开源数据集的许可证。

使用案例:保护现实世界的 ML-Ops 服务

ML-Ops 服务是应用程序的一部分,可以轻松访问 AI 模型;服务用户只需陈述他们的请求,访问 ML 模型的所有实用操作都是由服务在幕后完成的。

例如::

我们希望生产和使用一项可以访问 Microsoft 的“服务”的服务指导”开源包(简单来说,该包通过运行查询链而不是单个提示来更好地利用大型语言模型(LLM))。

该服务将是一个包含服务代码和模型的 Docker 映像。我们的代码将基于 Andromeda 链项目。该项目将指导库与服务包装在一起,并使用应用程序构建 docker 镜像。

以下是 Dockerfile 的基本版本:

FROM python:3.10 COPY ./requirements.cpu.txtrequirements.txt 运行 pip3 install -rrequirements.txt 运行 mkdir models \ cd models \ git clone https://huggingface.co/api/models/benjamin/wtp-bert- tiny COPY ./guidance_serverguidance_server WORKDIRguidance_server # 设置入口点 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "9000"]

这非常简单;构建docker时,安装代码依赖,安装模型,并将服务代码复制到Docker镜像中。 

构建镜像后,我们可以使用以下 Valint 命令创建它的签名证明:

valint bom ml-service:最新-o证明

此命令生成一个签名证明,其中包含名为 ml-service 的 docker 映像的详细 SBOM。

稍后可以使用以下命令使用此证明来验证 Docker 映像:

valint 验证 ml-service:最新

此命令验证图像的完整性 - 代码和 ML 模型。每次部署镜像时都可以进行验证,从而保证使用有效的容器。

构建受保护的 ML-Ops 服务

结合前面段落中演示的功能,我们现在可以演示如何保护 ML-Ops 服务的构建:

先决条件:选择模型后 - 创建它的证明:

valint bom git:https://huggingface.co/benjamin/wtp-bert-tiny -o attest

构建管道:

1. 验证构建管道中模型的完整性和许可证:

git 克隆 https://huggingface.co/benjamin/wtp-bert-tiny valint 验证 git:wtp-bert-tiny -d att -c verify-license.yml

2. 构建 docker 并创建它的证明:

docker build -t ml-service:latest 。 valint bom ml-service:最新-o证明

3. 使用镜像前请先验证:

valint 验证 ml-service:最新

此验证步骤可确保部署的映像是使用内部经过验证的模型创建的映像。

在 Kubernetes 中的每次部署之前,可以使用 Scribe 的准入控制器执行类似的验证。 

推荐 

在 2024 年投资软件供应链安全产品,既满足软件供应链的直接需求,又满足 MLOps 不断变化的需求,是一个战略选择。

投资具有灵活策略引擎的基于证据的解决方案将允许未来与成熟的新兴领域特定 MLOps 安全技术相集成。

为什么这是一篇 Scribe 安全博客文章?

如果您阅读了此处之前的所有内容,您应该知道答案:Scribe 提供了一个基于证据/证明的软件供应链安全解决方案,具有灵活且可扩展的策略引擎。有关使用 Scribe 产品保护 MLOps 管道的详细用例,请按 点击这里.

此内容由领先的端到端软件供应链安全解决方案提供商 Scribe Security 为您提供 - 为整个软件供应链中的代码工件以及代码开发和交付流程提供最先进的安全性。 了解更多