ENGINEERING ARTICLE
AWS CLIのaws loginを使ってアクセスキーなしでログインする方法
この記事は約7分で読めます
こんにちは、 @Manabu です。
AWS CLIやIaCツールをローカルPCから使うために、IAMユーザーのアクセスキーを発行している方は多いのではないでしょうか。
私もこれまで、AWS環境へのデプロイやサービスの操作にIAMユーザーのアクセスキーを使用していました。
サービスごとにIAMユーザーや権限を用意するのが面倒で、Administrator権限を持ったIAMユーザーのアクセスキーを使ってしまうこともあり、認証方法を見直すことにしました。
今回は、AWS CLIのaws loginを使い、長期間有効なアクセスキーをローカルへ保存せず、一時的な認証情報でAWSを操作する方法について紹介します。
この記事は、以下のような方におすすめです。
こんな方におすすめ
- AWS CLIのためにIAMユーザーのアクセスキーを発行している
- ローカルPCで長期アクセスキーを管理したくない
- ブラウザで認証して一時的にAWS CLIを使いたい
aws loginとは
aws loginは、AWSマネジメントコンソールの認証情報を使い、AWS CLIやSDKで利用できる一時的な認証情報を取得するコマンドです。
コマンドを実行するとブラウザが開き、AWSへサインインした後、選択したコンソールセッションに対応する認証情報がAWS CLIへ設定されます。
従来のアクセスキーとの主な違いは以下です。
| 項目 | IAMユーザーのアクセスキー | aws login |
|---|---|---|
| 認証方法 | アクセスキーIDとシークレットアクセスキー | ブラウザ上のコンソール認証 |
| 有効期間 | 削除・無効化するまで有効 | セッション期間内のみ有効 |
| ローカルでの管理 | 長期認証情報を保存 | 一時認証情報と更新用情報をキャッシュ |
| MFA | 別途仕組みが必要 | コンソールのサインイン方法を利用 |
| 終了方法 | アクセスキーを無効化・削除 | aws logout |
AWS CLIは一時認証情報を必要に応じて15分ごとに自動更新します。ログインセッションは、IAMプリンシパルに設定されたセッション時間の範囲で最大12時間利用できます。
aws loginを使うメリット
一番のメリットは、長期間有効なアクセスキーをローカルPCへ保存しなくてよいことです。
アクセスキーを設定する場合、通常は~/.aws/credentialsなどへ認証情報を保存します。誤ってGitへ登録したり、PCから流出したりすると、無効化するまで悪用される可能性があります。
aws loginで取得する認証情報には有効期限があるため、認証情報が外部へ漏れた場合に利用され続ける時間を短くできます。
また、ブラウザから普段利用しているコンソールの認証方法でサインインできるため、MFAを設定しているIAMユーザーやフェデレーション環境でも利用できます。
aws loginを使っても権限は小さくならない
注意
aws loginは認証情報を一時的にしますが、AWSサービスへ対する権限を小さくする機能ではありません。
Administrator権限を持つIAMユーザーでログインすれば、発行される一時認証情報も、そのIAMユーザーに許可された操作を実行できます。
そのため、aws loginへ変更した後も、次の対応は必要です。
- IAMユーザーやロールへ必要最小限の権限を設定する
- MFAを有効にする
- rootユーザーを普段の開発作業に使わない
- 作業内容に応じてプロファイルやロールを分ける
aws loginは、Administrator権限を安全に使うための機能ではなく、長期アクセスキーへの依存を減らすための機能として考えるのがよいと思います。
事前準備
AWS CLIのバージョンを確認する
aws loginを利用するには、AWS CLIバージョン2.32.0以降が必要です。
次のコマンドで確認します。
aws --version
バージョンが古い場合は、AWS CLIを更新してください。
IAMユーザーへ権限を追加する
IAMユーザーやIAMロールでaws loginを利用するには、次のAWS管理ポリシーを設定します。
SignInLocalDevelopmentAccess
このポリシーは、ローカル開発用のログイン処理を許可するものです。S3やCloudFormationなど、実際に操作するAWSサービスの権限は別途必要です。
IAM Identity Centerを利用している場合は、aws loginではなくaws sso loginを利用します。
aws loginを実行する
デフォルトプロファイルでログインする場合は、次のコマンドを実行します。
aws login
名前付きプロファイルを作成する場合は、--profileを指定します。
aws login --profile my-dev-profile
初回実行時など、リージョンが設定されていない場合は、利用するリージョンを入力します。
AWS Region [us-east-1]: ap-northeast-1
コマンドを実行すると、デフォルトブラウザが自動的に開きます。

すでにAWSマネジメントコンソールへログインしている場合は、表示されたアクティブセッションを選択します。
ログインしていない場合は、IAMユーザーなど普段使用している方法でAWSへサインインします。
認証が完了したら、ブラウザに完了画面が表示され、ターミナルへ戻ります。

ログインした認証先を確認する
ログイン後、次のコマンドで使用中の認証情報を確認します。
aws sts get-caller-identity --profile my-dev-profile
結果のAccountとArnを確認します。
{
"UserId": "EXAMPLEUSERID",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/example-role/example-session"
}
複数のAWSアカウントを利用している場合は、デプロイ前にこのコマンドを実行すると、誤ったアカウントへの操作を防ぎやすくなります。
AWS CLIでプロファイルを使用する
ログインしたプロファイルは、通常のAWS CLIコマンドから利用できます。
aws s3 ls --profile my-dev-profile
CloudFormationをデプロイする場合も、同じように指定します。
aws cloudformation deploy \
--profile my-dev-profile \
--region ap-northeast-1 \
--stack-name example-stack \
--template-file template.yml
環境変数でプロファイルを指定することもできます。
export AWS_PROFILE=my-dev-profile
aws sts get-caller-identity
認証情報の保存場所
aws loginで取得した一時認証情報と更新に必要な情報は、デフォルトで次のディレクトリへキャッシュされます。
macOS・Linux:
~/.aws/login/cache
Windows:
%USERPROFILE%\.aws\login\cache
保存場所はAWS_LOGIN_CACHE_DIRECTORY環境変数で変更できます。
一時認証情報であっても、キャッシュファイルを共有したり、Gitへ登録したりしないようにしてください。
ブラウザを開けない環境でログインする
SSH接続先など、AWS CLIを実行する端末でブラウザを開けない場合は、--remoteを利用できます。
aws login --remote --profile my-dev-profile
表示されたURLをブラウザがある端末で開き、認証後に表示されるコードをAWS CLIへ入力します。
作業終了後にログアウトする
作業が終了したら、次のコマンドでキャッシュされた認証情報を削除します。
aws logout --profile my-dev-profile
全てのログインプロファイルからログアウトする場合は、--allを指定します。
aws logout --all
ログアウト後は、再びaws loginを実行するまで、対象プロファイルでAWS CLIを実行できません。
まとめ
今回は、AWS CLIのaws loginを使い、長期アクセスキーを保存せずにAWSへログインする方法を紹介しました。
ブラウザで認証して一時的な認証情報を利用することで、IAMユーザーのアクセスキーをローカルで管理する必要がなくなります。
ただし、aws loginを利用してもIAMの権限は変わりません。最小権限、MFA、利用アカウントの確認と組み合わせて使用することが大切です。
アクセスキーを長期間使っている方は、認証方法を見直す選択肢として検討してみてください。
参考資料
REFERENCEコンソール認証情報を使用して AWS ローカル開発にログインする - AWS Command Line Interfacedocs.aws.amazon.com↗
REFERENCElogin — AWS CLI 2.39.2 Command Referencedocs.aws.amazon.com↗
REFERENCESimplified developer access to AWS with ‘aws login’ | Amazon Web Servicesaws.amazon.com↗