envchainはAWSのアクセスキーのような機密情報を含む環境変数をmacOSのKeychainに保存し、コマンドを実行するときにそれを復号してくれるCLIツールだ。機密の環境変数を.bashrcなどに書いてしまうより、安全に管理することができる。
取説
❯ envchain
envchain version 1.0.1
Usage:
Add variables
envchain (--set|-s) [--[no-]require-passphrase|-p|-P] [--noecho|-n] NAMESPACE ENV [ENV ..]
Execute with variables
envchain NAMESPACE CMD [ARG ...]
Options:
--set (-s):
Add keychain item of environment variable +ENV+ for namespace +NAMESPACE+.
--noecho (-n):
Enable noecho mode when prompting values. Requires stdin to be a terminal.
--require-passphrase (-p), --no-require-passphrase (-P):
Replace the item's ACL list to require passphrase (or not).
Leave as is when both options are omitted.
AWSのアクセスキー等をKeychainに登録する
envchain --set ネームスペース 環境変数名
の形式でコマンドを呼び出すと、環境変数をKeychainに登録することができる。ネームスペースは好みで決める。フォルダ名のようなものだ。環境変数は複数指定することもできる。例えば、AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
を登録するには次のようにする:
❯ envchain --set aws AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
aws.AWS_ACCESS_KEY_ID: (アクセスキーを入力)
aws.AWS_SECRET_ACCESS_KEY: (シークレットアクセスキーを入力)
コマンドを実行すると、変数の値を聞かれるので値を入力していく。
登録した環境変数を確認する
登録した環境変数を確認するには次のようなコマンドを実行する:envchain ネームスペース env
。
❯ envchain aws env | grep AWS
AWS_ACCESS_KEY_ID=*******************
AWS_SECRET_ACCESS_KEY=*********************************
この状態でKeychain Accessを開いて"envchain"
を検索すると、2つの変数が登録されているのが確認できる。
環境変数を復号した状態でコマンドを実行する
envchain
はenvchain ネームスペース 実行したいコマンド
の順で引数を渡すと、環境変数を復号した状態でコマンドを実行してくれる。例えば、aws iam get-user
を実行させるときは次のようになる:
❯ envchain aws aws iam get-user
{
"User": {
"Path": "/",
"UserName": "suin",
"UserId": "*************",
"Arn": "arn:aws:iam::************:user/suin",
"CreateDate": "2014-01-29T08:12:23Z",
"PasswordLastUsed": "2017-01-16T00:41:34Z"
}
}
この例のaws aws
は誤植ではない。左はネームスペース、右はawscliだ。