32
12

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への移行を考える

Last updated at Posted at 2025-11-20

はじめに

概要

従来IAMユーザでローカルからAWSリソースを操作したい場合、アクセスキーを発行し、端末に設定する必要がありました。アクセスキーは長期認証情報にあたり、漏洩した場合は大きな被害につながる可能性があるため慎重に管理する必要がありました。

そんな中発表されたのが、AWS CLIのaws loginサブコマンドです。

端末でaws loginコマンドを打つと、マネジメントコンソールの認証情報(またはフェデレーション認証情報)を用いてブラウザベースで認証が行われます。IAMユーザはローカルにアクセスキーを保持することも、発行することもなくAWSリソースを操作することができるようになりました。

最初からブラウザ認証に対応しているIAM IdC(旧AWS SSO)が使えない環境も少なからずあるので個人的には待望のアップデートです。

要件

利用にあたっての要件はAWS CLIユーザガイドに記載されています。

  • AWS CLIのv2.32.0以降がインストールされていること
  • IAMユーザ、rootユーザ、またはフェデレーテッドユーザでAWSマネジメントコンソールにサインインできること
    • rootユーザでも使えますが封印して使わないようにしましょう
  • IAMユーザ、IAMグループ、またはIAMロールに適切な権限が付与されていること
    • AWSのマネージドポリシーではSignInLocalDevelopmentAccessが必要です。中身は以下の通りで、AdministratorAccessには権限が含まれています。
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "signin:AuthorizeOAuth2Access",
                      "signin:CreateOAuth2Token"
                  ],
                  "Resource": "arn:aws:signin:*:*:oauth2/public-client/*"
              }
          ]
      }
      

触ってみる

1. AWS CLIのインストール

まず、AWS CLIのv2.32.0以降をインストールします。

AWS CLIのバージョンは以下のコマンドで確認できます。

C:\Users\Test>aws --version
aws-cli/2.32.1 Python/3.13.9 Windows/11 exe/AMD64

2. IAMユーザの作成

次にコンソールログイン可能なIAMユーザ(ここではawslogintest)を作成します。作成時にSignInLocalDevelopmentAccessマネージドポリシーをアタッチします。

(参考)マネジメントコンソールでの操作手順

「ユーザーの作成」をクリック

image.png

ユーザ名とパスワード、コンソールアクセス可能な旨を指定。「次へ」。

image.png

SignInLocalDevelopmentAccessマネージドポリシーを直接アタッチ。「次へ」。

image.png

「ユーザの作成」をクリック

image.png

3. aws loginコマンドの実行

それではaws loginコマンドを実行します。

C:\Users\Test>aws login --profile newprofile
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]:

--profileオプションで新しいプロファイルを指定しています。プロファイルを指定せずに実行すると、~/.aws/configに存在する既存のプロファイルに設定が追加されてしまうためです。
リージョンはデフォルトのus-east-1のままEnterを押しました。

すると以下のメッセージが表示されてブラウザが起動します。

Attempting to open your default browser.
If the browser does not open, open the following URL:

https://us-west-2.signin.aws.amazon.com/v1/authorize?response_type=code&client_id=arn%3Aaws%3Asignin%3A%3A%3Adevtools%2Fsame-device&state=f19489c4-2d43-4ba0-b2c0-6d8b61d09eb8&code_challenge_method=SHA-256&scope=openid&redirect_uri=http%3A%2F%2F127.0.0.1%3A65054%2Foauth%2Fcallback&code_challenge=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

4. ブラウザでの認証

IAMユーザでサインインするため「Continue with Root or IAM user」をクリックします。

image.png

マネジメントコンソールのログイン画面が表示されるので、必要情報を入力して「Sign in」します。

image.png

サインインに成功するとブラウザで以下の表示が出るのでタブを閉じます。

image.png

5. 認証の確認

aws sts get-caller-identityを実行して認証が成功しているか確認します。

Updated profile newprofile to use arn:aws:iam::XXXXXXXXXXXX:user/awslogintest credentials.
Use "--profile newprofile" to use the new credentials, such as "aws sts get-caller-identity --profile newprofile"

C:\Users\Test>aws sts get-caller-identity --profile newprofile
{
    "UserId": "AIDAYAXGMIXPA7RJ6XXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/awslogintest"
}

この際、~/.aws/configには以下のプロファイルが追加されています。

[profile newprofile]
login_session = arn:aws:iam::XXXXXXXXXXXX:user/awslogintest
region = us-east-1

さらに.aws/login/cache/xxxxxxx.jsonに一時クレデンシャルの情報が保存されます。ドキュメントによれば一時クレデンシャルはデフォルトで15分ごとに自動更新されます(最大12時間まで変更可能)。

image.png

アクセスキーから移行する時の考慮点

1. 必要に応じてIAMユーザの権限を追加する

アクセスキーを利用する環境によっては、IAMユーザ自身にはパスワードとMFAの変更のみ許可し、スイッチロールで実際のリソース操作を行う構成もあります。

具体的には、.aws配下のファイルを以下のように構成し、コマンド実行時に--profileオプションで遷移先のIAMロールのプロファイルを指定する形です。

# ~/.aws/credentials
[assume-only]
aws_access_key_id = <IAMユーザのアクセスキーID>
aws_secret_access_key = <IAMユーザのシークレットアクセスキー>
# ~/.aws/config
[profile assume-only]
region = ap-northeast-1

[profile admin-role]
role_arn = arn:aws:iam::<アカウントID>:role/<スイッチ先ロール名>
mfa_serial = arn:aws:iam::<アカウントID>:mfa/<MFAデバイス名>
source_profile = assume-only
region = ap-northeast-1

aws loginコマンドを実行するにはSignInLocalDevelopmentAccess相当のアクセス権がIAMユーザに必要です。このような環境では、IAMユーザや所属するIAMグループへの新規権限追加が必要になります。(権限がない状態だと私の環境ではブラウザ認証で400の画面に遷移して使えませんでした。メッセージはもう少しわかりやすいといいな)

2. プロファイルを使うツールの対応状況を確認する

aws loginが生成したAWSのプロファイルには、まだ多くのツールが対応していません。例えばAWS CDKでも現時点では未対応です。

# プロファイルを確認
> cdk doctor
ℹ️ CDK Version: 2.1033.0 (build 1ec3310)
ℹ️ AWS environment variables:
  - AWS_PROFILE = newprofile
ℹ️ No CDK environment variables

# 実行すると怒られる
> cdk deploy
Unable to resolve AWS account to use. It must be either configured when you define your CDK 
Stack, or through the environment

プロファイルを参照するツールを使っている場合、各ツールの対応を待つ必要があります。逆にそのようなツールを使わないIAMユーザについては先に移行できます。


追記:2025/11/21
CDKについて@_watanyさんのツイートで以下を知りました。ありがとうございます🙏🙏🙏 

CDKは内部的に使用しているAWS SDK、具体的には@aws-sdk/credential-providersのバージョンが最新ではないからうまくいかない、という話でした。

まとめ

  • AWS CLIのaws loginコマンドによりアクセスキーの発行・管理が不要になり、漏洩リスクが軽減される
    • IAM IdCが使えない環境でも、セキュアなローカル開発環境を構築できます
  • アクセスキーからの移行にあたっては以下の点を考慮
    • IAMユーザにパスワード・MFAの変更権限しか付与していない場合はSignInLocalDevelopmentAccess相当権限追加が必要
    • AWSプロファイルを使う多くのツールは対応を待つ必要がある

何かのお役に立てば幸いです。

32
12
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
32
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?