AWSumeの「1PasswordからMFAを自動取得するプラグイン」を使ってみる

AWSumeの「1PasswordからMFAを自動取得するプラグイン」を使ってみる

AWS用のMFA入力の自動化が便利すぎる。
Clock Icon2024.05.15

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)」です。このアイテム名を次に使用します。

01_1password_aws

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コマンドが今まで通りに使えるのも嬉しいですね。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.