aws configureでアクセスキーを保存するとアクセスキーは ~/.aws/credentialsに保存される。しかし、この方法では平文で保存されるのでアクセスキーが漏洩した場合にセキュリティ上のリスクがある。
aws-vaultを使うとアクセスキーの平文での保存を避けつつCLIでAWSにアクセスできる。
aws-vaultとは
aws-vaultはAWSのクレデンシャル情報を安全に保存し、コマンド実行時に必要な情報を取得して認証するCLIツール。認証情報は暗号化されて保存されるため、AWSアクセスキーの平文での保存を避けつつ、CLIでAWSへアクセスできるようになる。
aws-vaultのインストール
MacではHomebrewを使ってインストールできる。
$ brew install --cask aws-vault
Linuxなど他の環境ではGithubからダウンロードできる。
≫ Releases · 99designs/aws-vault
aws-vaultの使い方
アクセスキーの保存: aws-vault add
アクセスキーの保存はaws-vaultを使って以下のようにコマンドを実行する。
$ aws-vault add [profile name]
Enter Access Key ID: AKIXXXXXXXXXXXXXXXXXXXXX
Enter Secret Access Key:
Added credentials to profile "xxxx" in vault
[profile name]は、保存するクレデンシャル情報の名前で任意の名前を指定できる。
アクセスキーの一覧: aws-vault list
保存されたアクセスキーの一覧を表示するには以下のコマンドを実行する。
$ aws-vault list
Profile Credentials Sessions
======= =========== ========
suer suer -
アクセスキーの使用: aws-vault exec
aws-vaultで保存したアクセスキーを使ってAWSにCLIでアクセスするには、以下のコマンドを実行する。
aws-vault exec [profile name] -- コマンド
たとえば、S3バケットの一覧を表示するには以下のように実行する。
$ aws-vault exec [profile name] -- aws s3 ls
アクセスキーの削除: aws-vault remove
保存されたアクセスキーを削除するには、以下のコマンドを実行する。
$ aws-vault remove [profile name]
[profile name]は削除したいクレデンシャル情報の名前。
アクセスキーの復元: –no-sessionオプション+環境変数の確認
aws-vaultで保存したアクセスキーを復元するには–no-sessionオプションを付けてenvコマンドで環境変数AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
を確認する。
$ aws-vault exec [profile name] --no-session -- env | grep -i aws
...
AWS_ACCESS_KEY_ID=AKIXXXXXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXX
--no-session
オプションを付けない場合もAWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
は設定されるが、aws-vaultが生成する一時的なキーとなっている。
大本のアクセスキーを確認するには--no-session
オプションが必要となる。
ブラウザでAWS Consoleにログインする
以下のコマンドでブラウザを立ち上げ、AWS Consoleを開く。
$ aws-vault login [profile name]
aws-vaultコマンドを省略する
aws-vault exec [profile name] -- コマンド
とするのは長いので通常通りaws cliを利用するには~/.aws/config
で対象profileに対してcredential_processを指定します。Macの場合は以下のように設定します。
[profile name]
credential_process=aws-vault exec [profile name] --json --prompt osascript
これで通常通りawsコマンドを実行できる。
aws --profile [profile name] s3 ls