获取AWS STS返回的凭据

时间:2017-08-24 10:30:34

标签: amazon-web-services amazon-ec2 aws-cli

我正在为实例配置文件分配EC2实例。实例配置文件有权承担跨帐户角色(例如,帐户B)

aws sts assume-role --role-arn "arn:aws:iam::Account_B_ID:role/admin" 

- role-session-name" Admin_in_acc_B"

通过运行此命令,它将返回包含会话令牌的临时安全凭证。现在谈谈如何利用信息将其注入环境变量,以便CLI能够在帐户B上运行任务(ec2-describe-instances)。



export EC2_URL=https://ec2.ap-southeast-1.amazonaws.com
export EC2_HOME=/usr/bin
export JAVA_HOME=/usr/lib/jvm/default-java/jre

export AWS_ACCESS_KEY=
export AWS_SECRET_KEY=

export AWS_SESSION_TOKEN=

PATH=$PATH:/usr/bin

ec2-describe-instances




3 个答案:

答案 0 :(得分:1)

如果您使用配置文件,您可以让CLI为您完成所有操作。例如,如果您的凭证文件(〜/ .aws / credentials)看起来像这样(通过aws configure设置):

[assume-role-source-credentials]
aws_access_key_id = akid
aws_secret_access_key = skid

您的配置文件(〜/ .aws / config)如下所示:

[profile assume-role-profile]
source_profile = assume-role-source-credentials
role_arn = arn:aws:iam::Account_B_ID:role/admin
role_session_name = Admin_in_acc_B
region = us-west-2

然后,CLI将自动承担角色,缓存并刷新它们以减少承担角色的调用次数。请注意,您需要更改这些配置文件以匹配您的确切配置(尤其是区域)。

更多文档here

答案 1 :(得分:0)

首先,您应该使用AWS Command-Line Interface (CLI),而不是使用ec2-describe-instances等个别命令。

此AWS CLI允许以多种方式指定凭据,包括:

  • 环境变量(如上所述)
  • 个人资料(通过aws configure命令创建,并通过--profile
  • 激活

因此,您可以:

  • 致电assume-role以检索凭据
  • Store them in the credentials file,例如使用aws configure --profile foo
  • 然后只需调用aws ec2 describe-instances --profile foo
  • 等命令即可

答案 2 :(得分:0)

上述解决方案"假设 - 角色简介"没有硬编码凭证,动态设置所有内容:

您可以使用假定角色创建配置文件:

aws configure --profile assume-role-profile set role_arn arn:aws:iam::Account_B_ID:role/admin

要为新配置文件提供凭据,您必须使用以下行之一:

  1. aws configure --profile assume-role-profile set source_profile default
  2. aws configure --profile assume-role-profile set credential_source Ec2InstanceMetadata
  3. aws configure --profile assume-role-profile set credential_source EcsContainer
  4. 我的个人电脑上的第1行是正确的,因为我使用了默认配置文件。

    第2行应该是正确的,使用带有实例配置文件的EC2实例(正确的措辞:实例有角色)

    当我使用AWS CodeBuild测试代码时,第3行是正确的。新配置文件使用了codepipeline-role的凭据。

    之后,您可以使用新的个人资料,例如:

    aws --profile assume-role-profile ec2 describe-instances
    

    文档:https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#using-aws-iam-roles