笔者最近在处理一个 SAP 电商云和 SAP S/4HANA 集成后商品库存显示不同步的棘手问题。DeepSeek 和 ChatGPT 没能帮上忙,最后还是查公司内网 wiki 搞定了。DeepSeek 和 ChatGPT 确实不是万能的。
ChatGPT 3.5 刚发布不久,我记得很多朋友聊起过大语言模型的「讨好型人格」,即倾向于迎合用户的观点、顺从用户的意愿。甚至在极端情况下,当用户对其回复提出质疑时,它会马上认怂,承认自己的错误,并且竭力胡编乱造一些子虚乌有的论据,来证明自己之前的回复确实有误。
笔者之前被 ChatGPT 忽悠的一些经历:
不过经过这几年的迭代,我感觉大语言模型的讨好型人格正在逐渐消失。
最近 ChatGPT 4.5 也发布了,正好我手头工作上要处理一个 Angular Polyfills 的问题,就拿它试了下手。
我向 ChatGPT 求助,它让我到项目文件夹的 polyfills.ts 文件中找找。
可是我的项目工程里,压根就连这个文件都没有。
于是我提出了质疑,"你是在胡说八道吗?"。
要在早先时候的话,ChatGPT 肯定会马上向我道歉,然后顺着我的思路,搜肠刮肚拼凑一些回复来自圆其说。
不过 ChatGPT 4.5 收到了这个质疑后,通过查询资料,告诉我只要是通过 Angular CLI 创建的项目,肯定会生成 polyfills.ts 文件,并指出了找不到这个文件的几种可能原因。
我又跑到我的项目文件夹下仔细查看了一番。确实如 ChatGPT 4.5 所说,我团队的项目使用 nx 接管了以前的 Angular CLI,所以 polyfills 的设置转移到其他地方了。
ChatGPT 4.5 最后一句「综上,我并非是在胡说八道」把我逗笑了。
那么再回到本文标题的问题。
笔者文章1 分钟极速接入:ABAP 系统如何调用 DeepSeek给出的 ABAP 代码里,出于演示目的,DeepSeek 的 API key,直接硬编码在代码里。
有朋友留言提问:如果是生产用途,API key 最安全的存储方式是什么?
笔者在 SAP 做开发曾经使用过 ABAP Secure Storage,这是 SAP 标准应用最安全的存储敏感数据的方式之一。
官方帮助文档:
https://help.sap.com/docs/SAP_NETWEAVER_AS_ABAP_751_IP/280f016edb8049e998237fcbd80558e7/4eeb2dce10f2398de10000000a42189b.html?version=7.51.6
ABAP 应用程序将敏感数据传输到 Secure Storage 时,数据会被加密并存储在数据库中。当需要访问这些数据时,系统会对其进行解密。加密密钥存储在 SAP ABAP 应用服务器的文件系统中,并通过密钥管理程序进行维护。
不过很可惜,ABAP Secure Storage 只允许在 SAP 标准产品开发中使用。作为替代方案,客户二次开发中可以使用 Secure Storage & Forward Interface 的方式来实现类似的效果。笔者后续的文章会介绍具体如何去做。
一种公认认为比较安全的做法,在下面这个 StackOverflow 讨论帖子里有提到:
https://stackoverflow.com/questions/52276747/abap-secure-storage-how-to-store-passwords
创建一个自定义数据库表和自定义应用,使用该应用让用户手动维护 API key,存储到自定义数据库表里。
ABAP 调用 DeepSeek API 时,从自定义数据库表里读取 API key.
将自定义数据库表设置成其内容不可查看。
在生产系统里,禁用普通 Dialog 用户的调试权限,执行 SQVI 等事务码的权限。
总之,ABAP 系统完善的权限管控机制,为 API key 的安全存储这种需求,提供了最经济易行的解决方案:SAP ABAP 权限控制的入门级介绍。
领取专属 10元无门槛券
私享最新 技术干货