看到这个标题,可能有人会觉得夸张:大模型不就是个对话工具吗,怎么和网盘扯到一起了?但最近在帮几个团队做数据安全梳理时,我发现一个非常普遍的现象:很多开发者把大模型对话窗口当成了“临时网盘”,把代码片段、表结构、CSV 导出文件、接口文档甚至合同草稿直接粘贴进去,或者上传到所谓“知识库”里,以为上传之后就是“存进去了”,以后随时可以查。
这不是个别现象。现在不少大模型应用都提供了文件解析、对话记忆、知识库、历史记录等功能,用起来确实很像网盘:上传、保存、随时追问。但从数据安全的角度看,大模型和网盘完全是两种东西。网盘的定位是持久化存储,核心是“保管”;大模型的定位是推理计算,核心是“处理”。如果把大模型当成网盘来用,数据一旦离开你的控制边界,后续的存储、使用、训练、删除、泄露都不是你能主导的。
这篇文章会从数据安全视角拆解:为什么不能把大模型当成网盘、数据上传后会经历什么、企业场景下应该如何安全地使用大模型能力,并给出 3 个可以直接落地的 Python 工程示例,帮助你把“敏感数据前置处理”和“调用审计”做起来。适合后端开发、数据工程师、安全合规负责人阅读。
1. 为什么要警惕“大模型当网盘”
1.1 大模型与网盘的定位差异
网盘的核心能力是存储与共享。它关心的是文件是否完整、上传下载是否顺畅、分享链接是否过期,以及不同用户之间是否有清晰的读写权限。简单来说,网盘是一个“仓库”,数据放在里面,默认是为了长期保留。
大模型的核心能力是推理与生成。你输入一段话,它给你生成一段回复;你上传一份文档,它读取后回答你的问题。整个过程的重心在“处理”而不是“保管”。很多大模型服务商会写明用户输入的保存期限和用途,但那是服务协议层面的约定,不是你的数据控制权。
这两者最本质的区别是:网盘里的数据主要由你控制,你能制定权限、能按期删除、能拿到完整的文件列表;而大模型里的输入数据,即使你看到界面上有“历史记录”,也不代表数据真正按照你的意志被保存、隔离和销毁。你把数据交给大模型时,交出去的是“处理权”和“控制权”,而不是单纯的“存放权”。
1.2 为什么容易产生误判
产品形态越来越像,是产生误判的直接原因。现在很多大模型应用支持上传 PDF、Word、Excel 文件,甚至在同一个对话中反复引用这些文件,给人的感觉就是“文件被保存下来了”。再加上一些应用提供了“长期记忆”“知识库”功能,这些功能从交互上看非常接近网盘里的“文件夹”,用户自然会产生依赖。
另一个原因是效率焦虑。开发者遇到报错,直接复制日志和代码片段问大模型,比翻文档、查搜索引擎更快;业务人员写材料,把内部资料丢给大模型做摘要,比自己从头看更快。在这种“省时间”的驱动下,很多人忽略了数据进入大模型之后到底发生了什么事情。时间一长,大模型就成了事实上的“公司内部资料库”。
1.3 一个简单的判定标准
判断一项能力能不能承载你的数据,可以问三个问题:
- 数据存储在哪里?由谁负责?
- 谁能访问这些数据?访问是否需要授权?
- 数据删除后,能否确认彻底销毁?
网盘可以明确回答这三个问题,并且通常提供权限配置和回收站机制。大模型很难给出让你满意的回答:你只知道数据被“接收”了,很难知道它被存在哪个机房、哪些人有权限看到、训练数据里是否已经包含了你上传的内容。如果某个服务不能清晰回答这三个问题,那么它就只能作为“处理工具”,不能作为“存储空间”。
2. 把数据直接交给大模型,会面临哪些风险
2.1 数据控制权转移
当你把一段代码、一份表格或一段业务描述粘贴进大模型对话窗口时,这些数据就已经离开了你的终端。接下来,数据的读取、处理、缓存、落盘行为都发生在服务提供方的环境中。你不再能通过本地删除来撤销这次传输,也无法确认服务方内部有哪些角色在什么环节接触到了数据。
对企业来说,这意味着数据控制权的丧失。内部系统可以通过网络策略限制谁可以访问数据库,但一个员工把数据贴进大模型之后,原先所有的访问控制防线都失效了。数据库管理员还能看到查询日志,但大模型服务平台内部的日志、缓存、备份、监控链路,你一概看不到。这种“黑盒”状态本身就是安全风险。
2.2 数据可能进入训练集
大模型服务商是否会用用户输入做训练,不同产品有不同的默认策略。有些产品默认会利用对话数据优化模型,有些需要用户在设置里手动关闭,有些则承诺不会用于训练。但问题在于:条款可能变化,默认可能调整,而你很难在每次粘贴数据之前都去核对一份更新频繁的服务条款。
更麻烦的是“模型记忆”问题。即使数据没有进入训练集,模型在长对话上下文中仍然可能保留你的输入内容。如果这是一个多租户共享的模型服务,其他人通过巧妙的提示词注入,有可能诱导模型输出之前出现过的内容。这类攻击不是理论上的,提示词注入、间接注入已经是非常活跃的安全研究方向。把内部数据送进共享模型,等于让第三方有机会接触到你的业务上下文。
2.3 删除不是真正的删除
本地文件删掉,可以从回收站清空;网盘文件删掉,通常也提供了明确的删除机制。但大模型对话里的删除,往往只是“从你的界面里消失”。你删除一条对话记录,服务端是否同步删除缓存?训练批次里是否已经包含了你的数据?备份系统里是否有残留副本?这些你都没有办法核验。
这种不确定性在合规场景下非常致命。按很多数据保护法规的要求,用户有权要求删除其个人信息,也就是“被遗忘权”。如果你把用户的个人数据发给了大模型,当用户提出删除请求时,你无法向监管方证明数据已经从所有环节彻底清除。你只能说“我已经删除了本地记录”,这远远不够。
2.4 组织边界的消失
网盘有清晰的账号体系和共享边界,你可以决定某个文件夹只能由特定成员访问。大模型对话则是围绕账号和会话组织的,一个账号能看到的对话记录,通常意味着该账号拥有全部内容的访问权。一旦员工账号被盗、离职忘记回收,或者员工在公司电脑和个人设备上同时登录同一账号,历史对话里包含的所有敏感数据都面临泄露风险。
在某些大模型应用里,会话内容甚至可以被同一个企业空间下的其他成员看到。不同业务线之间的数据被放在同一个“知识库”里,本意是提高协同效率,结果却是数据边界的消失。这个风险在跨部门协作时格外突出。
2.5 合规与审计缺口
数据安全合规工作里,很重要的一项是“可审计性”。你需要能够回答:什么人在什么时间把什么数据发给了什么外部服务。但员工直接在浏览器里使用公共大模型,这一行为发生在网络出口之外,传统的防火墙和数据库审计系统都无法记录。没有日志,就没有审计,风险就只能靠事后发现。
如果企业要求所有外部数据处理必须经过审批,那么员工私自把数据贴进大模型,本质上就是一次未经审批的数据出域。很多企业是在发生泄露事件之后,才在排查过程中发现员工长期使用大模型处理业务数据,那时候损失已经造成了。
3. 企业数据安全视角下的底线要求
3.1 数据分类分级是第一步
在讨论“能不能把数据交给大模型”之前,企业首先需要知道手里有什么数据、这些数据敏感到什么程度。数据分类分级是数据安全工作的起点,常见做法是把数据分为公开、内部、敏感、高敏感等层级,再针对不同层级制定不同的处理要求。
例如,公开数据可以自由使用,内部数据需要授权使用,敏感数据需要脱敏后才能用于分析,高敏感数据原则上禁止传输到外部系统。数据分类分级不是一次性工作,它需要随着业务和数据结构的变化持续更新。很多企业数据库里的表已经有几十万张,靠人工一张张分类不现实,需要借助自动化工具,后面我会给出一个简单的列级分类示例。
3.2 数据离开内部环境必须经过管控
企业内外网边界通常已经有防火墙、WAF、数据库白名单等基础防护,但这些防护很难识别“一段被粘贴到网页里的文字”。真正有效的管控手段是改变员工访问大模型的路径:禁止员工直接用浏览器访问公共大模型,改为通过企业内部搭建的网关或代理访问。这样,所有发往大模型的数据都可以被记录、检查,必要时还可以自动拦截敏感内容。
这个方案在技术上并不复杂,但落地时会有阻力。员工会觉得流程变麻烦了,效率变低了。这时候管理层需要明确一条原则:数据安全的优先级高于个人便利,任何外部服务调用都不能绕开管控。
3.3 数据安全风险评估的开展方式
定期做数据安全风险评估,是很多合规标准的基本要求。评估过程一般包括:梳理数据资产清单,识别数据在“采集、存储、传输、使用、共享、删除”等环节的流转情况;分析每个环节可能面临的风险场景,比如越权访问、数据泄露、违规出境;再针对风险场景判断当前防护措施是否有效。
常见问题是,评估报告写得很厚重,但实际整改动作很少。“大模型当网盘”这类行为,恰恰是数据资产清单里很难被发现的一类:它不在服务器上,不在数据库里,而是散落在员工的浏览器标签页和对话历史中。做风险评估时,需要专门把“员工使用外部 AI 服务”作为一个数据出域场景纳入排查范围。
4. 正确的“大模型+数据”使用姿势
4.1 本地部署并不等于高枕无忧
提到数据安全,很多人第一个想法是“把大模型部署到本地”。本地部署确实能解决数据不出内网的问题,但它只解决了“传输”这一环,并没有解决“存储”和“权限”问题。模型本身需要占用大量磁盘空间,微调数据集、向量数据库、对话日志都会产生新的敏感数据副本。如果这些副本没有按数据安全标准管理,本地部署反而变成“把敏感数据集中堆在一个房间里”。
另一个问题是,本地部署的大模型通常能力弱于商业大模型,员工为了追求效果,仍可能绕过内部系统去使用外部服务。所以,本地部署不能替代管理制度和流程,它只是基础设施建设的一部分。
如果采用本地部署方案,建议从这几方面入手:模型服务只在内网开放;所有对话记录写入独立日志库并定期清理;模型文件和训练数据按敏感数据标准加密保存;禁止员工私自把外部数据导入本地模型,统一由数据管理团队负责数据导入。
4.2 RAG 知识库不是文件服务器
很多团队会搭建 RAG(检索增强生成)系统,把企业内部文档切分成向量并存入向量数据库,让大模型基于这些文档回答员工问题。这个系统用起来很像“企业知识库”,于是有人直接把大量含个人信息的原始文件上传进去,以为这就是安全的资料库。
实际上,RAG 系统里至少存在三个风险点:原始文件是否被加密存储?向量数据库中是否保留了可反推出原文的片段?模型生成回答时是否可能把两个不相干文档的信息拼接在一起,形成新的敏感内容?此外,很多 RAG 系统会保存用户提问日志,这些日志同样包含敏感信息,很多人却忽略了它们的保护等级。
建议在使用 RAG 之前先做一步“文件准入”:只有通过脱敏处理、确认不包含高敏感信息的文档才可以进入知识库;涉及个人信息的文件,原则上不能进 RAG,只能通过权限系统定向查询。
4.3 通过网关收敛数据出域通道
更稳妥的做法是:不禁止使用大模型,但把使用入口收口到企业内部网关。所有研发、业务人员要调用大模型,都通过企业网关发送请求。网关可以做到四件事:记录调用者的身份、记录输入输出、对输入内容做敏感信息识别,以及按照配置丢弃或拦截高敏感请求。
这种方式虽然增加了一次转发,但对既有开发流程影响很小。调用方只需要把原来的 API 地址改成企业网关地址,网关再转发到真正的大模型服务。在网关层,我们可以拿到完整的审计日志,从技术手段上堵住“员工私自粘贴数据”之后无据可查的问题。
4.4 可接受与不可接受的使用场景对照
为了方便落地,可以在团队内部建立一张使用场景对照表:
| 场景 | 是否推荐 | 说明 |
|---|---|---|
| 用公开代码片段咨询如何重构 | 推荐 | 数据本身不敏感 |
| 用公司业务代码片段排查故障 | 谨慎 | 代码中可能包含密钥与业务逻辑 |
| 上传含用户手机号的 CSV 做分类 | 不推荐 | 应先脱敏,再交给模型 |
| 把合同扫描件上传到“知识库” | 不推荐 | 合同内容通常属于敏感数据 |
| 用本地部署模型处理客户订单摘要 | 需审批 | 必须确保模型数据不出内网 |
| 在公共大模型记录个人日记、备忘录 | 不推荐 | 失去数据控制权 |
这张表不需要做得很复杂,关键是要让团队形成共识:越敏感的数据,越要从“直接提问”切换为“脱敏后处理”或“本地化处理”。
5. 实战示例一:敏感数据脱敏前置层
5.1 先解决什么问题
团队里经常有同学希望让大模型帮忙分析一份用户数据表,比如“帮我看看这批用户手机号的归属地分布”。如果直接把 CSV 发过去,手机号就会原样出现在第三方服务器上。一个折中方案是:先对敏感字段做脱敏,再用脱敏后的数据去调用大模型。下面这个脚本就是一个可扩展的脱敏前置层。
5.2 完整代码
# -*- coding: utf-8 -*- # 文件路径:data_mask.py import re # 脱敏规则 MASK_RULES = { "phone": { "description": "手机号,保留前3后4", "pattern": r"(?<!\d)(1[3-9]\d{9})(?!\d)", "replace": lambda m: m.group(1)[:3] + "****" + m.group(1)[7:] }, "email": { "description": "邮箱,保留前2位和域名", "pattern": r"\b([A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\.[A-Za-z]{2,}\b", "replace": lambda m: m.group(1)[:2] + "***@" + m.group(2) + "." + m.group(3) }, "id_card": { "description": "身份证号,保留前6后4", "pattern": r"\b\d{17}[\dXx]\b", "replace": lambda m: m.group(0)[:6] + "********" + m.group(0)[-4:] } } def mask_text(text: str, rules: dict = None) -> str: """对文本中的敏感信息做脱敏处理""" if rules is None: rules = MASK_RULES for key, rule in rules.items(): pattern = re.compile(rule["pattern"]) text = pattern.sub(rule["replace"], text) return text def mask_file(input_path: str, output_path: str) -> None: """读取文本文件,脱敏后写入新文件""" with open(input_path, "r", encoding="utf-8") as f: content = f.read() masked = mask_text(content) with open(output_path, "w", encoding="utf-8") as f: f.write(masked) print(f"处理完成,结果已写入: {output_path}") if __name__ == "__main__": import sys if len(sys.argv) != 3: print("用法: python data_mask.py <输入文件> <输出文件>") sys.exit(1) mask_file(sys.argv[1], sys.argv[2])5.3 运行结果说明
准备一个示例文件sample.txt:
用户张三的手机号是13812345678,备用邮箱是zhangsan@example.com,身份证号是110101199003071234。运行命令:
python data_mask.py sample.txt sample_masked.txt得到的sample_masked.txt内容:
用户张三的手机号是138****5678,备用邮箱是zh***@example.com,身份证号是110101********1234。注意:姓名“张三”没有被脱敏。原因很简单,中文姓名很难用通用正则识别,避免误伤,需要结合业务数据字典。如果你有一个姓名列表,可以把姓名加入规则,或者利用分词工具处理。
5.4 拓展建议
脱敏不是只有正则一种方式。对于结构化数据,可以考虑更高效的方案:
- 手机号、身份证号:保留部分字符,其余用
*替换。 - 邮箱、IP 地址:隐藏部分字段。
- 姓名、地址:使用映射表替换为随机值,同时保持业务统计的一致性。
- 数值型敏感字段:可以加噪声,例如薪资字段乘以一个随机因子。
提前明确规则:脱敏后的数据不能再还原。流程上需要防止“脱敏后的数据 + 另一个字段”拼接后重新定位到个人。设计脱敏策略时,要结合具体数据场景,建议先在小范围数据上验证效果。
6. 实战示例二:大模型调用审计日志
6.1 先解决什么问题
脱敏解决的是“数据出去之前能不能变安全”,审计解决的是“数据出去之后能不能追溯”。企业如果允许员工通过内部网关调用大模型,就需要把每次调用记录下来。下面这个模块把审计日志写入 SQLite,生产环境可以替换为 MySQL 或 Elasticsearch。
6.2 完整代码
# -*- coding: utf-8 -*- # 文件路径:llm_audit.py import sqlite3 import hashlib from datetime import datetime DB_PATH = "llm_audit.db" def init_db(): """初始化审计日志表""" conn = sqlite3.connect(DB_PATH) conn.execute(""" CREATE TABLE IF NOT EXISTS audit_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_name TEXT NOT NULL, app_name TEXT NOT NULL, data_level TEXT NOT NULL, input_hash TEXT NOT NULL, output_hash TEXT, model_name TEXT, call_time TEXT NOT NULL, approved INTEGER DEFAULT 0 ) """) conn.commit() conn.close() def calculate_hash(content: str) -> str: """对输入或输出内容做 SHA-256 哈希,避免在日志中保存原文""" return hashlib.sha256(content.encode("utf-8")).hexdigest() def write_audit_log( user_name: str, app_name: str, data_level: str, input_content: str, model_name: str = "external-llm", output_content: str = None, approved: int = 1 ) -> None: """写入一条大模型调用审计日志""" conn = sqlite3.connect(DB_PATH) conn.execute( """ INSERT INTO audit_log ( user_name, app_name, data_level, input_hash, output_hash, model_name, call_time, approved ) VALUES (?, ?, ?, ?, ?, ?, ?, ?) """, ( user_name, app_name, data_level, calculate_hash(input_content), calculate_hash(output_content) if output_content else None, model_name, datetime.now().isoformat(), approved, ), ) conn.commit() conn.close() def query_audit_log(limit: int = 10): """查询最近审计日志""" conn = sqlite3.connect(DB_PATH) cursor = conn.execute( "SELECT id, user_name, app_name, data_level, input_hash, model_name, call_time, approved " "FROM audit_log ORDER BY id DESC LIMIT ?", (limit,), ) rows = cursor.fetchall() conn.close() return rows if __name__ == "__main__": init_db() write_audit_log( user_name="zhangsan", app_name="data-analysis", data_level="P1", input_content="统计近30天订单数量", model_name="internal-gateway-llm", output_content="共2865单", approved=1, ) for row in query_audit_log(): print(row)6.3 运行结果说明
运行:
python llm_audit.py预期输出类似:
(1, 'zhangsan', 'data-analysis', 'P1', '3a4f...', 'internal-gateway-llm', '2025-06-01T15:30:00', 1)这里有一个重要设计:日志里不保存输入和输出原文,只保存哈希值。这样当审计人员需要排查某个泄露事件时,可以先算一下可疑文本的 SHA-256,再在日志中匹配是否存在对应记录。通常不会因为泄露日志而引发二次泄露。
6.4 生产环境注意事项
用 SQLite 做演示足够,但生产环境建议换用正式的数据库,并注意:
- 审计日志表要增加索引,常用的查询条件是
user_name和call_time。 - 审计日志本身属于敏感数据,必须限制访问权限,普通开发人员不应有删除权限。
- 建议增加保留周期,例如保存 180 天,过期后自动归档。
- 如果公司有安全运营中心,审计日志应接入 SIEM,实现实时告警。
审计的意义不在于“发现后处罚”,而在于形成威慑和快速追溯能力。员工知道每次调用都被记录,就会更谨慎地处理敏感数据。
7. 常见问题与排查思路
7.1 典型问题表格
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 员工把数据库备份文件传给了公共大模型 | 安全意识不足,图方便 | 建立数据分类制度,在网关层拦截.sql、.bak文件 |
| 大模型回答了其他用户私有的数据 | 使用了多租户共享模型,且提示词注入攻击成功 | 敏感业务使用私有化部署,限制模型上下文来源 |
| 内部文档出现在大模型对外的回答中 | 文档被上传到知识库且权限不足 | 审查知识库文件准入,回收异常共享权限 |
| 删除对话记录后,仍然担心数据残留 | 无法确认服务端是否删除 | 明确定位为“不可彻底删除”,从一开始就不要送敏感数据 |
| 调用审计日志缺失 | 网关层没有记录或日志被清理 | 统一走内部网关,日志入库并设置保留周期 |
7.2 数据已经传上去了怎么办
如果发现敏感数据已经发送给了外部大模型,能做的事很有限,但至少要按以下步骤处理:
- 立即停止继续发送同类数据,关闭相关会话或账号。
- 在内部登记该事件,记录发送人、内容概要、时间、涉及的数据类型。
- 评估泄露的数据范围:是个人手机号、身份证号,还是源代码、密钥。
- 对涉及个人信息的,按照企业合规流程评估是否需要上报或通知相关人员。
- 排查该账号近期所有对话历史,看是否存在批量上传行为。
- 如果是企业采购的 API 服务,联系服务商确认数据处理条款和删除机制。
- 最后,把这次事件作为安全培训案例,避免其他人重蹈覆辙。
不要抱有“已经删了本地记录就没事”的侥幸心理。重点是审查数据进入外部系统后,企业是否还能履行安全与合规义务。如果做不到,最稳妥的方式是停止使用公共大模型处理业务数据。
8. 最佳实践与工程建议
8.1 从流程上收敛风险
数据安全首先是流程问题,然后才是技术问题。企业需要定义清楚:什么数据能进大模型,什么数据绝对不能进,由谁来审批。建议把这条规则写进开发规范和入职培训里,而不是等出了问题再口头提醒。
流程上可以设置一个“数据出域审批单”,凡是需要把数据发送给外部大模型服务,都必须提交申请,说明数据类型、数据量、使用目的、脱敏措施。审批通过后,由数据安全团队在网关层配置对应权限。这样可以确保所有外部调用都是“已知、已授权、已记录”的。
8.2 从技术上加强管控
技术上的核心思路是“让数据尽量少出门”。建议从以下五个维度落地:
- 数据发现:定期扫描数据库和文件服务器,识别包含手机号、身份证号等敏感字段的库表。
- 数据脱敏:在测试环境、开发环境以及外部 AI 调用链路前统一做脱敏。
- 访问控制:大模型服务账号采用独立 API Key,权限最小化,不用管理员账号调用。
- 链路审计:所有调用统一经过网关,记录用户、时间、数据级别和内容哈希。
- 异常告警:当网关检测到大量数据上传、包含高敏感关键词或异常时段调用时,自动触发告警。
8.3 从合规上补齐动作
定期做数据安全风险评估,并把大模型使用场景纳入评估范围。评估时要特别关注:
- 大模型服务的部署形态:是本地部署、私有云还是公共 SaaS。
- 数据处理协议:是否与服务商签订了数据处理协议,是否明确了数据用途。
- 数据存储位置:是否涉及数据出境,是否有合法依据。
- 删除机制:是否能在服务商处确认数据销毁策略。
合规不是做一次就结束,而是持续运行的一套方法。数据安全风险评估可以按季度或按重点项目触发,每次评估后要明确整改责任人和完成时间。
8.4 给个人开发者的建议
不只是在企业场景,个人开发者也要注意。很多人习惯把密码、密钥、数据库连接串直接贴进大模型对话窗口,请它解释报错或生成代码,这是非常危险的行为。正确的是先把敏感信息从代码里移除,或者用环境变量占位,再拿脱敏后的代码片段提问。
个人项目虽然不受企业合规约束,但也要考虑:如果这个 API Key 或数据库地址被大模型服务方记录,未来一旦服务方被攻击,你的资料也可能出现在数据泄露市场上。从源头避免,是最好的安全策略。
9. 总结与学习路线
9.1 本文关键结论
大模型的定位是数据处理引擎,不是存储空间。网盘的核心是保证数据按照你的意图存储、授权和删除,大模型很难做到这一点。把大模型当成网盘,本质上是把数据控制权交给了外部服务商,这种风险在敏感数据场景下是不可接受的。
正确的做法是让数据在进入大模型之前,先经过“分类、审批、脱敏、审计”这几道闸。本地部署可以解决数据不出内网,但并不能解决所有管理问题;RAG 系统要做好文件准入,不能当成又一个文件服务器;公共大模型更适合处理公开或低敏感数据,敏感数据必须通过受控链路处理。
9.2 下一步学习建议
如果你所在团队还没有数据安全体系,可以从一个小切口开始:先盘点一下最近三个月里,有哪些数据被发送到了外部大模型服务。这个动作往往会带来一些冲击,但它是建立安全边界的第一步。
技术上可以继续完善三件事:一是搭建统一的大模型调用网关,实现“一个入口进、一份日志出”;二是把脱敏工具集成到 CI/CD 流水线,让测试数据自动脱敏;三是把审计日志接入告警平台,让异常调用能被实时发现。
数据安全不是一次项目,而是一套持续运转的工程能力。它需要开发、运维、安全、业务同学一起协作,而不是在某个环节放入一个“安全产品”就结束。希望你从今天开始,不再把大模型当成网盘,也让自己的数据始终掌握在自己手里。