生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测,到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元,年复合增长率超过 30%,而 Gartner 则预估到 2025 年约 30% 的网络攻击将利用生成式 AI 技术。与此同时,Capgemini 的调查显示,近 74% 的企业认为 AI 驱动的安全防护至关重要,加上 Cybersecurity Ventures 报告指出,与生成式 AI 相关的安全事件年增长率超过 20%,这充分表明企业和安全供应商正面临日益严峻的安全挑战,并加大投入以构建更全面的防护体系。今天要介绍的就是如何设计生成式AI应用安全解决方案,抵御OWASP Top 10攻击。未来也会分享更多的AI安全解决方案,欢迎大家关注。

目前我们生活中有各色各样的生成式 AI应用,常见的场景之一就是生成式AI对话助手。然而在部署之前,通常还要对应用进行评估,其中包括了解安全态势、监控和日志记录、成本跟踪、弹性等问题。在这些评估中,安全性通常是最高优先级。如果存在无法明确识别的安全风险,我们就无法有效解决这些风向,这可能会阻碍生成式AI应用向生产环境部署的进度。

在本文章中,小李哥将向大家展示一个自己设计的生成式应用的真实场景,并演示如何利用 OWASP安全框架,基于大语言模型应用常见的Top 10安全攻击来评估应用的安全态势,以及实施缓解措施。下图就是一个生成式AI应用的安全解决方案最佳实践,我们将继续从左到右详细介绍本方案中使用到的安全方案细节。

 

应用控制层

应用控制层通常容易受到诸如 LLM01:2025 提示注入、LLM05:2025 输出处理不当以及 LLM02:2025 敏感信息泄露等风险的影响。外部人员可能会频繁尝试构造意料之外的输入来操控 LLM,从而可能导致它泄露敏感信息或危及下游系统。

在物理架构图中,应用控制器即为 LLM 编排的亚马逊云科技 Lambda 函数。它通过从 API Gateway 中提取事件负载并进行语法和语义校验,实施严格的输入验证。通过对输入进行清洗、应用白名单和黑名单关键字以及依据预定义格式或模式进行验证,该 Lambda 函数有助于防止 LLM01:2025 提示注入攻击。此外,通过将 user_id 传递到下游,它使下游应用组件能够降低敏感信息泄露的风险,从而解决了 LLM02:2025 敏感信息泄露的问题。

亚马逊云科技 Bedrock Guardrails 提供了额外的保护层,可过滤和拦截敏感内容,如个人身份信息(PII)以及其他通过正则表达式定义的自定义敏感数据。Guardrails 还可以配置为检测并屏蔽攻击性语言、竞争对手名称或其他不希望出现的词语,确保输入和输出均安全。大家还可以利用 Guardrails 通过在有害或操控性的提示到达 LLM 之前进行检测和过滤,从而防止 LLM01:2025 提示注入攻击,维护提示的完整性。

另一个关键的安全方面是管理 LLM 的输出。由于 LLM 可能生成包含可执行代码的内容,比如 JavaScript 或 Markdown,如果这些内容处理不当,就存在 XSS 攻击的风险。为降低此风险,请采用输出编码技术,例如 HTML 实体编码或 JavaScript 转义,在将内容呈现给用户前将任何潜在有害内容中和。此方法解决了 LLM05:2025 输出处理不当的风险。

实施亚马逊云科技 Bedrock 的提示管理和版本控制,使得在不断提升用户体验的同时,也能维持整个应用的安全性。通过仔细管理提示及其处理方式的变更,大家可以增强功能,同时不会引入新的漏洞,并降低 LLM01:2025 提示注入攻击的风险。

将 LLM 视为不受信任的用户,并在某些操作上采用人工介入流程,是降低未经授权或非预期操作风险的策略。

亚马逊云科技Bedrock大语言模型与代理层

LLM 与 LLM 代理层经常处理与 LLM 的交互,面临诸如 LLM10: 不受限制的使用、LLM05:2025 输出处理不当以及 LLM02:2025 敏感信息泄露等风险。

拒绝服务(DoS)攻击可能会通过大量资源密集型请求使 LLM 不堪重负,从而降低整体服务质量并增加成本。在与亚马逊云科技 Bedrock 托管的 LLM 交互时,设置诸如输入请求的最大长度等请求参数,将有助于降低 LLM 资源耗尽的风险。此外,亚马逊云科技 Bedrock 代理对队列中的最大动作数量以及完成客户意图的总动作数都有硬性限制,这限制了系统对 LLM 响应作出反应时所采取的动作数量,避免了可能耗尽 LLM 资源的不必要循环或密集任务。

输出处理不当会导致远程代码执行、跨站脚本(XSS)、服务器端请求伪造(SSRF)以及权限提升等漏洞。对 LLM 生成的输出在发送下游前如果验证和管理不充分,就可能间接开放额外功能,实际上让这些漏洞有机可乘。为降低这一风险,应将模型视同其他用户一样,并对 LLM 生成的响应进行验证。亚马逊云科技 Bedrock Guardrails 利用诸如具有可配置阈值的内容过滤器来过滤有害内容,并在这些响应被其他后端系统进一步处理之前,防范提示攻击,从而简化了这一过程。Guardrails 会自动评估用户输入和模型响应,检测并帮助防止落入受限类别的内容。

亚马逊云科技 Bedrock 代理执行多步骤任务,并与亚马逊云科技原生服务以及第三方服务安全集成,从而降低输出处理不安全、代理行为过度和敏感信息泄露的风险。在架构图中,代理下的 action group Lambda 函数用于对所有输出文本进行编码,使其自动无法被 JavaScript 或 Markdown 执行。此外,action group Lambda 函数会解析代理每一步执行时从 LLM 得到的每个输出,并相应地控制输出处理,确保在进一步处理前其内容安全。

敏感信息泄露是 LLM 面临的一大风险,因为恶意的提示工程可能会导致 LLM 无意中在响应中泄露不该公开的细节,从而引发隐私和机密性问题。为缓解这一问题,应通过亚马逊云科技 Bedrock Guardrails 中的内容过滤器实施数据清洗措施。

另外,还应根据 user_id 实施自定义数据过滤策略,并执行严格的用户访问策略。亚马逊云科技 Bedrock Guardrails 有助于过滤被认为敏感的内容,而亚马逊云科技 Bedrock 代理则通过允许大家在预处理和后处理模板中实施自定义逻辑来剥离任何意外信息,进一步降低了敏感信息泄露的风险。如果大家已为 LLM 启用了模型调用日志记录,或者在应用中实施了自定义日志逻辑,将 LLM 的输入和输出记录到亚马逊云科技 CloudWatch 中,那么诸如 CloudWatch 日志数据保护等措施在屏蔽 CloudWatch 日志中识别出的敏感信息方面就显得十分重要,从而进一步降低敏感信息泄露的风险。


代理插件控制层(action group Lambda函数)

代理插件控制层经常需要与内部和外部服务集成,并对内部和外部数据源以及第三方 API 应用自定义授权。在这一层面,LLM08:2025 向量与嵌入薄弱性以及 LLM06:2025 代理行为过度的风险开始显现。不受信任或未经验证的第三方插件可能会以意外代码的形式引入后门或漏洞。

对与外部系统进行插件集成交互的 action group Lambda 函数所使用的亚马逊云科技身份与访问管理(IAM)角色,应用最小权限访问原则,有助于缓解 LLM06:2025 代理行为过度和 LLM08:2025 向量与嵌入薄弱性的风险。从物理架构图可以看出,代理插件层的 Lambda 函数便是关联了一个最小权限的 IAM 角色,用以安全访问和与其他内部亚马逊云科技服务进行交互。

此外,在确定用户身份后,通过将 user_id 传递给下游层(如代理插件层),以应用基于用户的访问控制,从而进一步限制数据平面的访问。虽然这个 user_id 参数可在代理插件控制层 Lambda 函数中用于自定义授权逻辑,但其主要作用在于为第三方插件提供细粒度的访问控制。应用所有者有责任在 action group Lambda 函数中实施自定义授权逻辑,将 user_id 参数与预定义规则相结合,为第三方 API 和插件应用合适的访问级别。此方法将确定性的访问控制包裹在非确定性的 LLM 周围,使得对哪些用户可以访问和执行特定第三方插件实现了细粒度控制。

将基于 user_id 的数据授权与 IAM 角色的最小权限相结合,一般可最大限度地降低 LLM08:2025 向量与嵌入薄弱性以及 LLM06:2025 代理行为过度的风险。


RAG知识库数据存储层

RAG 数据存储层负责安全地从各类第一方和第三方数据源中检索最新、精准且受用户访问控制的知识。默认情况下,亚马逊云科技 Bedrock 使用亚马逊云科技管理密钥加密所有与知识库相关的数据。或者,大家也可以选择使用客户管理的密钥。在为知识库设置数据摄取作业时,还可以使用自定义的亚马逊云科技密钥管理服务(AWS KMS)密钥对作业进行加密。

如果大家决定在亚马逊 OpenSearch Service 中使用向量存储作为知识库,亚马逊云科技 Bedrock 可将大家选择的 KMS 密钥传递给它进行加密。此外,在生成查询知识库响应的会话中,也可以使用 KMS 密钥对会话进行加密。为了便于安全通信,亚马逊云科技 Bedrock 知识库在与第三方向量存储进行交互时,会使用 TLS 加密,前提是该服务支持并允许 TLS 加密传输。

关于用户访问控制,亚马逊云科技 Bedrock 知识库使用过滤器来管理权限。大家可以利用元数据和过滤功能,在知识库上构建分段访问解决方案。在运行时,应用必须对用户进行身份验证和授权,并在查询中包含该用户信息,以保持准确的访问控制。为了使访问控制保持最新,大家应定期重新同步数据,以反映权限的任何变化。另外,用户组也可以作为一个可过滤属性进行存储,从而进一步细化访问控制。

这种方法有助于缓解 LLM02:2025 敏感信息泄露和 LLM08:2025 向量与嵌入薄弱性的风险,确保只有授权用户才能访问相关数据。

总结

在本文中,大家了解了如何利用亚马逊云科技生成式 AI 安全范围矩阵,从安全共享责任的角度对生成式 AI 应用进行分类。我们回顾了一个常见的生成式 AI 助手应用架构,并利用 OWASP 针对大语言模型的 Top 10 框架评估了其安全态势,同时展示了如何利用亚马逊云科技服务控制和服务应用 OWASP Top 10 对 LLM 威胁的缓解措施,从而强化生成式 AI 助手应用的架构。想了解更多关于如何使用亚马逊云科技 Workshops for Bedrock 构建生成式AI应用的信息,请继续关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12387.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来,生成式 AI 安全市场正迅速发展。据 IDC 预测,到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元,年复合增长率超过 30%…

mysql运维

1、msyqlLinux通用二进制安装 1. MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/https://downloads.mysql.com/archives/community/https://downloads.mysql.com/archives/community/https://downloads.mysql…

蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心

所谓刷题,最重要的就是细心 📌 题目描述 在 X 进制 中,每一数位的进制不固定。例如: 最低位 采用 2 进制,第二位 采用 10 进制,第三位 采用 8 进制, 则 X 进制数 321 的十进制值为&#xff…

使用VCS对Verilog/System Verilog进行单步调试的步骤

Verilog单步调试: System Verilog进行单步调试的步骤如下: 1. 编译设计 使用-debug_all或-debug_pp选项编译设计,生成调试信息。 我的4个文件: 1.led.v module led(input clk,input rst_n,output reg led );reg [7:0] cnt;alwa…

【单层神经网络】softmax回归的从零开始实现(图像分类)

softmax回归 该回归分析为后续的多层感知机做铺垫 基本概念 softmax回归用于离散模型预测(分类问题,含标签) softmax运算本质上是对网络的多个输出进行了归一化,使结果有一个统一的判断标准,不必纠结为什么要这么算…

Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)

目录 1.镜像名的组成 2.镜像操作相关命令 镜像常用命令总结: 1. docker images 2. docker rmi 3. docker pull 4. docker push 5. docker save 6. docker load 7. docker tag 8. docker build 9. docker history 10. docker inspect 11. docker prune…

【25考研】南开软件考研复试复习重点!

一、复试内容 复试采取现场复试的方式。复试分为笔试、机试和面试三部分。三部分合计100分,其中笔试成绩占30%、机试成绩占30%、面试成绩占40%。 1.笔试:专业综合基础测试 考核方式:闭卷考试,时长为90分钟。 笔试考查内容范围…

Codeforces Round 1002 (Div. 2)(部分题解)

补题链接 A. Milya and Two Arrays 思路&#xff1a;题意还是比较好理解&#xff0c;分析的话我加了一点猜的成分&#xff0c;对a&#xff0c;b数组的种类和相加小于4就不行&#xff0c;蒋老师的乘完后小于等于2也合理。 AC代码&#xff1a; #include <bits/stdc.h> u…

84-《金银花》

金银花 金银花 &#xff0c;正名为忍冬&#xff08;学名&#xff1a;Lonicera japonica Thunb. &#xff09;。“金银花”一名出自《本草纲目》&#xff0c;由于忍冬花初开为白色&#xff0c;后转为黄色&#xff0c;因此得名金银花。药材金银花为忍冬科忍冬属植物忍冬及同属植物…

2000-2020年 儒家文化-儒学中心数据-社科数据

儒家文化-儒学中心数据&#xff08;2000-2020年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90024739 https://download.csdn.net/download/paofuluolijiang/90024739 儒家文化作为中国传统文化的核心之一&#xff0c;对中国社会的发展产生了深远…

unordered_map/set的哈希封装

【C笔记】unordered_map/set的哈希封装 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】unordered_map/set的哈希封装前言一. 源码及框架分析二.迭代器三.operator[]四.使用哈希表封装unordered_map/set后言 前言 哈…

JVM 四虚拟机栈

虚拟机栈出现的背景 由于跨平台性的设计&#xff0c;Java的指令都是根据栈来设计的。不同平台CPU架构不同&#xff0c;所以不能设计为基于寄存器的。优点是跨平台&#xff0c;指令集小&#xff0c;编译器容易实现&#xff0c;缺点是性能下降&#xff0c;实现同样的功能需要更多…

ChatGPT提问技巧:行业热门应用提示词案例--咨询法律知识

ChatGPT除了可以协助办公&#xff0c;写作文案和生成短视频脚本外&#xff0c;和还可以做为一个法律工具&#xff0c;当用户面临一些法律知识盲点时&#xff0c;可以向ChatGPT咨询获得解答。赋予ChatGPT专家的身份&#xff0c;用户能够得到较为满意的解答。 1.咨询法律知识 举…

mysql 学习8 函数,字符串函数,数值函数,日期函数,流程函数

函数 一 字符串函数 二 数值函数 三 日期函数 四 流程函数

机器学习--1.KNN机器学习入门

1、机器学习概述 1.1、什么是机器学习 机器学习&#xff08;Machine Learning&#xff09;是人工智能&#xff08;Artificial Intelligence&#xff09;领域的一个子集&#xff0c;它主要关注如何让计算机系统通过经验学习&#xff08;数据&#xff09;并自动改进性能。机器学…

【数据结构】(4) 线性表 List

一、什么是线性表 线性表就是 n 个相同类型元素的有限序列&#xff0c;每一个元素只有一个前驱和后继&#xff08;除了第一个和最后一个元素&#xff09;。 数据结构中&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…

go-zero学习笔记(三)

利用goctl生成rpc服务 编写proto文件 // 声明 proto 使用的语法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可选) option go_package "./demo";// 如需为 .proto 文件添加注释&#xff0c;请使用 C/C 样式的 // 和 /* ... */…

深入浅出:频谱掩码 Spectral Masking —— 噪音消除利器

在语音处理领域&#xff0c;噪声是一个常见的敌人。无论是语音通话、语音识别&#xff0c;还是语音合成&#xff0c;噪声都会大大降低语音的质量和可理解性。为了解决这个问题&#xff0c;Spectral Masking&#xff08;频谱掩码&#xff09; 模型应运而生。它通过从带噪信号的频…

LeetCode --- 434周赛

目录 3432. 统计元素和差值为偶数的分区方案 3433. 统计用户被提及情况 3434. 子数组操作后的最大频率 3435. 最短公共超序列的字母出现频率 一、统计元素和差值为偶数的分区方案 本题可以直接模拟&#xff0c;当然我们也可以来从数学的角度来分析一下这题的本质 设 S S S …

如何安全地管理Spring Boot项目中的敏感配置信息

在开发Spring Boot应用时&#xff0c;我们经常需要处理一些敏感的配置信息&#xff0c;比如数据库密码、API密钥等。以下是一个最佳实践方案&#xff1a; 1. 创建配置文件 application.yml&#xff08;版本控制&#xff09; spring:datasource:url: ${MYSQL_URL:jdbc:mysql…