【发布时间】:2017-08-01 08:00:23
【问题描述】:
我目前正在使用 AWS Lambda 运行我无法控制的代码。因此,我想确保 Lambda 环境是沙盒环境并且无法访问敏感数据。传递给 Lambda 函数的默认环境变量概述为 here。我担心用户可以访问的是:
AWS_ACCESS_KEY
AWS_ACCESS_KEY_ID
AWS_SECRET_KEY
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_SECURITY_TOKEN
是否可以禁用这些环境变量?目前我在执行用户代码之前隐藏了这些变量,但如果我可以完全禁用环境变量会很好。
根据评论进行编辑:
我正在运行不受信任的代码 b/c 我正在编写一个教授编程的游戏,我想使用 Lambda 来执行用户的代码。我认为我授予 Lambda 函数的权限很小(AWSLambdaVPCAccessExecutionRole)。网络访问受到限制,但他们可以检索其功能的结果,因为这是游戏的一部分。
编辑两个
我在 AWS 论坛 b/c 上发布了这个问题,我认为这目前是不可能的。链接是here。
【问题讨论】:
-
这些是与执行角色关联的临时凭证。目前尚不清楚为什么您不使用具有比必要更多权限的角色......也不清楚为什么您会在 Lambda 中运行不受信任的代码。你能澄清一下用例吗?
-
感谢@Michael-sqlbot 的回复。我更新了我的问题。如果您还需要澄清,请告诉我!
-
@Michael-sqlbot 呃,Lambda 是运行不受信任代码的理想场所,因为您可以精确地限制它可以运行的时间和它使用的资源量。您还会在哪里运行不受信任的代码?
-
@idbehold 这是一个公平的观点,在一定程度上,但没有应有的谨慎,它可以访问您的 VPC 中的资源或使用环境中的凭据的帐户,并在 Internet 上做各种恶意的事情,滥用报告会追溯到你。但实际上,我脑海中的问题是一个包罗万象的问题:“你为什么要在任何地方运行不受信任的代码?”一般来说,运行不受信任的代码会带来麻烦:可以被利用的东西将被利用。我发现考虑到此类功能的设计通常也包含一些天真的元素,尽管可能不在这里。
-
感谢您的讨论!我想目前没有办法做到这一点。我会在官方论坛上发帖作为建议。
标签: amazon-web-services aws-lambda