寻求 Python 代码管控方案

2021-01-22 15:33:53 +08:00
 scoutteemo

问题引入

公司需要对代码进行管控,以前的代码都是 C 写的,编译工作在远程的服务器上,用 RDP 远程连接到服务器上进行开发,编译后的固件传下来。
现在引入了 python 语言来做的自动化测试方案,需要运行在 本地的 Linux 系统 上,还要 开放 root 权限 。现在同样需要对 python 的代码进行管控。所以在思考有没有什么方式,可以指定 python 这个程序才可以访问到特定的文件和目录, 其他的进程无法访问
代码可以是一个整体的加密文件,运行时解密,但解密后的内容要保证不会被轻易取走。或者通过远程服务器实时下发内容运行。最好是能保留调试功能,可以逐行执行代码什么的。由于程序需要依赖硬件,所以代码只能在本地的 Linux 系统上运行才可以。

想到的可能方案

我们在 Windows 平台的软件有类似的设计,会生成一个虚拟的文件系统,具体方式我也不清楚,然后把实际运行的 exe 文件存放在其中,再运行。
这样的话就需要实现一个FUSE,并且要保证这个文件系统是只有指定的进程才可以访问到的。 可以修改cpython的代码,里面融合类似于encfs这样的 FUSE,读的接口只暴露给 cpython 这个程序。然后再加上网络验证,从服务器上获取代码,运行完之后整个销毁掉。
但是这样的方式工程量比较巨大,还是需要先考虑其他可行方式。

4275 次点击
所在节点    Python
51 条回复
foxyier
2021-01-22 15:46:39 +08:00
没太理解, 到底是要管控「 python 代码」, 还是要管控「特定的文件和目录」?
scoutteemo
2021-01-22 15:53:34 +08:00
@foxyier 是要管控代码,在我的认识中代码需要存放到某个目录才可以被 python 程序调用到,特别是我们还有一个用 C 接口的.so 文件,需要 import 进去使用
scoutteemo
2021-01-22 15:55:56 +08:00
还有自己写的模块,都放在一起运行,需要 import 进去,所以应该是要整个目录都要有限制,才能达到目标这样。刚深入接触 python 不久,如果有什么理解不对的地方,还望大家指出
zeroDev
2021-01-22 16:12:56 +08:00
完全看不懂,只知道自己看得懂字
这个“管控”,实在无法理解
superrichman
2021-01-22 16:17:45 +08:00
没看懂,不过我想把东西都扔 docker 里应该能解决问题
scoutteemo
2021-01-22 16:19:26 +08:00
@zeroDev 好吧,我重新描述开个新帖子
scoutteemo
2021-01-22 16:19:57 +08:00
@superrichman docker 不行诶,文件系统没有完全隔离的,还是可以直接找到 docker 里面的文件的
scoutteemo
2021-01-22 16:22:16 +08:00
@zeroDev 还是就先解释一下吧,管控就是说这个代码只允许存放到公司内部的服务器上,通过 RDP 这样的远程方式去访问编辑,不允许把代码下载到本地服务器
scoutteemo
2021-01-22 16:24:26 +08:00
scoutteemo
2021-01-22 16:24:57 +08:00
cassyfar
2021-01-22 16:25:17 +08:00
要完全管控,为啥不在服务器上跑 python 的自动化测试方案呢?
xchaoinfo
2021-01-22 16:26:05 +08:00
Cython 把 Python 代码编译为 C, 然后按照 C 的规矩操作。
scoutteemo
2021-01-22 16:27:05 +08:00
@cassyfar 这个测试需要硬件的支持,服务器上跑不了
scoutteemo
2021-01-22 16:29:15 +08:00
@xchaoinfo 对诶,这确实是一个办法,但是这样就没办法调试代码了,多谢你的方案
cassyfar
2021-01-22 16:34:32 +08:00
@scoutteemo 我大概理解了你的问题,你这是源码不能外漏,以前用 C,你可以在服务器编译成 binary,下载到自己电脑,连上设备,测。感觉这种做法本来就不规范,正确的是单独有个测试机,连上你的设备,设好权限,远程上去测。要不然你就遇到 python 这个问题。
youngce
2021-01-22 16:38:56 +08:00
python 工作在远程的服务器上,用 RDP 远程连接到服务器上进行开发,pyinstaller 打包编译后的可执行 EXE 传下来(别和我提 pyinstaller 安全性问题:)
zeroDev
2021-01-22 16:39:47 +08:00
@scoutteemo 用 grpc 或者其他 rpc 方案
keakon
2021-01-22 16:49:20 +08:00
这样管控,多个人怎么并行开发?
scoutteemo
2021-01-22 16:51:50 +08:00
@cassyfar 我们做的是嵌入式设备,C 编译出来的二进制是嵌入式设备的固件,现在要用 python 来做个自动化测试,测试我们写的固件。这个自动化测试方案后续估计要大规模部署,而且设备频繁插拔也是常有的事,所以单独设测试机远程过去估计不太可行
zjsxwc
2021-01-22 16:54:27 +08:00
python 代码混淆不就好了,反正混淆解密后的也是乱码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/747430

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX