8 个版本
新版本 0.1.7 | 2024 年 8 月 9 日 |
---|---|
0.1.6 | 2024 年 6 月 28 日 |
0.1.5 | 2024 年 5 月 27 日 |
在 身份验证 中排名第 331
每月下载量 23
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 的优先级
--role-arn
选项- 通过
--profile-name
选项从配置文件中查找 - 从配置文件中加载的列表中选择角色 ARN 以在交互式 UI 中进行选择
配置文件的优先级
--config
选项$HOME/.aws/config.toml
$HOME/.aws/config
查找跳转账户的优先级
例如 AWS 凭据、序列号和 TOTP 秘密。
- 环境变量(
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
、SERIAL_NUMBER
、TOTP_SECRET
) --config
选项和--aws-profile
选项指定的 INI 格式文件- 根据 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_NUMBER
和 TOTP_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/envchain 或 okkez/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