AWSumeの「1PasswordからMFAを自動取得するプラグイン」を使ってみる
AWSumeを利用すれば、CLIのスイッチロールを便利に操作できます。
AWSアカウントのIAMユーザにMFAを設定していると、AWSumeを利用する際にMFAの入力が求められます。
$ awsume profile-name Enter MFA token:
このMFA入力を自動化する方法があるみたいです。
今回は、AWSumeの「1PasswordからMFAを自動取得するプラグイン」を見つけたので、試してみました。(下記サイトの手順を実行しています。)
おすすめの方
- AWSumeに興味がある方
- AWSumeで1PasswordからのMFA取得を自動化したい方
- 1Password CLIのAWSプラグインの利用を止めたい方
1PasswordからMFAを自動取得するプラグインをインストールする
私はAWSumeをpipxでインストールしているため、プラグインもpipxでインストールします。
pipx inject awsume awsume-1password-plugin
1Passwordを設定する
1Password CLIをインストールする
1Password CLIをインストールします。AWS用プラグインの設定は不要です。
次のコマンドが実行できればOKのはず。
op vault list
AWSumeの設定を更新する
1Passwordの設定を把握する
MFAを利用するAWSアカウントのアイテム名を1Passwordで確認します。 下記の例だと「AWS(Classmethod)」です。このアイテム名を次に使用します。
AWSumeの設定ファイルを更新する
「~/.awsume/config.yaml」を更新します。「1password」の部分を追記しました。(他の設定はデフォルトのはず。)
colors: true fuzzy-match: false role-duration: 0 1password: AWS(Classmethod)
AWSumeを利用したとき、MFAトークンが自動入力されることを確認する
awsumeコマンドを実行すると、1Passwordから自動でMFAを取得してくれました。待ってるだけでした!!
$ awsume profile-name Obtained MFA token from 1Password item: AWS(Classmethod) Session token will expire at 2024-05-15 22:52:55 [profile-name] Role credentials will expire 2024-05-15 11:52:56
AWS コマンドを実行してみる
S3バケットの一覧が取得できました。
aws s3 ls
1Password CLIのAWSプラグインを利用している場合は、利用をやめる
1Password CLIのAWSプラグインを利用している場合は、「aws」コマンドにエイリアスが使われています。
export OP_PLUGIN_ALIASES_SOURCED=1 alias aws="op plugin run -- aws"
そのため、「awsume」コマンドを実行したあとに「aws」コマンドを実行すると、1Password CLIのAWSプラグインが動いてMFAを取得しようとします。
というわけで、1Password CLIのAWSプラグイン関連の情報を無効にしましょう。
AWS認証情報の無効化
このコマンドを実行したあと、必要に応じて、「awsume」コマンドを再実行してください。
op plugin clear aws or op plugin clear aws --all
awsエイリアスの無効化
おそらく、1PasswordのAWSプラグイン導入手順に従っていれば、次のようなコマンドを実行していると思います。
echo "source ~/.config/op/plugins.sh" >> ~/.zshrc && source ~/.zshrc
そのため、「~/.zshrc」を編集して、「source ~/.config/op/plugins.sh」の行を削除したあと、再読み込みすればOKです。
さいごに
プラグインを使えば、1PasswordからのMFA取得の自動化が簡単にできました。 awsumeコマンドが今まで通りに使えるのも嬉しいですね。