#aws-cli #aws #profile #key #session #credentials #session-keys

app ngydv

用于存储/恢复 aws cli 凭据的工具

6 个版本

0.1.5 2020 年 8 月 29 日
0.1.4 2020 年 6 月 3 日
0.1.2 2020 年 5 月 16 日

#571 in 身份验证

Apache-2.0

52KB
1K SLoC

ngydv

ngydv 使用 mfa-token 创建 aws cli 会话密钥,并存储、导出它。

安装

使用 homebrew

使用此命令,下载 mac/linux 的二进制文件。

brew install K2Da/tap/ngydv

使用 cargo

cargo install ngydv

用法

您需要 aws cli 配置文件 ~/.aws/config 和 ~/.aws/credentials。

另外,如果您需要,在 ~/.aws/ngydv 中有一个额外的文件来存储您的 mfa 设备 arn。

# ~/.aws/ngydv
[profile_a]
  mfa_serial = arn:aws:iam::nnnnnnnnnnnn:mfa/user_name

子命令

创建会话 / 担任角色

根据配置文件类型创建会话或担任角色,并将其存储在 ~/.aws/ngydv_credentials.yaml 中。

并打印导出密钥和令牌的命令,因此使用方法如下。

# ngydv in {profile} {mfa_token}
source <(ngydv in profile_a 000000)
# or
. <(ngydv in profile_a 000000)

创建会话

创建如下配置文件的会话。

# .aws/credentials
[profile_a]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# .aws/config
[profile_a]
  output = yaml
  region = ap-northeast-1
# ~/aws/ngydv
[profile_a]
  mfa_serial = arn:aws:iam::nnnnnnnnnnnn:mfa/user_name

担任角色

按照如下配置文件担任角色。

# .aws/config
[profile_b]
  region = ap-northeast-1
  role_arn = arn:aws:iam::nnnnnnnnnnn:role/rolename
  mfa_serial = arn:aws:iam::mmmmmmmmmmmm:mfa/user-name
  source_profile = base_profile

导出

此子命令打印导出存储会话令牌的 sh 命令。

输出与 'in' 子命令相同,但无需再次输入 mfa 令牌。此子命令用于在多用户配置文件或多 AWS 账户之间切换。

source <(ngydv export profile)
# or
. <(ngydv export profile)

清除会话

清除 ~/.aws/ngydv_credentials.yaml 中存储的会话。

ngydv clear session

清除环境变量

清除与 AWS CLI 命令相关的环境变量。

. <(ngydv clear env)
# or
source <(ngydv clear env)

配置文件

列出可用的配置文件。

$ ngydv profile
 id | profile   | region         | type                       | credential
----+-----------+----------------+----------------------------+---------------------------------------
 1  | default   | ap-northeast-2 | Access key                 | -
 2  | hpm       | ap-northeast-1 | Access key with mfa device | expired at 2020-05-06 00:02:01 +09:00
 3  | hpmadm    | ap-northeast-1 | Assume role from hpm       | -

显示

显示当前默认配置文件。

$ ngydv show
1. checking AWS_ACCESS_KEY_ID and AWS_ACCESS_KEY_ID.
  environment variables are not set.
2. checking AWS_PROFILE.
  environment variable is not set.
3. checking profile named 'default'.

use profile "default" as default.

环境变量

列出与 AWS CLI 相关的环境变量。

$ ngydv env
 name                        | desc                                                                                     | default            | value
-----------------------------+------------------------------------------------------------------------------------------+--------------------+------------------------------------------
 AWS_ACCESS_KEY_ID           | AWS access key associated with an IAM user or role                                       |                    | XXXXXXXXXXXXXXXXXXXX
 AWS_CA_BUNDLE               | The path to a certificate bundle to use for HTTPS certificate validation                 |                    |
 AWS_CONFIG_FILE             | The location of the file that the AWS CLI uses to store configuration profiles           | ~/.aws/config      |
 AWS_DEFAULT_OUTPUT          | The output format to use                                                                 | json               |
 AWS_DEFAULT_REGION          | The AWS Region to send the request to                                                    |                    |
 AWS_PAGER                   | The pager program used for output                                                        |                    |
 AWS_PROFILE                 | The name of the CLI profile with the credentials and options to use                      | default            |
 AWS_ROLE_SESSION_NAME       | A name to associate with the role session                                                |                    |
 AWS_SECRET_ACCESS_KEY       | The secret key associated with the access key                                            |                    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 AWS_SESSION_TOKEN           | The session token value that is required if you are using temporary security credentials |                    |
 AWS_SHARED_CREDENTIALS_FILE | The location of the file that the AWS CLI uses to store access keys                      | ~/.aws/credentials |

依赖关系

~26–40MB
~625K SLoC