我需要一些关于安全和 ALB 的帮助/建议。
我在应用程序负载均衡器后面有一些 Lambda 函数。每个 Lambda 都是根据 ALB 中配置的基于路径的路由调用的。
我想实现身份验证/授权,以便只为 /PATH1 授权一个 Lambda 函数(在不同的账户中),而另一个 Lambda 函数(也在不同的账户中)仅被授权用于 /PATH2。>
实现这一目标的最佳/最简单方法是什么。我一直在尝试使用与 Cognito 集成的 ALB 身份验证。但是我尝试(或在在线资源中找到)与 Cognito 集成相关的所有内容似乎都围绕使用 OIDC 进行用户身份验证。我的场景中没有任何用户。
另外,对于我的用例,我不能使用 API Gateway。
我是否遗漏了一些愚蠢而简单的东西?
感谢您的帮助和见解!
答案 0 :(得分:0)
我认为使用 AWS Cognito 可以满足您的需求。
在 AWS Cognito 中为您的应用程序创建一个用户池。创建用户池后,您可以配置应用程序集成。
在用户池的“常规设置”中,您需要创建 2 个应用客户端 - 一个用于源 lambda 1,一个用于源 lambda 2。
在“应用程序集成”部分添加一个新的“资源服务器” - 它应该是您的 ALB。添加 2 个范围 - 用于路径 1 和路径 2。
在“应用程序集成”部分,转到应用程序客户端设置。在第 2 步中应该创建了两个客户端。在允许的 OAuth 流中选择客户端凭据和相关范围。
与您的 Lambda 1 和 Lambda 2 共享相关的客户端凭据。
Lambda 1,2 应从 AWS Cognito 获取访问令牌才能向 ALB 发出请求。 Here 您可以找到有关如何从 AWS Cognito 获取访问令牌的文档。 Lambda 应向 ALB 请求的“授权”标头添加访问令牌。