运行在AWS外部的应用是否可以使用AWS IAM角色?
结论
你完全可以为托管在AWS外部的应用配置IAM角色,不需要将Heroku上的应用迁移到EC2等AWS服务上才能使用IAM角色。
两种主流实现方案
- 使用IAM Roles Anywhere
这是AWS官方推出的专门面向外部工作负载的IAM角色解决方案,核心逻辑是通过X.509数字证书完成应用身份认证,无需长期持有AK/SK,认证通过后即可获取对应IAM角色的短期访问凭证,完全符合AWS的安全最佳实践。 - 调用STS
AssumeRole接口兑换临时凭证
如果暂时不想接入IAM Roles Anywhere,也可以在Heroku的机密管理模块中存储一个仅拥有sts:AssumeRole权限的最小权限IAM用户密钥,应用启动或凭证过期时调用STS服务的AssumeRoleAPI,兑换拥有S3访问权限的目标IAM角色的短期凭证。相比直接用长期密钥访问S3,该方案安全等级高很多,即使临时凭证泄露也会很快过期,不会造成长期风险。
现有IAM用户方案的优化建议
如果你暂时不想调整现有认证逻辑,继续使用IAM用户方案也可以,只要做好两点即可大幅降低安全风险:
- 严格遵循最小权限原则,给该IAM用户仅开放指定S3桶的必要操作权限,不要配置全服务、全资源的访问权限
- 不要将访问密钥硬编码在代码、配置文件中,存储到Heroku的环境变量或专属机密管理模块中,定期轮换密钥
内容的提问来源于stack exchange,提问作者Thomas Haysom
相关产品推荐
相关产品推荐

