#命令行 #命令行工具 #AWS #AWS 凭据 #临时 #安全 #生成

bin+lib aws-assume-role-rs

用于生成 AWS 临时安全凭证的命令行工具

8 个版本

新版本 0.1.7 2024 年 8 月 9 日
0.1.6 2024 年 6 月 28 日
0.1.5 2024 年 5 月 27 日

身份验证 中排名第 331

每月下载量 23

MIT 许可证

38KB
680

aws-assume-role-rs

此工具提供了 assume-role 命令以生成 AWS 临时安全凭证。

安装

$ cargo binstall aws-assume-role-rs

$ cargo install aws-assume-role-rs

如何使用

命令行选项

$ assume-role --help
A command line tool to generate AWS temporary security credentials.

Usage: assume-role [OPTIONS] <--totp-secret <TOTP_SECRET>|--totp-code <TOTP_CODE>> [ARGS]...

Arguments:
  [ARGS]...  Commands to execute

Options:
      --aws-profile <AWS_PROFILE>      AWS profile name in AWS_CONFIG_FILE. This option is used to detect jump account information [env: AWS_PROFILE=]
  -p, --profile-name <PROFILE_NAME>    The profile name
  -r, --role-arn <ROLE_ARN>            The IAM Role ARN to assume [env: ROLE_ARN=]
  -c, --config <CONFIG>                The config file. default: $HOME/.aws/config.toml
                                       Load the first of the following files found:
                                         1. the file specified by this option
                                         2. $HOME/.aws/config.toml
                                         3. $HOME/.aws/config
  -d, --duration <DURATION>            The duration in seconds of the role session. (900-43200)
                                       The following suffixes are available:
                                         "s": seconds
                                         "m": minutes
                                         "h": hours
                                       No suffix means seconds. [default: 1h]
  -n, --serial-number <SERIAL_NUMBER>  MFA device ARN such as arn:aws:iam::123456789012/mfa/user [env: SERIAL_NUMBER=]
  -s, --totp-secret <TOTP_SECRET>      The base32 format TOTP secret [env: TOTP_SECRET=]
  -t, --totp-code <TOTP_CODE>          The TOTP code generated by other tool [env: TOTP_CODE=]
  -f, --format <FORMAT>                Output format [possible values: json, bash, zsh, fish, power-shell]
  -v, --verbose                        Print verbose logs
  -h, --help                           Print help
  -V, --version                        Print version

查找角色 ARN 的优先级

  1. --role-arn 选项
  2. 通过 --profile-name 选项从配置文件中查找
  3. 从配置文件中加载的列表中选择角色 ARN 以在交互式 UI 中进行选择

配置文件的优先级

  1. --config 选项
  2. $HOME/.aws/config.toml
  3. $HOME/.aws/config

查找跳转账户的优先级

例如 AWS 凭据、序列号和 TOTP 秘密。

  1. 环境变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSERIAL_NUMBERTOTP_SECRET
  2. --config 选项和 --aws-profile 选项指定的 INI 格式文件
  3. 根据 aws_config 的默认规则加载凭据

设置

创建 $HOME/.aws/config.toml

[profile.test]
role_arn = "arn:aws:iam::123456789012:role/Developer"

[profile.test-admin]
role_arn = "arn:aws:iam::123456789012:role/PowerUserRole"

[profile.production-viewer]
role_arn = "arn:aws:iam::123456789876:role/Viewer"

[profile.production-maintainer]
role_arn = "arn:aws:iam::123456789876:role/Maintainer"

TOML 格式只支持包含键 role_arn 的部分。

或创建 $HOME/.aws/config

[profile jump]
region = ap-northeast-1
serial_number = arn:aws:iam::987654321234:mfa/serialnumber

[profile jump2]
region = ap-northeast-1

[profile test]
role_arn = arn:aws:iam::123456789012:role/Developer

[profile test-admin]
role_arn = arn:aws:iam::123456789012:role/PowerUserRole

[profile production-viewer]
role_arn = arn:aws:iam::123456789876:role/Viewer

[profile production-maintainer]
role_arn = arn:aws:iam::123456789876:role/Maintainer

INI 文件格式忽略所有不包含属性 role_arn 的部分以查找 role_arn

交互式模式

设置环境变量 SERIAL_NUMBERTOTP_SECRET。或者,您也可以设置 --serial-number--totp-secret

您可以在配置文件中交互式地选择配置文件。

$ env AWS_PROFILE=jump SERIAL_NUMBER="..." TOTP_SECRET="..." assume-role aws s3 ls
# same as the avobe using command line options
$ env AWS_PROFILE=jump assume-role --serial-number "..." --totp-secret "..." aws s3 ls

您可以通过命令行选项(--totp-code)或环境变量(TOTP_CODE)设置由其他工具生成的 TOTP_CODE,而不是 TOTP_SECRET

$ env AWS_PROFILE=jump SERIAL_NUMBER="..." TOTP_CODE="..." assume-role aws s3 ls
# same as the avobe using command line options
$ env AWS_PROIFLE=jump assume-role --serial-number="..." --totp-code="..." assume-role aws s3 ls

非交互式模式

您可以使用 --profile 选项指定角色 ARN。

$ AWS_PROFILE=jump assume-role --profile-name test --totp-secret "..." aws s3 ls
or
$ assume-role --aws-profile=jump --profile-name=test --totp-code=123456 aws s3 ls

您可以使用 --role-arn 选项直接指定角色 ARN。

$ AWS_PROFILE=jump2 assume-role --role-arn arn:aws:iam::123456789012:role/Developer --serial-number "..." --totp-secret "..." aws s3 ls

与 envchain 一起使用

您可以使用此假设角色命令与 sorah/envchainokkez/envchain-rs 一起使用。

在秘密服务或密钥链中存储秘密。

$ envchain --set jump AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_REGION SERIAL_NUMBER TOTP_SECRET
# ... input secret values
$ envchain jump assume-role -p test-admin aws s3 ls

设置环境变量

您可以设置环境变量。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN
  • AWS_EXPIRATION

Bash

eval $(envchain jump -p test-admin --format bash)

Zsh

eval $(envchain jump -p test-admin --format zsh)

Fish

eval (envchain jump -p test-admin --format fish)

许可证

MIT 许可证

依赖关系

~26–40MB
~675K SLoC