2017-03-10 35 views
2

我目前使用AWS Lambda来运行我无法控制的代码。因此,我想确保Lambda环境是沙盒,并且无法访问敏感数据。传递给Lambda函数的默认环境变量概述如下here。那些我担心用户可以访问的是:禁用AWS Lambda环境变量

AWS_ACCESS_KEY 
AWS_ACCESS_KEY_ID 
AWS_SECRET_KEY 
AWS_SECRET_ACCESS_KEY 
AWS_SESSION_TOKEN 
AWS_SECURITY_TOKEN 

是否可以禁用这些环境变量?目前,我在执行用户代码之前隐藏了这些变量,但如果我能够禁用环境变量,那将会很好。

编辑回应评论:

我运行不受信任的代码B/C我在写一个游戏,教编程,我想用lambda来执行用户的代码。 (AWSLambdaVPCAccessExecutionRole)给我的Lambda函数的权限是最小的。网络访问受到限制,但是他们可以检索其功能的结果,因为它是游戏的一部分。

编辑两个

我张贴在AWS论坛这个问题二/三我不认为这是目前可能的。链接是here

+0

这些是与执行角色关联的临时证书。目前尚不清楚为什么你使用的角色拥有的权限比所需的更多......也就是说,为什么你要在Lambda中运行不受信任的代码。你能澄清用例吗? –

+0

感谢您的回复,@ Michael-sqlbot。我更新了我的问题。让我知道你是否仍然需要澄清! – Dehli

+0

@ Michael-sqlbot呃,Lambda是运行不受信任代码的**理想**位置,因为您可以精确地限制它可以运行的时间以及它使用的资源数量。你还会在哪里运行不受信任的代码? – idbehold

回答

1

除非最近有什么变化,隐藏这些变量的唯一方法是在调用用户代码之前将它们明确地从您的lambda函数的环境中移除,我相信您已经在做这些。

boto使用这些变量来提供使用AWS开发工具包访问AWS功能的功能,这是Lambda功能用户通常希望处于其环境中的功能。角色是您为该函数配置的任​​何内容,因此您可以创建一个没有权限的角色(但不会获得任何日志记录。)也就是说,如果使用AWSLambdaBasicExecutionRole,则提供的唯一权限将记录到Cloudwatch,并且您甚至可以删除这些权限,但您将不会从Lambda进行日志记录。您可以在默认情况下使用此功能,并仅在需要进行调试时启用日志记录。