0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「aws login」でアクセスキーなしのAWS CLI認証に移行する

0
Posted at

はじめに

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 を検索してアタッチします。

image.png

このポリシーが付与する権限は signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Token の2つだけで、最小限の権限になっています。

3. 既存のアクセスキー設定を削除

~/.aws/credentials にアクセスキーが残っていると、aws login の認証情報よりも優先されてしまいます。移行する場合は、該当プロファイルのアクセスキー設定を削除しておきます。

vi ~/.aws/credentials

aws_access_key_idaws_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のサインイン画面が表示されます。

image (2).png

「Continue with Root or IAM user」をクリックして、普段のマネジメントコンソールと同じようにアカウントID・ユーザー名・パスワードを入力してサインインします。

サインインが完了すると、認証コード(verification code)の確認画面が表示されます。

image (4).png

これは「本当にあなた自身が 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時間で失効します。「ローカルにアクセスキーを置きっぱなしにしている」という方は、この機会に移行を検討してみてください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?