gpt4 book ai didi

javascript - 基于条件访问亚马逊 lamda 结果?

转载 作者:行者123 更新时间:2023-11-29 23:24:51 25 4
gpt4 key购买 nike

想知道是否可以让网络应用程序将文件 (userid.input.json) 上传到 Amazon S3,这会触发一个 lambda 函数来读取文件、进行一些处理并保存结果作为另一个 (userid.output.json)。

但是 userid.output.json 不应立即可供 Web 应用程序访问。 Web 应用程序必须完成一次 Stripe 支付,一旦支付完成,Web 应用程序就可以访问 amazon s3 上的 (userid.output.json) 文件。

在我问如何做之前,我想我会先问这个场景是否可以在 AWS 上促进/构建?

方法

请注意,这是根据更多研究对问题进行的更新。看起来 Amazon Cognito 将是用于登录用户并将其用户凭证绑定(bind)到可以读取和写入 S3 存储桶的 IAM Angular 色的完美工具。

因此,一旦用户通过 Amazon Cognito 登录并拥有适当的凭据,他们的文件就可以上传到 S3 存储桶并由 lambda 进行处理。然后将结果写入同一个存储桶。

现在,我之前建议写入一个密封的存储桶,并让 Stripe webhook 触发器将结果从密封的存储桶移动到一个可访问的存储桶。但根据@Snickers3192 提供的答案中的指示,这似乎是必要的。

一旦 strip 支付完成,webapp 可以设置一个 boolean 值,用于控制对输出的访问并完成循环?

拥有隐藏存储桶的部分原因是有人可能会从浏览器中提取凭据并在不同的脚本中执行它们。我认为这是不可能的(著名的遗言 :)),但以防万一我写了 follow up question here .

换句话说,在使用 Amazon Cognito 登录后提取到客户端的凭据不能用于在应用程序上下文之外执行脚本?

方法第 2 部分

根据我的后续问题,依靠 webapp 中的状态做出安全决策似乎不够好,因为有人可能会想出一种方法来获取 token 身份验证 token 并直接使用客户端操作应用程序 API除了核心应用。

所以现在我是这样想的:

1)将结果写入密封桶(Processing Lambda)

2) 让 Stripe webhook 在用户配置文件中更新用户的交易记录,指示已付款 = true (Stripe Lambda)

3) 创建另一个 lambda,该 lambda 具有对密封桶的访问权限,但仅当 paid=true 时才会返回结果。 (访问结果 Lambda)

因此,由于 Stripe 与允许更新应用程序用户配置文件并设置 paid=true 的 IAM 用户绑定(bind),因此密封桶只能由首先检查是否 的 lambda 访问paid=true 返回结果前,相信应该能保证安全。

如果有人有更简单的方法请告诉我。

最佳答案

这实际上是一个您希望将安全性置于何处的问题,这在 AWS 中有许多选项,在您的应用程序逻辑中,这可能意味着:

  • Lambda/网络应用
  • S3 政策
  • IAM Angular 色/组

这些决定通常取决于您的身份存储的保存位置,以及您是否希望保留 AWS 用户 VS 的概念。您的应用程序的用户。我的偏好是将这两个池分开,因为像这样的安全逻辑保留在 webapp/lambda 中,而 AWS 安全仅处理开发人员对环境拥有的权限以及应用程序本身拥有的权限。

这意味着网络应用程序始终可以访问输入和输出存储桶,但它会在某个地方的数据库中(或使用您的支付系统 API)记录谁已经支付和谁没有支付并使用该信息来拒绝或授予用户访问权限。 IMO 这是一个更加模块化的设计,它使您能够更好地锁定您的 AWS 账户,并且对于安全所在的开发人员来说更加清晰。此外,如果您确实使用 IAM/S3,那么在本地运行和调试将会更加困难。

编辑:在您提出所有意见和其他安全问题之后,您可能还需要考虑通过电子邮件发送指向已处理文件的短期 URL 链接,以便用户既需要电子邮件访问权限,又需要知道他们的应用程序的凭据。这意味着即使您的访问 token 在浏览器级别被盗,如果没有电子邮件访问权限,黑客仍然无法获取已处理的文件。如果您想成为极端安全核心,请拥有不仅需要身份验证而且需要 MFA 的链接,这样他们就需要输入一个不断刷新的代码,因为您应该在登录时为您的 AWS 帐户设置。

我绝不是安全专家,但只要遵循最佳实践并尽职调查,您就会达到安全预期。

关于javascript - 基于条件访问亚马逊 lamda 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com