【发布时间】:2018-04-18 17:50:43
【问题描述】:
在 EC2 上部署 java 应用程序时,我可以使用
new ProfileCredentialsProvider()
注入一些实例凭据。但会是哪个 IAM 用户?我如何管理该用户的权限?例如将他的权限限制在某些特定的 S3 存储桶中
【问题讨论】:
标签: java amazon-web-services amazon-ec2 aws-sdk amazon-iam
在 EC2 上部署 java 应用程序时,我可以使用
new ProfileCredentialsProvider()
注入一些实例凭据。但会是哪个 IAM 用户?我如何管理该用户的权限?例如将他的权限限制在某些特定的 S3 存储桶中
【问题讨论】:
标签: java amazon-web-services amazon-ec2 aws-sdk amazon-iam
关于 EC2 实例配置文件,Mark B 是 100% 正确的。顺便说一句——Java ProfileCredentialsProvider 指的是 AWS 开发工具包和 AWS CLI 可用的凭证配置文件,而不是 EC2 实例配置文件。从其文档中:
基于 AWS 配置文件的凭据提供程序。这 提供商从配置文件配置文件中提供 AWSCredentials 默认配置文件,或特定的命名配置文件。
AWS 凭证 配置文件允许您共享多组 AWS 安全凭证 在 AWS SDK for Java 和 AWS CLI 等不同工具之间。
这对于部署到 EC2 是不可取的,因为这意味着您必须将配置文件存储在 EC2 实例上。根据 Mark B 的回答,EC2 实例配置文件更适合将凭证传递给 EC2 上的应用程序。
为了能够在不进一步更改代码的情况下检索其中任何一个,只需使用DefaultAWSCredentialsProviderChain(注意:renamed DefaultCredentialsProvider in AWS SDK for Java v2),它将通过多种凭据方案,直到它在您的系统上找到一个有效的方案。根据文档,它按以下顺序查找凭据:
Java 系统属性 - aws.accessKeyId 和 aws.secretKey
环境变量 - AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY
所有 AWS 开发工具包和 AWS CLI 共享的默认位置 (~/.aws/credentials) 的凭证配置文件
如果设置了 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 环境变量,则通过 Amazon EC2 容器服务交付的凭证 并且安全管理员有权访问该变量。
通过 Amazon EC2 元数据服务交付的实例配置文件凭证
这将允许您在本地开发环境中查找凭证配置文件,并在生产 EC2 环境中查找 EC2 实例配置文件。
【讨论】:
它不是 IAM 用户,而是 EC2 实例配置文件。首先,您必须在您的账户中创建实例配置文件,就像您必须创建 IAM 用户一样。通过将适当的 IAM 安全策略分配给实例配置文件,您可以像管理 IAM 用户的权利一样管理 EC2 实例配置文件的权限。
【讨论】: