我正在开发一个必须访问某些AWS资源的移动应用程序,因此它需要对AWS终端节点进行身份验证。该应用程序不管理用户(登录,注销,注册等)。
我的第一个解决方案是创建一个专门用于移动应用程序的IAM用户,并将其凭据嵌入到移动应用程序代码中。该应用程序使用嵌入式证书对AWS进行身份验证。它可以工作,但是AWS建议避免直接在应用程序中嵌入凭据。
我认为Cognito是更好的解决方案。因为我不需要用户管理,所以我应该使用未经身份验证的(访客)身份来请求临时AWS凭证。
但是我不明白为什么来宾认知身份比嵌入式凭据更安全。通过发送Cognito身份池ID,该应用程序会收到一个临时的AWS凭证,该ID是该应用程序中嵌入的一个长期“数字”。如果有人能够找到此身份池ID,则她可以接收AWS凭证并作为我的官方移动应用程序访问AWS资源。嵌入式AWS长期凭证和最简单的Cognito访问之间似乎没有区别。
为什么Cognito解决方案比嵌入式AWS凭证更好?
答案 0 :(得分:1)
如果您正在使用身份池创建未经身份验证的访问,则将允许公众访问您的AWS资源。确保您仔细地编写策略,就安全性而言,使用单个IAM用户还是使用未经身份验证的认知访问都没关系。
使用联合身份将为您带来好处,例如获得有关使用情况的统计信息以及向事件添加触发器。还请记住,创建一个IAM用户然后允许多个人使用这些凭据是“认知”联合身份验证未经身份验证的目的的一种“ hack”方式。如果AWS决定限制IAM的这种行为,那么以后您可能会遇到意想不到的麻烦。