継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

1Password の 1Password Shell Plugins を使って AWS CLI を操作する

タダです.

1Password の CLI ツールが有ることを知り,更に 1Password Shell Plugins というのを知って使ってみたことをこの記事にまとめていきます.

developer.1password.com

1Password CLI のインストール

後続作業で使うため CLI ツールをインストールします.

要件

自分の作業環境は macOS なのですが,CLI を使うための要件に以下のものがあります.

インストール作業

Homebrew でインストールができるので, brew コマンドでインストールします.

$brew install --cask 1password/tap/1password-cli
$op -v
2.17.0

初期セットアップ

初期セットアップとして 1Password 8 for Mac で設定から 1Password CLI で接続する をチェックボタンを有効化します.加えて, ロック解除に Touch ID のチェックボタンを有効化します.

これで CLI で 1Password にサインインができるようになり,保存している秘匿情報にもアクセスできます.

$op signin
$op item ls                                                                                                                                                                              
ID                            TITLE                                  VAULT               EDITED
12345678912345678123456789    xxxxx                                Personal            4 days ago
12345678912345678123456789    🎉 1Password へようこそ!               Personal            1 year ago
~中略~

参考情報

developer.1password.com

1Password Shell Plugins を使って AWS CLI を実行する

1Password Shell Plugins を使おうと思ったモチベーションにローカルに保存されているクレデンシャルをなくせるのでは無かろうか?というものがあります.以下の引用文にあるように各種 CLI やプログラムからアクセスされる認証情報に 1Password Shell Plugins を使ってアクセスできます.

1Password Shell Pluginsを使用すると、指紋、Apple Watch、またはシステム認証でサードパーティCLIを安全に認証するように1Passwordを設定することができます。CLIの認証情報は1Passwordアカウントに保存されるので、認証情報を手動で入力したり、平文で保存したりする必要がありません

対応しているプラグイン

プラグインの一覧は画像にあるものになります.この中から AWS CLI を使ってみます.

AWS CLI 向け1Password Shell Plugins セットアップと AWS CLI の実行確認

まず 1Password Shell Plugins のセットアップを行います.ドキュメントに沿って設定していきます.なお,クレデンシャルの登録は手動入力しています.

2023/05/07 17:35:58 Loading config file /Users/taddy/.aws/config
2023/05/07 17:35:58 Parsing config file /Users/taddy/.aws/config
2023/05/07 17:35:58 Unrecognised ini file section: DEFAULT
? Import value from: Enter value manually...

? Enter or paste in the value of the Access Key ID: xxx

? Enter or paste in the value of the Secret Access Key: [? for help] ****************************************

? Enter a name to save it in 1Password [default: "AWS Access Key"]:  AWS Access Key(private)

? Select the vault to save the Access Key in: Personal
✔ Securely saved "AWS Access Key(private)" in 1Password!

? Configure when "AWS Access Key(private)" will be used to authenticate: Use as global default on my system

Successfully set up authentication for AWS CLI.
Run any aws command to see it action!

これでプラグインのセットアップは完了ですが,AWS CLI のローカルクレデンシャルを以下のように消して AWS CLI を実行してみます.

$cat ~/.aws/credentials
(出力なし)

$cat ~/.aws/config
(出力なし)                                                                                                                                                              

AWS CLI コマンドを実行してみます.登録したクレデンシャル情報が表示されたので,意図通りの動作をしていました.

aws sts get-caller-identity
2023/05/07 17:39:45 Loading config file /Users/taddy/.aws/config
2023/05/07 17:39:45 Parsing config file /Users/taddy/.aws/config
2023/05/07 17:39:45 Profile 'default' missing in config file
{
    "UserId": "12345678912345678123456789",
    "Account": "123456789124",
    "Arn": "arn:aws:iam::123456789124:user/taddy"
}

参考情報

developer.1password.com

まとめ

1Password CLIAWS CLI を実行でき,ローカルからクレデンシャルをなくすことができました.これで万が一 PC が盗まれたりしてローカルにアクセスされたとしてもすぐに AWS にアクセスが容易にできなくなりセキュリティが向上できました.