hip*_*ano 6 python architecture amazon-web-services aws-lambda aws-api-gateway
一直在做大量的研究。我只是一个学徒,但是,我有一个项目,我必须从网站运行用户不受信任的 Python3 代码。
如果这个问题有一些变化,我也提前道歉。
主要问题:
__builtins__本地变量,或者 AWS-lambda 容器是否足够安全?背景
似乎大多数公司都使用Kubernetes和Docker 容器来执行不受信任的 python 代码(例如Leetcode、Programiz或hackerRank)。
请参阅这些有用的链接:
我的计划
我想我可以将我的任意 Python 代码作为微服务发布到 AWS Lambda 函数,使用它们的 容器化/扩展,而不是构建我自己的。在 Lambda 容器中,我可以通过简单的exec或eval函数来运行代码,也许有一些限制,如下所示:
”
safe_list = ['math','acos', 'asin', 'atan', 'print','atan2', 'ceil', 'cos', 'cosh', 'de grees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
safe_dict = dict([ (k, locals().get(k, None)) for k in safe_list ])
safe_dict['abs'] = abs
exec(userCode,{"**__builtins__"**:None},safe_dict )
Run Code Online (Sandbox Code Playgroud)
特别提示:
我已经计划做的安全事情:
其他注意事项:
”
@contextlib.contextmanager
def stdoutIO(stdout=None):
old = sys.stdout
if stdout is None:
stdout = StringIO()
sys.stdout = stdout
yield stdout
sys.stdout = old
with stdoutIO() as s:
try:
exec(userCode)
except:
print("Something wrong with the code")
print( s.getvalue())
print(i)
Run Code Online (Sandbox Code Playgroud)
如果您有任何问题或建议,请告诉我。
___ 编辑 ** 添加架构图 ___
有趣的帖子,我还在考虑使用现有的 AWS 基础设施来运行不受信任的 python 代码,而不是使用 docker 容器,后者可能很快就会变得昂贵。我才刚刚开始研究这个问题,但我更喜欢使用restrictedPython来添加一些安全防护措施。
我对 python dev 和 lambda 都很陌生,但你提到restrictedPython 不能开箱即用,当然你需要做的就是将它作为依赖项包含在 zip 中并将其上传到 lambda 吗?除非我错过了什么?
也不确定你是否看过这个,但我发现这个视频非常有帮助:https://www.youtube.com/watch?v =sL_syMmRkoU
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |