我可以从特权Lambda函数调用Cognito的AdminInitiateAuth而不提供用户密码吗?

时间:2019-06-18 08:05:19

标签: amazon-web-services aws-lambda amazon-cognito amazon-iam

在我的应用程序中,我使用Cognito用户池来管理身份,并且拥有一个特殊的服务帐户,该帐户可以访问Python后端应用程序中的所有用户数据。我还有一个Lambda函数,该函数每晚运行,使用ADMIN_NO_SRP_AUTH身份以特殊管理员身份进行身份验证并执行维护。

我现在遇到的问题是,即使Lambda的IAM角色已配置为对Cognito用户池的特权访问,似乎我也需要传递用户密码。理想情况下,我希望能够从Cognito获取任意用户的JWT令牌,而不必知道他们的密码(或者理想情况下,完全禁用该用户的交互式登录)。

我有几种替代方法:

  • 保持现在的逻辑,并从Parameter Store安全地注入密码。但是,通过这种方式,我需要设计一个定期旋转密码的系统。

  • 在登录之前立即在Lambda中生成随机字符串,使用AdminSetUserPassword重设服务帐户的密码,然后使用该密码登录。这样就解决了轮换问题,但是这样做似乎是错误的方式,并且容易出现比赛情况。

  • CUSTOM_AUTH进行挑战。这似乎不必要地复杂,因为我不得不自己亲自设计挑战性lambda,而不是仅仅依靠原始的IAM角色。

  • 放弃服务帐户方法,并使用不同的auth方法为lambda直接访问后端提供权限。这是可行的,但我喜欢通过Cognito JWT在后端仅使用一种身份验证方法的概念。

对我来说似乎很奇怪,存在具有管理凭据的特权操作“以任何用户身份登录”,或者我只是缺少了什么?

0 个答案:

没有答案