我的身份池ID有多敏感?

时间:2017-11-08 02:40:40

标签: javascript amazon-web-services amazon-cognito aws-cognito

背景

我一直在研究消耗AWS资源的前端javascript应用程序(主要是API网关后面的Lambdas)。 API网关资源受IAM保护,应用程序使用Cognito提供的大部分内容。

这包括启用了未经身份验证的身份的身份池,以及与Cognito用户池和多个社交和自定义OIDC提供商的联合。 Cognito只使用我们的前端javascript代码与Amazon的SDK进行交互。

未经身份验证的身份

ID池ID的敏感性适用于我的所有用例,但我对未经身份验证的用例最感兴趣。我们一直在关注Amazon's suggested approach:使用Cognito或STS获取IAM密钥,并使用这些密钥访问AWS资源。 I've even been spreading this gospel.

这一切都很好,但它确实需要我将我的身份池ID暴露给前端。身份池ID是获取未经身份验证的IAM角色的IAM密钥所需的唯一内容。

理论上,任何攻击者都可以使用我使用的相同亚马逊SDK来获取我的身份池ID并开始滥用我的资源(允许使用Unauth IAM角色)。

问题

  • 从一般意义上讲,我认为身份池ID有多敏感?向任何人展示这个只是A-ok吗?
  • 如果我认为 足够敏感而不暴露给浏览器,我该如何处理?在哪里以及如何隐藏它并进入它?
  • 无论如何,我应该"烘烤"一种频繁旋转id的方法吗?
  • 是否存在可以公开id的用例(类型),以及不是<?li>的情况?

我正在寻找

的答案

如上面的链接答案中所述,我的理解是,未经身份验证的身份不是防弹的,只能提供合理的级别的信心,以确保它是您的应用线的另一端。换句话说,虽然并非不可能,但对于有人使用此模型滥用您的AWS后端至少相当困难

除了上面的要点之外,我还要感谢对这种理解的任何批评。我是否强调围绕未经身份验证的IAM访问AWS的安全性?推销它?

免责声明

我承认这个问题有点像this one。我询问在我的应用程序中对标识池ID进行硬编码;这已经从Web服务中获取。但是,它仍然完全暴露在前端,你可以说它实际上更容易将其从AJAX响应中拉出来而不是缩小代码。

我确实尽可能地锁定Unauth角色,并且我理解允许匿名访问东西只能是如此安全。

0 个答案:

没有答案