AWSの認証情報を平文で保存しないように、1Password CLIに移行してみた
こんにちは、クラウド事業本部 コンサルティング部の荒平(@eiraces)です。
様々な理由から、作業端末の ~/.aws/credentialにアクセスキーを保存している人もいるのではないでしょうか。
私も自身の検証環境などは少し雑な扱いになってしまっており、腰が重いタイプでした。
(注:お客さま環境のアクセスキーはそもそも発行しない方法を選択したり、慎重に扱っています。)
この度、認証情報を丸ごと1Password CLIに移行してみた ので、後の方が続けるように記しておきます。半ば社内ドキュメントです。
同様の記事は数本、既に出ておりますのでそちらも御覧ください。インストールなど手順が重複している部分があります。このエントリでは、作業にフォーカスしてお届けします。
やりたいこと
目的はローカルに平文で保存されている ~/.aws/credential の抹消です。

前提
本エントリの環境は以下で行います。
- OS: macOS 26.1(25B78)
- ターミナル: version 2.15, zsh
手順
1Password CLIのインストール
以下のドキュメントに沿ってインストールしましょう。筆者環境は homebrew なので、以下のコマンドで一発で入ります。
brew install 1password-cli
インストールしたら、op --versionコマンドでバージョンを確認します。
$ op --version
2.32.0
1Password アプリとの連携
1Password CLIから1Passwordの認証情報を取り出すために、1Passwordアプリ側で連携の設定をしておく必要があります。
[設定] - [開発者]に「1Password CLIと連携」があるため、これを有効にします。

また、もし必要であれば[セキュリティ]タブにて「Touch ID」を有効にしておきます。(任意)
デバイスの生体認証が可能になります。

1Passwordの認証情報が取れるかどうか以下のコマンドで確認します。
op vault list
初回は macOSの場合、ユーザーに許可を求めるウィザードが出ます。

OS側の「許可」を押すと、1Passwordのアクセスリクエストが表示されます。私はTouch IDを登録したので指紋認証で突破します。

私の場合、Vaultが3つあるのですが、いいですね。ちゃんとリストが表示されました。

ちなみに、そもそも1Passwordのアカウントが複数ある場合は、op signin コマンドを叩くとログインするアカウントを選択できるようです。
会社・個人でそれぞれお持ちの方は op signin を実施してください。
AWS認証情報を追加する
op plugin init aws コマンドにてアクセスキーを登録します。

対話式でアクセスキーの登録を進めるので、大体以下の通りにします。
| 設問 | 回答 |
|---|---|
| ? Locate your AWS Access Key: | Import into 1Password |
| ? Enter or paste in the value of the Access Key ID: | アクセスキーのID (AKIA....のもの) |
| ? Enter or paste in the value of the Secret Access Key: | アクセスキーのシークレット |
| ? Enter a name to save it in 1Password | 1Passwordへの保存名 (分かれば何でもよい) |
| ? Select the vault to save the Access Key in: | 保存先のVault (共有Vaultにすると共有している人が見れる状態になるため注意) |
| ? Configure when the chosen credential(s) will be used to authenticate: | Prompt me for each new terminal session (新しいターミナルごとに認証する) |
最後の設問について、PCのグローバルデフォルトにするというオプションもあるのですが、これはセキュリティ面から避けたほうがよいと思います。
登録が終わると、1Password AppでもAPI認証情報タブで確認ができるようになります。
もしアクセスキーの中身をローテーションしたいときなどはここからでも修正できます。

1Password CLIのプラグインを読み込むようにする
お使いのターミナルのランコマンドファイル(zshなら.zshrc、bashなら.bashrc)に以下の行を追加します。
# 1Password CLI
source /Users/<Username>/.config/op/plugins.sh
私の場合は source /Users/arahira.yuji/.config/op/plugins.sh といった感じです。
これを入れておくことで、alias aws="op plugin run -- aws" がターミナル起動時に毎回叩かれるので、実行するawsコマンドはすべて1Password CLIのShell Plugin経由になります。
動作確認
最後に、aws sts get-caller-identityで動作を確認します。
aws のエイリアスが通っていれば、1Passwordのリクエスト画面が表示されると思います。

追加したプロファイルを矢印で選択します。複数のプロファイルを設定した場合も、この画面で選択できます。

設定したアカウントで無事に接続できていることが確認できました。

この後は ~/.aws/credential を削除しても大丈夫です。さらば、平文アクセスキー。
おわりに
今回は手順に絞って簡素にまとめてみました。
詳細の挙動について知りたい方は、以下の記事をお読みください。
最近だと aws login も出ているので、ますますアクセスキーの取り扱いについては再考が必要そうですね。
このエントリが誰かの助けになれば幸いです。
それでは、クラウド事業本部 コンサルティング部の荒平がお送りしました!








