
aws-vault と 1Password で MacOS の AWS 認証情報を管理する
はじめに
こんにちは、Kanaru です。
AWS 上のリソースを参照・操作する権限の発行方法は多く存在しますが、中でも IAM ユーザーに対してアクセスキーを発行する方法は、クレデンシャルの管理に注意が必要です。本記事では、aws-vault を使用してアクセスキーをローカル環境でセキュアに管理する方法を紹介します。
この記事で紹介しないこと
AWS の認証情報を管理する方法は、アクセスキー以外にも多くの選択肢が存在します。本記事ではアクセスキーを使用する方法にフォーカスしますが、これがすべての環境に適した方法ではないことに注意してください。
また、1Password と AWS の連携は、本記事で紹介する aws-vault を使用する方法以外に、1Password 公式から Shell Plugin という形でも提供されています。こちらについては別の情報を参照してください。
対象読者
- aws-cli や cdk の認証をアクセスキーで行いたい人
- aws-vault の管理を 1Password で行いたい人
前提条件
以下の条件で検証しています。これらのソフトウェアはすでにインストールされている前提とします。
- MacOS Tahoe 26.4.1 (Apple M5)
- 1Password for Mac 8.12.12
- aws-cli/2.34.45 Python/3.14.4 Darwin/25.4.0 exe/arm64
- aws-vault 7.10.7-Homebrew
- (1Password CLI 2.34.0)
概要
今回使用するツールの関係は次のようになっています。

認証の流れ
IAM ユーザーの認証は2段階です。
1段階目のアクセスキーによる認証では aws-vault がデバイス上に保存されている暗号化された認証情報を参照します。1Password には認証情報の復号鍵が保存されているので、aws-vault がそれを 1Password SDKs 経由で参照して認証情報を得ます。
2段階目の MFA では、1Password に保存されている TOTP を 1Password CLI 経由で参照して認証します。
アクセスキーの発行
AWS コンソールの IAM > IAM ユーザー > { ユーザー名 } の画面右上のボタンからアクセスキーを作成します。ここで表示されるアクセスキー ID とシークレットアクセスキーをメモします。.csv ファイルをダウンロード すると便利です。シークレットアクセスキーはこの画面を離れると二度と表示されないので注意してください。

1Password の設定
CLI と SDKs の連携
1Password の 設定 > 開発者タブ から、以下の設定を有効化してください。
- 1Password CLI と連携
- 1Password SDKs と連携

アカウント ID と保管庫 ID の確認
1Password のデスクトップ画面から、以下の2項目を確認し、メモします。
- アカウント ID
- デスクトップ左上のアカウントメニューのタイトル
- 保管庫 ID
- 復号鍵を保存したい保管庫を右クリック >
Copy Vault UUIDをクリックしてクリップボードにコピーされる値
- 復号鍵を保存したい保管庫を右クリック >
AWS ログイン情報の設定
IAM ユーザーとして AWS にログインするための情報を 1Password に登録しておきます。また、MFA を TOTP で設定し、こちらも 1Password に登録しておきましょう。MFA の情報はこの後使用します。また、1Password 上のログイン情報の名前もメモしておきましょう。
aws-vault の設定
インストール
aws-vault は AWS に特化したオープンソースの認証情報管理ツールです。
今回は Homebrew でインストールしました。
brew install aws-vault
認証情報の設定
インストールが完了したら、aws-vault に AWS の認証情報を設定していきます。
aws-vault --op-vault-id {保管庫ID} --op-desktop-account-id {アカウントID} --backend op-desktop add {認証情報の名前}
{保管庫ID} と {アカウントID} は アカウント ID と保管庫 ID の確認 でメモした値を使用します。{認証情報の名前} には、任意の名前を使用して構いません。
また、--op-vault-id オプションと --op-desktop-account-id オプションはそれぞれ 対応する環境変数 を設定することで省略できます。
その後、プロンプトで認証情報を聞かれるので、以下の例を参考に答えていきます。
Enter Access Key ID: AKIAIOSFODNN7EXAMPLE
Enter Secret Access Key: ****************************************
Enter MFA Device ARN (If MFA is not enabled, leave this blank): arn:aws:iam::<アカウントID>:mfa/<ロール名>
aws-vault: error: Specified keyring backend not available, try --help
--op-vault-id オプション、もしくは AWS_VAULT_OP_VAULT_ID 環境変数が設定されているか確認してください。
aws-vault: error: add: Unable to create a 1Password Desktop client
--op-desktop-account-id オプション、もしくは AWS_VAULT_OP_DESKTOP_ACCOUNT_ID 環境変数が設定されているか確認してください。
AWS プロファイルの設定
~/.aws/config ファイルを見ると、プロファイルが設定されていることがわかると思います。
[profile <プロファイル名>]
mfa_serial=arn:aws:iam::<アカウントID>:mfa/<ロール名>
これを、以下のように編集します。
[profile <プロファイル名>-vault]
+ region=ap-northeast-1
mfa_serial=arn:aws:iam::<アカウントID>:mfa/<ロール名>
+ mfa_process=op item get {ログイン情報の名前} --otp
+ [profile <プロファイル名>]
+ credential_process=aws-vault --op-vault-id {保管庫ID} --op-desktop-account-id {アカウントID} --backend op-desktop --prompt terminal export <プロファイル名>-vault --duration 12h --format=json
{ログイン情報の名前} には AWS ログイン情報の設定 でメモしたログイン情報の名前を入れます。
ここで、スイッチロールによって複数のロールを扱いたい場合は、次のように設定します。
[profile <プロファイル名>-vault]
region=ap-northeast-1
mfa_serial=arn:aws:iam::<アカウントID>:mfa/<ロール名>
mfa_process=op item get {ログイン情報の名前} --otp
+ role_arn=arn:aws:iam::<アカウントID>:role/<ロール名>
[profile <プロファイル名>]
credential_process=aws-vault --op-vault-id {保管庫ID} --op-desktop-account-id {アカウントID} --backend op-desktop --prompt terminal export <プロファイル名>-vault --duration 12h --format=json
動作確認
aws-cli
実際に正しく認証できるか、次のコマンドで確認します。
aws --profile <プロファイル名> s3 ls
バケットの一覧が表示されれば成功です。この時、何回か 1Password のプロンプトが表示される場合があります。
また、AWS_DEFAULT_PROFILE や AWS_PROFILE 環境変数にプロファイル名を設定しておけば、--profile オプションは省略可能です。
CDK
今回は AWS 公式の Genrative AI Use Cases (GenU) を使用して CDK の動作確認をします。
以下のコマンドを実行して CDK をデプロイします。
git clone https://github.com/aws-samples/generative-ai-use-cases.git
npm ci
npx -w packages/cdk cdk bootstrap
npm run cdk:deploy
おわりに
以上で設定完了となります。使用したメモなどが残っていると、このようなセキュアな設定が無駄になってしまうので、動作確認の後に削除しましょう。








