【问题标题】:access AWS S3 from java using IAM Role使用 IAM 角色从 java 访问 AWS S3
【发布时间】:2018-10-16 21:55:48
【问题描述】:
我们将应用程序托管在本地而不是 EC2 上。是否可以使用 IAM 角色而不是来自 java 的配置文件或凭证来访问 AWS S3?
安全团队对在本地存储凭据表示担忧,因为它很容易受到攻击。
据我用谷歌搜索,我找到了使用存储在 Environment 或 .aws 中的凭据作为配置文件进行访问的选项。如果我们需要基于角色的身份验证,那么应用程序应该部署在 EC2 中。但是我们将服务器托管在本地。
如果您有任何建议,请提供。
【问题讨论】:
标签:
java
amazon-web-services
amazon-s3
【解决方案1】:
我不确定我是否了解您想要做什么,但为什么不为该角色分配一个专门的用户?
您可能会觉得有用的另一件事是使用临时凭据。一般来说,亚马逊为此提供两种服务——Cognito 和 STS(据我了解,Cognito 在幕后使用 STS)。它们有不同的限制,但一般来说,它们允许您在有限的时间内接收凭据。这样,您将获得一个访问 ID、一个秘密(以及一个会话 ID),但它们将是临时的。
【解决方案2】:
我们将应用程序托管在本地而不是 EC2 上。是否可以使用 IAM 角色而不是来自 java 的配置文件或凭证来访问 AWS S3?
服务角色绑定到 AWS 服务,因此——长话短说——对于您的本地服务器,您需要使用 AWS API 密钥。
安全团队对在本地存储凭据表示担忧,因为它很容易受到攻击。
不幸的是 - 最后,您需要将凭据存储在某处。即使使用 Cognito 或 STS 等服务,您也需要将服务的凭据存储在某处(有效地 - 用于任何外部或云服务,无论您使用何种云或服务)。
恕我直言,您能做的最好的事情就是使用专用的 AWS 凭证(API 密钥),只有真正需要的权限。