【问题标题】:Disable AWS Lambda Environment Variables禁用 AWS Lambda 环境变量
【发布时间】: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


【解决方案1】:

除非最近发生了一些变化,否则隐藏这些变量的唯一方法是在调用用户代码之前从 lambda 函数的环境中显式删除它们,我相信这就是你已经在做的事情。

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

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 2018-07-15
    • 2022-11-03
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2019-07-16
    • 2018-09-14
    相关资源
    最近更新 更多