首页 文章

获取AWS STS返回的凭据

提问于
浏览
-1

我正在为实例配置文件分配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

    首先,不应使用 ec2-describe-instances 之类的单独命令,而应使用AWS Command-Line Interface (CLI) .

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

    • 环境变量(如上所述)

    • 配置文件(通过 aws configure 命令创建并通过 --profile 激活

    因此,您可以:

    • 调用 assume-role 以检索凭据

    • Store them in the credentials file,例如使用 aws configure --profile foo

    • 然后只需调用 aws ec2 describe-instances --profile foo 等命令

  • 0

    如果使用配置文件,您可以让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 .

  • 0

    提到的解决方案“假设 - 角色 - 配置文件”没有硬编码凭据,动态设置所有内容:

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

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

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

    • aws configure --profile assume-role-profile set source_profile default

    • aws configure --profile assume-role-profile set credential_source Ec2InstanceMetadata

    • aws configure --profile assume-role-profile set credential_source EcsContainer

    第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

相关问题