はじめに
AWS CLIを使うとき、~/.aws/credentials にアクセスキーを保存している方は多いと思います。手軽な方法ですが、長期間有効なクレデンシャルをローカルに平文で置いておくのはセキュリティ上のリスクがあります。
最近はAIコーディングツール(GitHub Copilot、Claude Code など)がローカルファイルを読み取る場面も増えており、意図せずアクセスキーがAIの入力に含まれてしまう可能性もゼロではありません。
2025年11月にリリースされた aws login コマンドを使えば、アクセスキーを一切発行せずに、ブラウザ認証だけでAWS CLIが使えるようになります。この記事では、実際にアクセスキー方式から aws login に移行した手順を紹介します。
aws login とは
aws login は、AWSマネジメントコンソールと同じ認証情報を使ってCLIにサインインする仕組みです。AWS CLI v2.32.0 から利用できます。
従来のアクセスキー方式と比較すると、以下のような違いがあります。
| 項目 | aws login | アクセスキー |
|---|---|---|
| 認証方法 | ブラウザ経由(コンソールと同じ) | アクセスキーID + シークレットキー |
| 有効期限 | 最大12時間(15分ごとに自動更新) | 無期限(手動ローテーションが必要) |
| ローカル保存 | キャッシュのみ(~/.aws/login/cache/) |
~/.aws/credentials に永続保存 |
| MFA | コンソール認証に組み込み済み | 別途設定が必要 |
| 流出リスク | 低い(短命で自動失効) | 高い(長期間有効) |
アクセスキーを発行・管理する必要がなく、万が一キャッシュが漏洩しても短時間で失効するため、ローカル開発の認証方法としてAWSが推奨している方式です。
前提条件
- AWS CLI v2.32.0 以上
- IAMユーザーに
SignInLocalDevelopmentAccessポリシーがアタッチされていること - 検証環境: WSL2 (Ubuntu 24)
手順
1. AWS CLIのバージョン確認
まず、AWS CLIのバージョンが v2.32.0 以上であることを確認します。
aws --version
# aws-cli/2.32.23
v2.32.0 未満の場合は、公式ドキュメントの手順でアップデートしてください。
2. IAMポリシーのアタッチ
aws login を利用するには、IAMユーザーに SignInLocalDevelopmentAccess マネージドポリシーをアタッチする必要があります。
IAMコンソールから、対象のユーザーを選択し、「許可を追加」から SignInLocalDevelopmentAccess を検索してアタッチします。
このポリシーが付与する権限は signin:AuthorizeOAuth2Access と signin:CreateOAuth2Token の2つだけで、最小限の権限になっています。
3. 既存のアクセスキー設定を削除
~/.aws/credentials にアクセスキーが残っていると、aws login の認証情報よりも優先されてしまいます。移行する場合は、該当プロファイルのアクセスキー設定を削除しておきます。
vi ~/.aws/credentials
aws_access_key_id と aws_secret_access_key の行を削除してください。削除後、ファイルの中身を確認しておくと安心です。
cat ~/.aws/credentials
なお、今後利用しないのであればIAMコンソール側でアクセスキー自体を無効化・削除しておくとより安全です。
4. aws login の実行
いよいよ aws login を実行します。
aws login
通常の Linux デスクトップ環境であれば、ここで自動的にブラウザが開きます。
しかし WSL 環境では、ブラウザを直接起動できないため以下のようなエラーが出ます。
Attempting to open the authorization page in your default browser.
gio: https://oidc.us-east-1.amazonaws.com/authorize?... : Operation not supported
1行目はAWS CLIが「このURLをブラウザで開きます」と案内しているメッセージで、2行目は Linux の gio open コマンドがブラウザを見つけられず失敗したエラーです。
WSL環境では --remote オプションを使ったほうがスムーズです。
aws login --remote
--remote を付けると、ブラウザの自動起動を試みず、URLがターミナルに表示されます。
このURLをブラウザに貼り付けて認証を進めます。
5. ブラウザで認証
ブラウザでURLを開くと、AWSのサインイン画面が表示されます。
「Continue with Root or IAM user」をクリックして、普段のマネジメントコンソールと同じようにアカウントID・ユーザー名・パスワードを入力してサインインします。
サインインが完了すると、認証コード(verification code)の確認画面が表示されます。
これは「本当にあなた自身が aws login を実行したのか」を確認するためのものです。
「Copy verification code」をクリックしてコードをコピーしてください。
Chromeでプロファイルごとにアカウントを使い分けている場合は、対象のAWSアカウントにログイン済みのプロファイルのブラウザにURLを貼り付けると、スムーズに進められます。
6. 認証コードの入力と確認
ターミナルに戻ると、認証コードの入力を求められています。
Enter the authorization code displayed in your browser:
ブラウザでコピーした認証コードを貼り付けて Enter を押せば、認証完了です。
正しく認証できたか aws sts get-caller-identity で確認します。
aws sts get-caller-identity
ユーザーのARNが表示されれば成功です。
7. キャッシュの確認(おまけ)
認証が完了すると、~/.aws/login/cache/ にキャッシュファイルが作成されます。
ls ~/.aws/login/cache
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.json
従来のアクセスキー方式では ~/.aws/credentials に長期間有効なキーが平文で保存されていましたが、aws login ではこのキャッシュに一時的な認証情報が保存されるだけです。セッションは最大12時間で失効し、その間も15分ごとに自動更新されます。
セッションが切れた場合は、再度 aws login を実行すれば再認証できます。明示的にログアウトしたい場合は以下のコマンドを使います。
# 現在のプロファイルからログアウト
aws logout
# 全プロファイルからログアウト
aws logout --all
まとめ
aws login を使えば、アクセスキーをローカルに保存せずにAWS CLIを利用できます。
やったことは以下の3つだけです。
- IAMユーザーに
SignInLocalDevelopmentAccessポリシーをアタッチ -
~/.aws/credentialsから既存のアクセスキーを削除 -
aws login --remoteでブラウザ認証
認証情報は一時的なキャッシュとして管理され、最大12時間で失効します。「ローカルにアクセスキーを置きっぱなしにしている」という方は、この機会に移行を検討してみてください。


