基于生成式AI的访问控制, 迁移传统安全策略到基于LLM的风险分类器
- 基于规则的风险分类
风险分类是网络安全系统的核心能力之一,它将访问请求和命令映射到其风险级别/类别:高(High)、中(Medium)、低(Low)。目前,即便是在大规模环境中,风险分类器仍主要采用基于规则的系统实现。基于规则的分类器易于以符合人类直觉的方式定义——这也使得它们具备较好的可解释性。
在其最简单的形式下[1],基于规则的分类器可以被视为if-then-else规则,明确规定哪些访问请求应被阻止(黑名单)或允许(白名单)。在规则的编写语法中,正则表达式被广泛使用,以便单条规则可以适用于多个请求/命令。这些规则被存储在规则数据库(rules DB)中。而输入请求的执行历史及其确定的风险级别会被汇总存储在日志数据库(logs DB)中,以供离线审查/审计。此类基于规则的分类器的参考架构如图1所示。
图1:基于规则的风险分类架构(作者绘制)
这些规则通常由领域专家(SMEs)基于他们对底层系统的专业知识和经验定义。他们还会定期审查执行历史,以确保规则的正确性,并据此在规则数据库中添加/更新规则。由于这一点,基于规则的分类器的覆盖范围和有效性取决于个人的经验/历史,这可能会与真正的风险级别存在偏差。
此外,基于规则的分类器需要定期维护和手动修订,以适应不断演变的系统环境、新的访问控制策略和命令。而正则表达式也无法有效处理复杂(或冗长的)策略、命令和程序。
从基于规则的方法转换为基于机器学习(ML)的方法[2],能够减少对SME的依赖,同时具备自学习能力,能够扩展到新的流程和规则。近些年来,大型语言模型(LLMs)在这一方面展现出极大的潜力。我们将介绍一种方法,利用现有规则来提升分类准确性,并迁移到基于Transformer的安全风险分类器。
- 企业级大型语言模型(LLMs)
LLMs属于基础模型(充当解码器)的一类,需要进行微调,以完成诸如以下任务:
• 问答(QA)——例如聊天机器人
• 文本抽取
• 摘要生成
• 自动更正
• 翻译
例如,ChatGPT背后的LLMs训练自公开数据集,如Wikipedia。如今,已经出现了针对特定领域的LLMs,例如微软研究院的BioGPT,它专门针对生物医学文本的生成和挖掘进行了微调。
LLM的应用范围广泛,我们预计它们将以不同的形式进入企业环境。因此,第一步是识别并概述当前生成式AI的架构模式。
2.1 黑盒LLM API
这是典型的ChatGPT场景,用户可以通过黑盒API/UI访问LLM。
在这种模式下,提示词(Prompt) 是主要的交互方式,涵盖用户的查询和任务。提示词的作用是调整用户输入,提供正确的上下文和指导,以最大化获得“正确”响应的可能性。
这也催生了提示词工程(Prompt Engineering) 这一职业领域,提示词工程师会系统地进行试验,记录他们的发现,最终优化出“最佳”提示词,以获得最优答案。
图2:LLM API架构(作者绘制)
关于企业级提示词存储、提示词冲突问题及其模板化整合的详细讨论,可参考我之前的文章。
2.2 嵌入式LLM应用
本节讨论的是嵌入在企业平台(如Salesforce、SAP、ServiceNow)中的LLMs,或由LLM提供商(如Google、OpenAI)在应用商店上发布的即用型企业应用。
企业级LLM应用有望加速LLM的企业化应用,但在使用之前,企业应谨慎考虑与第三方ML模型类似的问题,例如:
• LLM训练数据的所有权
• 知识产权(IP)问题
• 责任条款
数据所有权问题:数据对于监督式AI/ML系统至关重要,尤其是对于LLMs而言。LLMs通常基于公共数据集训练,而这些数据的AI/ML训练使用权并未被清晰定义,甚至可能随着时间推移发生变化。例如,Reddit曾宣布,将对基于其庞大用户数据进行AI/ML训练的企业收费。
因此,关于训练数据、输入数据、输出数据以及所有生成数据的所有权问题,企业需要进行谈判。此外,企业还应了解/评估应用提供商如何使用其用户交互所产生的数据。
图3:嵌入企业应用/平台的LLM应用架构(作者绘制)
2.3 LLM微调/领域特定SLMs
LLMs本质上是通用的。为了充分发挥LLMs在企业环境中的潜力,需要用企业知识(如文档、维基、业务流程等)对其进行上下文化。这种上下文化通常通过微调LLM,创建领域特定的小型语言模型(SLM) 来实现。
图4:企业LLM上下文化策略(作者绘制)
微调(Fine-tuning)是指对预训练LLM进行再训练,使用较小规模的企业数据,使其更符合企业需求。
从技术角度来看,这意味着更新神经网络训练好的最后几层的权重,使其适应企业数据和任务。然而,微调需要访问底层模型的权重,对于封闭模型(如ChatGPT)来说,这通常是不可能的。这时,开源预训练LLM成为了一种解决方案,例如Meta的LLaMA模型系列。
斯坦福Alpaca项目 证明,只需花费600美元即可对LLaMA模型进行微调,使其性能接近ChatGPT。因此,微调LLM并不一定复杂或昂贵。
图5:使用企业数据微调LLM(作者绘制)
2.4 检索增强生成(RAG)
微调是一个计算密集型的过程,而RAG(检索增强生成)提供了一种可行的替代方案。它通过为提示词提供额外的上下文,使检索和响应更符合特定场景。
RAG的实现方式通常是先通过索引文档或向量搜索检索一组相关文档,然后将这些文档作为上下文提供给LLM,以限制生成的响应范围。如今,大多数LLM平台都支持较长的提示词,因此可以将企业上下文嵌入到提示词中。
给定一个用户查询,RAG流水线主要包括以下三个阶段:
• 检索(Retrieve): 将用户查询转换为嵌入(向量格式),然后计算它与其他内容的相似度分数(搜索)。
• 增强(Augment): 使用从向量存储中检索到的搜索结果/上下文,该存储保持最新,并与底层文档存储库同步。
• 生成(Generate): 将检索到的内容片段嵌入到提示词模板中,为LLM提供额外的上下文,以更好地回答查询。
图6:检索增强生成(RAGs)(作者绘制)
- 基于LLM的安全风险分类器:训练与部署
本节将介绍一个基于LLM微调的安全风险分类器训练流水线。这与以往在安全相关任务中应用自然语言处理(NLP)技术的方法类似,例如恶意命令检测[3]、安全代码生成[4]等。
过去几年,NLP领域发生了巨大变革,主要由两种基于Transformer架构的大型深度学习模型推动:谷歌的BERT(双向编码表征) 和 OpenAI的GPT(生成式预训练模型)。
其中,BERT架构在分类任务上表现优于其他架构,例如GPT更适用于生成任务。BERT通过在NLP任务(如掩码词预测和下一句预测)上预训练Transformer深度神经网络,以学习单词间的语法和上下文关系。这种学习是自监督的,仅需要文本语料库,无需标注数据。在此基础上,微调BERT模型,使其适应具体的文本分类任务。
下图展示了一个利用现有基于规则系统的安全风险分类器的训练和部署流水线。
图7:基于Transformer的安全风险分类器架构,结合现有基于规则的系统(作者绘制)
3.1 预处理
在预处理阶段,输入字符串会通过分词(Tokenization)方法拆分成一系列标记(Tokens),例如字节对编码(BPE)。
不管是BPE还是基于空格的分词方法,目标都是识别出最优的标记集,使它们在语料库中出现得更频繁。BPE是一种无监督分词方法,它通过递归地将最常出现的字符对替换为语料库中不存在的字符,从而获得更短、更稳定的标记,特别是针对语料库中未见的词汇。
3.2 BERT训练
编码后的标记会被输入到双向Transformer架构的编码-解码器(Encoder-Decoder) 结构中。最后添加一个分类层,该层会接收Transformer的输出,并将其映射到输入字符串对应的风险类别(High、Medium、Low),同时输出相应的概率。
BERT训练阶段实际上包含两个步骤:
BERT预训练(BERT Pre-training)
BERT微调(Fine-tuning)
BERT的预训练通常采用两种无监督任务[5]:
• 掩码语言模型(Masked LM):随机掩盖一定比例的输入标记,并要求模型预测这些被掩盖的标记。这种方式避免了双向模型“看到自己”,从而在多层上下文中轻松预测目标词。
• 下一句预测(NSP):用于理解句子之间的关系,这是许多NLP任务(如问答)所需的基础能力。BERT通过任何语言语料库都可以轻松生成这种任务数据,并在此基础上进行预训练。
接下来是微调阶段(Fine-tuning),即使用带有风险类别标签的数据集,以监督学习的方式训练预训练好的BERT模型。
这个训练/验证数据集 可以从现有的基于规则系统中获取,包含一系列真实的访问请求 及其由领域专家(SMEs)验证过的风险级别。
- 结论
访问控制策略是大多数企业的关键安全措施。由于它们的重要性,设计不良的策略可能会导致数据泄露、合规性问题和运营中断,进而给企业带来经济损失和声誉风险。
然而,访问控制策略的制定和维护极其消耗资源,随着企业应用的逻辑复杂度和用户数量增长,手动维护 这些策略在长期来看根本不可行。
此外,这一过程还受领域专家(SMEs) 经验的影响,难以避免个人主观偏见,导致策略的有效性受限。
为了解决这些问题,我们提出了一种方法论,用于迁移现有的访问控制规则 到基于Transformer 的安全风险分类器。这种方法能够自动化 访问控制策略的执行和更新,特别是对于传统企业应用(Legacy Apps),它有潜力彻底改变 企业安全领域的现状。
基于生成式AI的访问控制, 迁移传统安全策略到基于LLM的风险分类器的更多相关文章
- 生成式AI对业务流程有哪些影响?企业如何应用生成式AI?一文看懂
集成与融合类ChatGPT工具与技术,以生成式AI变革业务流程 ChatGPT背后的生成式AI,聊聊生成式AI如何改变业务流程 ChatGPT月活用户过亿,生成式AI对组织的业务流程有哪些影响? 生成 ...
- 把传统的基于sql的企业信息中心迁移到spark 架构应该考虑的几点思考...[修改中]
把传统的基于sql的企业信息中心迁移到spark 架构应该考虑的几点 * 理由: 赶时髦, 这还不够大条么? > 数据都设计为NO-SQL模式, 只有需要search的才建立2级索引. 就可以 ...
- 生成式AI会成为是人工智能的未来吗
生成式 AI 是一项创新技术,可帮助算法人员生成以前依赖于业务员的模型,提供创造性的结果,而不会因业务员思想和经验而产生任何差错. 人工智能中的这项新技术确定了输入的原始模型,以生成演示训练数据特征. ...
- RBAC基于角色的权限访问控制
RBAC是什么,能解决什么难题?ThinkPHP中RBAC实现体系安全拦截器认证管理器访问决策管理运行身份管理器ThinkPHP中RBAC认证流程权限管理的具体实现过程RBAC相关的数据库介绍Th ...
- 实践案例丨基于ModelArts AI市场算法MobileNet_v2实现花卉分类
概述 MobileNetsV2是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网,此模型基于 MobileNetV2: Inverted Residuals and Linear ...
- 百度生成式AI产品文心一言邀你体验AI创作新奇迹:百度CEO李彦宏详细透露三大产业将会带来机遇(文末附文心一言个人用户体验测试邀请码获取方法,亲测有效)
目录 中国版ChatGPT上线发布 强大中文理解能力 智能文学创作.商业文案创作 图片.视频智能生成 中国生成式AI三大产业机会 新型云计算公司 行业模型精调公司 应用服务提供商 总结 获取文心一言邀 ...
- 基于百度AI开放平台的人脸识别及语音合成
基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...
- SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建
SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...
- RABC(Role-Based Access Control) 基于角色的权限访问控制
基于角色的权限访问控制(Role-Based Access Control),通过角色绑定权限,然后给用户划分角色.在web应用中,可以将权限理解为url,一个权限对应一个url. 使用thinkph ...
- python基于百度AI开发文字识别
很多场景都会用到文字识别,比如app或者网站里都会上传身份证等证件以及财务系统识别报销证件等等 第一步,你需要去百度AI里去注册一个账号,然后新建一个文字识别的应用 然后你将得到一个API Key 和 ...
随机推荐
- ContosoRetailDW数据库恢复问题
https://www.microsoft.com/en-us/download/details.aspx?id=18279 下载 ContosoBIdemoBAK.exe和ContosoBIdemo ...
- AI让照片跳舞,人人都能是舞王!Swan下载介绍
最近,兵马俑.马斯克以及各地网友跳科目三和网红舞的视频陆续在社交媒体和朋友圈刷屏,这些大约10秒左右的视频都不是真人出镜,均由大模型生成,这种低门槛的跳舞方式引发了网友的广泛体验,掀起了一波斗舞狂潮「 ...
- 使用 spring stream 发送消息
为什么使用spring stream ? spring stream 是用来做消息队列发送消息使用的.他隔离了各种消息队列的区别,使用统一的编程模型来发送消息. 目前支持: rabbitmq kafk ...
- ELSTICSEARCH 将数据从热节点转到冷节点
在ES查询时,有些数据是热点数据,这些数据是需要需要更好的机器配置的节点,当数据变得不是那么重要的时候,我们需要转到配置相对低的节点上. 比如热点新闻专题,我们需要更好的机器,热点过后,这些数据不再需 ...
- N皇后问题(DFS-深度优先算法)
N皇后问题(DFS-深度优先算法) 题目描述: 在 N×N 的方格棋盘放置了 N 个皇后,使得它们不相互攻击(即任意 22 个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 45° 的斜线上. ...
- nvm切换版本报exec: “cmd”: executable file not found in %PATH% 问题
由于也是第一次用,出了个这报错懵了 搜了下也没个准确的解决办法(也可能是问题太简单),有的说可能是cmd变量没配好,检查了一遍没问题 后来想到报的是cmd,而cmd存储位置在 C:\Windows\S ...
- iOS Aliyun语音识别&语音合成
Aliyun 语音识别&语音合成 导入 SDK 将ZIP包中的nuisdk.framework添加到工程中,并在工程Build Phases的Link Binary With Librarie ...
- mysql将公司数据随机挂在部门身上
1.创建示例数据 CREATE TABLE department_table ( company_code VARCHAR(10) COMMENT '公司编码', company_name VARCH ...
- 精通 ASP.NET Core MVC (第 7 版) 源码下载
将使用的 .NET 版本更新到 5.0 版本. GitHub 地址:https://github.com/haoguanjun/pro-asp.net-core-mvc-2
- StreamJsonRpc.ConnectionLostException 在请求完成之前, 与远程方的 JSON-RPC 连接已丢失
今天电脑重启之后,发现 visual studio 2022 的智能提示与报错经常性不好用,不光不能在正常时候提示代码错误信息,甚至在编译过后也不提示错误.反复重启,刚开始正常,隔一会儿就会提示什么什 ...