概要
2025 年 11 月 19 日のアップデートにより、AWS CLI の認証がブラウザベースで認証できるようになりました。
これにより、長期のアクセスキーID/シークレットアクセスキーの管理が不要となります。
注意点(必須ポリシー)
aws login を実施するにあたり、対象 IAM ユーザーを指定して認証しますが、その IAM ユーザーには以下のポリシーが付与されている必要があります。
以下のポリシーがない場合、ブラウザでの認証が失敗しますので注意してください。
仮にユーザーにMFAが設定されていても、以下のポリシーが付与されていれば問題なく MFA 認証も通ります。
以下のポリシーは AWS 管理ポリシーである SignInLocalDevelopmentAccess として用意されているので、そちらをアタッチすれば大丈夫です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"signin:AuthorizeOAuth2Access",
"signin:CreateOAuth2Token"
],
"Resource": "arn:aws:signin:*:*:oauth2/public-client/*"
}
]
}
実践
試していきます。
aws login には AWS CLI version 2.32.0 もしくはそれ以上が必要です。
そのため、事前に最新版のインストールもしくはアップデートをしてください。
まず以下コマンドで認証を実行します。
--profile オプションは任意で名前も自由です。指定しない場合は [default] プロファイルとなります。
$ aws login --profile test
実行するとデフォルトリージョンを聞かれますので、指定します。
私は ap-northeast-1 としました。
$ aws login --profile test
No AWS region has been configured. The AWS region is the geographic location of your AWS resources.
If you have used AWS before and already have resources in your account, specify which region they were created in. If you have not created resources in your account before, you can pick the region closest to you: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html.
You are able to change the region in the CLI at any time with the command "aws configure set region NEW_REGION".
+ AWS Region [us-east-1]:ap-northeast-1
デフォルトリージョンを入力し Enter を押すと、デフォルトブラウザが開きます。
Attempting to open your default browser.
If the browser does not open, open the following URL:
https://ap-northeast-1.signin.aws.amazon.com/v1/authorize?response_type=code&client_id=arn%3Aaws%3Asignin%3A%3A%3Adevtools%2Fsame-device&state=f822044b-22f1-46c2-9e25-d89a7cc5c348&code_challenge_method=SHA-256&scope=openid&redirect_uri=http%3A%2F%2F127.0.0.1%3A50101%2Foauth%2Fcallback&code_challenge=4ExgeN4efIqNFK-HsLL9TRkHdMJ0bmOkubTt2G42p54
ログイン済みの認証情報がブラウザにあれば、そちらを選択することで選択したユーザー情報を利用することが可能です。( OR より上のブロックのことです)
別のユーザー情報で認証したい場合は、 Sign into new session をクリックして、通常のマネジメントコンソールログインを実施します。

ブラウザに以下の表示がされれば認証成功です。ブラウザは閉じて大丈夫です。

ターミナルには以下の表示がされます。
Updated profile test to use arn:aws:iam::123456789012:user/hogehoge credentials.
Use "--profile test" to use the new credentials, such as "aws sts get-caller-identity --profile test"
ちなみに ~/.aws/config ファイルには以下の追記がされます。
[profile test]
login_session = arn:aws:iam::123456789012:user/hogehoge
region = ap-northeast-1
アクセスキーID/シークレットアクセスキーは登録していないので、~/.aws/credentials ファイルには何も追記されていませんでした。
代わりに ~/.aws/login/cache フォルダ配下にアクセストークンやセッショントークンが記載されたファイルが生成されていました。
加えて ~/.aws/cli/cache フォルダ配下に session.db ファイルが生成されていました。
以上で設定は完了です。
おわりに
今回は AWS CLI でブラウザベース認証が実装されたので試してみました。
長期のアクセスキーID/シークレットアクセスキーの管理が不要となるのでよりセキュアになりますね。
設定も簡単ですし、積極的に使っていこうと思います。
🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。
番外編
認証後、コマンド実行時に [SSL: CERTIFICATE_VERIFY_FAILED] がでたら
認証後、コマンド実行時に証明書エラーがでる。
$ aws sts get-caller-identity --profile test
SSL validation failed for https://sts.ap-northeast-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1032)
これは Zscaler 等の SaaS型プロキシを導入している環境などで発生する可能性があります。
詳細や対応方法は以下の記事にまとめていますので、参考にしてみてください。
スイッチロールするには
スイッチロールするには以下 2 通りあります。
- 事前にブラウザでスイッチロールしておき、
aws login実行時に指定する -
~/.aws/configファイルにスイッチロール用プロファイルを追記する
1 の場合、割愛しますが事前にブラウザからマネジメントコンソールにログインし、スイッチロールしておきます。
その後、aws login コマンドを実行し、立ち上がったブラウザから該当ユーザーを選択します。

この場合の ~/.aws/config ファイルには以下のような記載となります。
[profile switched]
login_session = arn:aws:sts::123456789012:assumed-role/switch-role-name/iam-user-name
region = ap-northeast-1
2 の場合、ユーザーで認証した後、~/.aws/config ファイルにスイッチロール用のプロファイルを追記します。
[profile test]
login_session = arn:aws:iam::123456789012:user/hogehoge
region = ap-northeast-1
+ [profile switch-role-1]
+ source_profile = test
+ role_arn = arn:aws:iam::123456789012:role/switch-role-name
参考資料
リファレンス
- Installing or updating to the latest version of the AWS CLI - AWS Command Line Interface User Guide for Version 2
- AWS CLI Command Reference
