AWS CLIに新機能が!
2025年11月18日、AWS CLIに新しい認証コマンド aws login が追加されました。 この機能は、従来のクレデンシャルファイル(アクセスキーとシークレットキーの保存)に代わる、より安全な認証手段を提供するものです。
本機能は AWS CLI v2.32.0 以降 で利用可能です。まだの方はアップデートをお勧めします。
aws login コマンドの導入メリット
従来の「クレデンシャルファイル」を使用する方法と比較して、aws login には主に2つのセキュリティおよび運用上のメリットがあります。
- アクセスキー漏洩リスクの排除
- キーのローテーション(交換)作業の自動化
アクセスキー漏洩リスクの排除
これが最大の導入意義です。
- 従来(クレデンシャルファイル):
aws_access_key_idとaws_secret_access_keyという永続的な認証情報がテキストファイルとしてPC内に保存されます。誤ってGitHub等へコミットしたり、マルウェア等で流出したりした場合、そのキーが無効化されるまで第三者による不正アクセスが可能となります - 新方式(
aws login): PCに保存されるのは「有効期限(標準12時間)付きの一時トークン」のみです。永続的なキーは保存されません。 万が一トークンが流出しても、短時間で期限切れとなるため被害を最小限に抑えられます。また、Gitへの誤コミットによる事故も構造的に発生しにくくなります
キーのローテーション(交換)作業の自動化
運用の手間という観点でのメリットです。
- 従来(クレデンシャルファイル): セキュリティのベストプラクティスに従う場合、定期的にアクセスキーを再発行し、
~/.aws/credentialsを書き換える作業(ローテーション)が必要です - 新方式(
aws login): ログインごとに新しい一時的な認証情報が発行されるため、ユーザーがキーの交換や管理を意識する必要がなくなります
利用手順
使い方はシンプルです。コマンドラインから以下を入力します。
aws login
コマンドを実行するとブラウザが起動し、認証プロセスが開始されます。
すでにブラウザでAWSコンソールにログインしている場合は、「アカウントID」を選択するだけで認証が完了します。
新しいセッションが必要な場合も、画面の指示に従ってAWSにサインインを行います。
認証が完了するとブラウザにSuccess画面が表示され、ターミナル側でもAWS CLIが利用可能になります。
一度認証を行えば、標準設定で12時間は再認証なしで利用可能です。
キャッシュファイルの構造を確認する
認証情報は ~/.aws/login/cache ディレクトリに保存されています。 JSON形式のため、jq コマンド等で内容を確認できます。
cat ~/.aws/login/cache/your-hash-file.json | jq .
ファイル構造は以下のようになっています。
主なフィールド:
- accessToken
- accessKeyId
- secretAccessKey
- sessionToken
- accountId
- expiresAt
- tokenType
- clientId
- refreshToken
- idToken
- dpopKey
access_keyとsecret_keyの確認
aws configure list コマンドで確認できる access_key と secret_key は、このキャッシュファイル内の accessKeyId と secretAccessKey が参照されています。
自動更新される情報
AWSへのアクセスを行う際、トークンの期限が近づくとキャッシュファイル内の以下の情報が自動的に更新されます。
- accessKeyId
- secretAccessKey
- sessionToken
- expiresAt
- refreshToken
これにより、ユーザーは裏側で行われるキーの更新を意識することなくCLIを利用できます。
再度aws configure listと入力すると、access_keyとsecret_keyが更新されていることが確認できます。

idToken と dpopKey の役割
キャッシュファイル内で更新されない idToken と dpopKey は、今回の認証方式の中核となる要素です。
これらは OAuth 2.0 Demonstration of Proof-of-Possession (DPoP) と呼ばれる仕組みを実装したもので、それぞれ「公開鍵」と「秘密鍵」のような役割を果たします。
DPoPによるセキュリティ強化:アクセストークンの「所有の証明」
DPoPは、アクセストークンを 「特定のクライアント(鍵の持ち主)」に紐付ける ことで、万が一トークンが盗まれても、第三者による不正利用を防ぐ仕組みです。
具体的なフローとセキュリティのポイントは以下の通りです。
-
紐付け(
Binding)- ログイン(トークン発行)の段階で、 「このトークンは、この公開鍵とセットでなければ無効である」 という制約をサーバー側で記録します
-
署名(
DPoP Proof)- APIリクエスト時、クライアントはアクセストークンだけでなく、自身の秘密鍵で生成した 「
DPoP Proof(署名)」 をHTTPヘッダーに付与して送信します - 役割: 「私がこのトークンの正当な持ち主(秘密鍵の所有者)である」という証明
- APIリクエスト時、クライアントはアクセストークンだけでなく、自身の秘密鍵で生成した 「
-
検証(
Verification)
サーバー側は、以下の2点を検証します。- トークンの有効性: トークン自体が正しいか
- 署名の正当性: 紐付けられた「公開鍵」で署名が検証できるか
役割: トークンの盗用(Replay Attack)の防止。
AWS CLIなどへの適用メリット
AWS CLIのようにインターネット経由(パブリックネットワーク)でAPIへアクセスする環境では、通信経路での盗聴やログからのトークン漏洩リスクがゼロではありません。
DPoPを導入することで:
仮に攻撃者が「アクセストークン」だけを盗み出したとしても、対となる「秘密鍵」を持っていなければAPIリクエストの署名を作成できないため、そのトークンは無価値となり、不正アクセスを阻止できます。
これにより、セキュリティ要件の高い操作も、AWS CLI等のツールから安全に行うことが可能になります。
まとめ
今回の aws login の導入により、AWS CLIの利用におけるセキュリティ基準が大きく向上しました。
- 永続的なアクセスキー管理からの脱却
- 誤操作によるキー流出リスクの低減
- DPoPによるトークン盗難対策の実装
設定も容易であるため、クレデンシャルファイル~/.aws/credentialsで運用をされている方は、アップデートと移行を検討することをお勧めします。




