使用 AWS CLI 以及 JSON 文件进行身份验证

45次阅读
没有评论

问题描述

正在设置他的 AWS CLI,以便访问 AWS 服务,如 EC2,他需要切换角色。他已经使用了命令 aws sts assume-role,并获得了包含 CredentialsAssumedRoleUser 的 JSON 数据,其中包括一个会话令牌。现在问题是,他应该如何告诉 AWS CLI:“使用这个 JSON 进行角色身份验证”?

以下是他提供的 JSON 数据(已进行了隐私保护):

{
    "Credentials": {
        "AccessKeyId": "XXXXXXXXXXW5YABBKUXQ",
        "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXB2EFEUmCtuwbJPcMBF02",
        "SessionToken": "XXXXXXXXXXsi6md6PTNHYjHUljav",
        "Expiration": "2021-12-03T04:59:02+00:00"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "XXXXXXXXXX:dev",
        "Arn": "arn:aws-us-gov:sts::999999999991:assumed-role/PROJADMIN/dev"
    }
}

解决方案

请注意以下操作可能受到版本差异的影响,请确保在执行操作前备份好相关文件。

使用会话令牌进行身份验证

您可以使用 JSON 数据中的 SessionToken 来进行身份验证。有两种常用的方法可以实现这一点:将会话令牌添加到凭证文件的配置文件中,或将其导出为环境变量。

方法1:添加到凭证文件

  1. 打开 AWS CLI 的凭证文件,通常位于 ~/.aws/credentials(Linux/macOS)或 C:\Users\<您的用户名>\.aws\credentials(Windows)。
  2. 在适当的 AWS CLI 配置文件(通常是 default 或您自定义的配置文件)下,添加以下内容(将 XXXXXXXXXXsi6md6PTNHYjHUljav 替换为您的实际会话令牌):

ini
[default]
aws_access_key_id = XXXXXXXXXXXXW5YABBKUXQ
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXB2EFEUmCtuwbJPcMBF02
aws_session_token = XXXXXXXXXXXXsi6md6PTNHYjHUljav

  1. 保存文件并关闭。

方法2:导出为环境变量

  1. 打开终端(Linux/macOS)或命令提示符(Windows)。
  2. 运行以下命令,将会话令牌导出为环境变量(将 XXXXXXXXXXsi6md6PTNHYjHUljav 替换为您的实际会话令牌):

bash
export AWS_ACCESS_KEY_ID=XXXXXXXXXXW5YABBKUXQ
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXB2EFEUmCtuwbJPcMBF02
export AWS_SESSION_TOKEN=XXXXXXXXXXsi6md6PTNHYjHUljav

或在 Windows 上:

bash
set AWS_ACCESS_KEY_ID=XXXXXXXXXXW5YABBKUXQ
set AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXB2EFEUmCtuwbJPcMBF02
set AWS_SESSION_TOKEN=XXXXXXXXXXsi6md6PTNHYjHUljav

使用会话令牌进行 AWS CLI 操作

一旦您将会话令牌添加到凭证文件或导出为环境变量,您就可以使用 AWS CLI 执行受角色保护的操作了。例如,您可以运行以下命令来列出您的 S3 存储桶:

aws s3 ls

AWS CLI 将自动使用您提供的凭证(包括会话令牌)进行身份验证,以便访问受保护的资源。

结论

通过将会话令牌添加到凭证文件的配置文件或导出为环境变量,您可以在 AWS CLI 中使用生成的 JSON 数据进行身份验证,从而访问受角色保护的 AWS 资源。这样,您就可以在执行 AWS CLI 命令时无需手动输入凭证信息,从而更加方便地管理和操作您的 AWS 资源。

请注意,将凭证信息写入文件或导出为环境变量都存在一定的安全风险,请确保妥善保护您的凭证信息,避免泄露给未授权的人员。如有需要,您还可以探索其他安全性更高的凭证管理方式,如使用 AWS 管理的角色权限等。

引用

正文完