AWS Vaultで発行した資格情報の有効期限を延長してみた
こんにちは。クラウド事業本部コンサルティング部の桑野です。
皆さんはAWS Vaultを使っていて、資格情報の有効時間が短いなと感じたことはありますか?私はあります。
今回はAWS Vaultで発行した資格情報の有効期限を伸ばす方法をお伝えします。
はじめに
私は普段、ローカルで開発する際はコンテナを多用しています。
過去に以下のような記事を投稿しています。
AWS Vaultとコンテナの組み合わせ方を解説していますので、コンテナを日常使いしている方で、クレデンシャルの管理をセキュアにしたいという方はぜひご覧ください!
前提
以下の条件で検証しています。
- OS:macOS Tahoe バージョン 26.2
- チップ:Apple M4
- Docker Client:28.4.0
- Docker Server:28.3.3
- Colima:0.8.4
- docker compose:2.39.3
- AWS Vault:7.2.0
きっかけ
冒頭ご紹介した記事では、特に何のオプションも指定せずに、以下のコマンドを実行していました。
aws-vault exec terraform-runner -- docker compose up -d
短時間(後述しますが、厳密には1時間以内)の作業であれば、このコマンドで実行すれば問題ないです。
しかし、私は用意したコンテナでTerraformやフロントエンド、バックエンドの開発を行うことが頻繁にあるので、1日中作業を続けることは多々あります。
すると、資格情報の有効期限が切れてしまいます。
一度作業の手を止めて、再度発行した資格情報をコンテナに渡すために、コンテナの再起動を余儀なくされます。
これが1日に何度も発生すると、集中を乱されたり、本来やりたかったことに充てる時間を削られたりと色々と弊害が出ます。
このようなことがきっかけで、本ブログを執筆しようということに思い至りました。
対処法
結論としては、以下のコマンドを実行すれば良いです。
aws-vault exec terraform-runner --duration=12h -- docker compose up -d
今まで私がご紹介していたコマンドに一つ--durationというオプションが追加されていますね。
もし、AssumeRoleを行う場合で、有効期限を1時間より長めに設定したいということがあれば、IAMロールの方で最大セッション時間(MaxSessionDuration)の設定値を変更する必要があります。

この件についてはAWS Vaultにも記載がありました。
READMEばかりを読んでいましたが、USAGE.mdに詳細が掲載されています。
AssumeRoleとGetSessionTokenの有効期限設定については以下のとおりです。
AssumeRole
- IAMロール作成時はデフォルトの
MaxSessionDurationは1時間に設定されている - セッション時間は1時間から最大12時間の範囲で設定が可能
- 実行時、
--durationで指定した値がロール側のMaxSessionDurationを超えると認証エラーとなる
GetSessionToken
- IAMロールと異なり、
MaxSessionDurationのような制限は設定できない - IAMユーザーの場合はデフォルト12時間で最大36時間まで指定が可能
- ルートユーザーの場合はデフォルト・最大ともに1時間となっており、15分から指定可能
なお、AWS VaultではAssumeRoleやGetSessionTokenの資格情報の有効期限はデフォルトでは1時間に制限されています。
--durationオプションはデフォルト設定を上書きするために必要です。
USAGE.md(以下のリンクの箇所)を確認すると、環境変数を設定することでも上書きは可能でした。
まとめ
いかがだったでしょうか?
ご紹介した例では資格情報の有効期限を12時間に設定していますが、1日で連続で使用し続ける平均的な時間を設定してあげると運用上よりセキュアになるかなと考えています。
AWS Vaultを使っており、資格情報の有効期限がすぐ切れて困っているという方のお役に立てれば幸いです。
最後までご覧いただきありがとうございました。






