aws sts get-caller-identity で現在のAWS認証情報を確認する
AWS CLI で現在どのAWSアカウント・IAMユーザー・IAMロールとして操作しているのかを aws sts get-caller-identity で確認する方法を整理する
今日やったこと
- AWS CLI で現在使用している認証情報を確認する方法を整理した
aws sts get-caller-identityを使うと、現在どのAWSアカウント・IAMユーザー・IAMロールとして操作しているのか確認できることを知った--profileを指定して、特定のプロファイルで認証情報を確認する方法を確認した- AWS CLI で作業する前に、自分がどの認証情報を使っているのか確認することが大事だと分かった
aws sts get-caller-identity \
--profile reotech-dev
実行すると、以下のような情報が表示される。
{
"UserId": "AIDAXXXXXXXXXXXXXXXXX",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/example-user"
}
学んだこと
aws sts get-caller-identity とは
aws sts get-caller-identity は、現在のAWS CLIがどの認証情報を使ってAWS APIを呼び出しているのか確認するためのコマンド。
AWS CLIで作業するときに、
- どのAWSアカウントを操作しているのか
- どのIAMユーザーとして操作しているのか
- どのIAMロールとして操作しているのか
- 想定したprofileが使われているのか
を確認できる。
特に複数のAWSアカウントやprofileを使い分けている場合は、作業前に確認しておくと事故を防ぎやすい。
基本コマンド
default profile の認証情報を確認する場合は、以下のように実行する。
aws sts get-caller-identity
特定のprofileを指定する場合は、--profile を付ける。
aws sts get-caller-identity \
--profile reotech-dev
AWS CLIでは、--profile を指定することで、default とは別の認証情報や設定を使ってコマンドを実行できる。
出力される項目
aws sts get-caller-identity の出力には、主に以下の3つが含まれる。
{
"UserId": "AIDAXXXXXXXXXXXXXXXXX",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/example-user"
}
UserId
AWS内部で使われる識別子。
IAMユーザーやIAMロールなど、現在の認証主体を識別するためのID。
普段の作業では、UserId よりも Account や Arn を見ることの方が多そう。
Account
現在操作しているAWSアカウントのID。
"Account": "123456789012"
複数のAWSアカウントを扱っている場合、この値を見れば、今どのAWSアカウントに対して操作しているのか確認できる。
CloudFormation や S3 などを操作する前に、意図したAWSアカウントになっているか確認しておくと安心。
Arn
現在の認証主体を表すARN。
"Arn": "arn:aws:iam::123456789012:user/example-user"
IAMユーザーで操作している場合は、以下のような形式になる。
arn:aws:iam::123456789012:user/example-user
IAMロールで操作している場合は、以下のような形式になる。
arn:aws:sts::123456789012:assumed-role/example-role/example-session
Arn を見ることで、IAMユーザーとして操作しているのか、IAMロールを引き受けて操作しているのかを確認できる。
aws login 後の確認にも使える
前回、AWS CLI の認証方法として aws login を使う方法を整理した。
aws login \
--profile reotech-dev \
--region ap-northeast-1 \
--remote
ログイン後に、以下のコマンドを実行することで、reotech-dev profile で正しく認証できているか確認できる。
aws sts get-caller-identity \
--profile reotech-dev
ログインできたかどうかだけでなく、実際にどのAWSアカウント・IAMユーザー・IAMロールとして操作しているのか確認できるのが便利。
作業前に確認するとよさそう
AWS CLIでは、コマンドによっては実際のAWSリソースを作成・変更・削除する。
たとえば、CloudFormation のスタックを操作する場合は、意図しないAWSアカウントやprofileで実行すると危険。
aws cloudformation list-stacks \
--profile reotech-dev \
--region ap-northeast-1
このような操作をする前に、まず以下を実行しておくと安全。
aws sts get-caller-identity \
--profile reotech-dev
AWS CLIで作業するときは、
まず aws sts get-caller-identity で現在の認証情報を確認する
という習慣をつけておくとよさそう。
次にやること
- AWS CLI の profile / config / credentials の関係を整理する
~/.aws/configと~/.aws/credentialsの違いを確認する--profileを指定したときに、どの設定ファイルが参照されるのか整理するaws loginとaws sso loginの違いを整理する