Python 我可以在Amazon Lambda上使用seccomp吗
我试图使用AmazonLambda来主持一个编程学习平台,在那里我必须执行简单的不可信Python代码 我最近一次尝试以一种简单的方式隔离用户代码,就是使用Python 我可以在Amazon Lambda上使用seccomp吗,python,amazon-web-services,aws-lambda,seccomp,Python,Amazon Web Services,Aws Lambda,Seccomp,我试图使用AmazonLambda来主持一个编程学习平台,在那里我必须执行简单的不可信Python代码 我最近一次尝试以一种简单的方式隔离用户代码,就是使用seccomp禁用除从文件读取和写入stdout/stderr之外的任何功能,代码如下所示: from pyseccomp import * f = SyscallFilter(defaction=KILL) f.add_rule(ALLOW, "open", Ar
seccomp
禁用除从文件读取和写入stdout
/stderr
之外的任何功能,代码如下所示:
from pyseccomp import *
f = SyscallFilter(defaction=KILL)
f.add_rule(ALLOW, "open",
Arg(1, MASKED_EQ, os.O_RDONLY,
os.O_RDONLY | os.O_RDWR | os.O_WRONLY))
f.add_rule(ALLOW, "openat",
Arg(2, MASKED_EQ, os.O_RDONLY,
os.O_RDONLY | os.O_RDWR | os.O_WRONLY))
f.add_rule(ALLOW, "read")
f.add_rule(ALLOW, "write", Arg(0, EQ, sys.stdout.fileno()))
f.add_rule(ALLOW, "write", Arg(0, EQ, sys.stderr.fileno()))
f.add_rule(ALLOW, "close")
f.add_rule(ALLOW, "getdents64")
f.add_rule(ALLOW, "exit_group")
f.add_rule(ALLOW, "rt_sigaction")
f.add_rule(ALLOW, "sigaltstack")
f.add_rule(ALLOW, "brk")
f.add_rule(ALLOW, "lseek")
f.add_rule(ALLOW, "fstat")
f.add_rule(ALLOW, "mmap")
f.add_rule(ALLOW, "mprotect")
f.add_rule(ALLOW, "stat")
f.add_rule(ALLOW, "ioctl", Arg(1, EQ, 0x5401)) # TCGETS
f.add_rule(ALLOW, "fcntl")
f.load()
这在本地运行得很好,但是在Amazon Lambda上,它没有找到seccomp
库
我试图在Amazon Lambda函数中包含来自Debian stable机器的libseccomp.2
,代码一直运行到f.load()
,但随后失败
Traceback (most recent call last):
File "sandbox.py", line 32, in <module>
f.load()
File "/var/task/pyseccomp.py", line 335, in load
_check_status(_libseccomp.seccomp_load(self._filter))
File "/var/task/pyseccomp.py", line 183, in _check_status
raise _build_oserror(-res)
PermissionError: [Errno 1] Operation not permitted
回溯(最近一次呼叫最后一次):
文件“sandbox.py”,第32行,在
f、 加载()
文件“/var/task/pyseccomp.py”,第335行,加载中
_检查状态(_libseccomp.seccomp_加载(自过滤器))
文件“/var/task/pyseccomp.py”,第183行,处于检查状态
提高生成错误(-res)
PermissionError:[Errno 1]不允许进行操作
seccomp\u load
returningEPERM
是否意味着我无法在Amazon Lambda上使用seccomp,或者我做错了什么。Lambda env已经使用了seccomp bpf
。我认为你的函数没有足够的权限使用seccomp,这就是我担心的。讨厌的非组合性。是否有办法确定?有关seccomp bpf
的简短信息已存在。Lambda env已使用seccomp bpf
。我认为你的函数没有足够的权限使用seccomp,这就是我担心的。讨厌的非组合性。是否有办法确定?关于seccomp bpf
的简短信息在。