LoginSignup
0
0

More than 1 year has passed since last update.

EC2内のawscli操作でAccessDeniedが発生する場合の対処法(IAMロールの自己信頼使用ケース)

Last updated at Posted at 2023-02-06

はじめに

昨年IAMロールが自分自身を引き受ける際のロール信頼ポリシーの評価方法にアップデートがあり、自己参照操作をさせたい場合は自身のIAMロールのARN値を信頼ポリシーに追加することが必須になりました。
https://aws.amazon.com/jp/blogs/security/announcing-an-update-to-iam-role-trust-policy-behavior/

自分が使っている環境では自己参照操作をしていないので関係ないと思ってたのですが、最近掲題の事象が発生して原因が上記の自己参照操作であることがわかったので、備忘もかねて修正方法を書いておきます。

環境

  • Windows Server 2019
  • aws-cli/2.9.21

EC2にはAdministratorAccessPolicyをつけたIAMロールをアタッチしておきます。
image.png

アタッチしたIAMロールの信頼ポリシーは以下の設定がされています。
image.png

awscliのconfigには以下のように設定しておきます。

[default]
region = ap-northeast-1
output = json

[profile test-bastion]
role_arn = arn:aws:iam::123456789123:role/test-bation
credential_source = Ec2InstanceMetadata

事象

configを設定してcliを実行すると以下のようにAccessDeniedが発生してアクセスがはじかれてしまいます。
image.png

エラー内容を見るとtest-bastionロールに対してAssumeRole操作する権限が足りていないことが原因になっています。
test-bastionロールはEC2にアタッチしたIAMロール名のことなので、暗黙的に自己参照操作が行われていることがわかります。

"arn:aws:sts::123456789123:assumed-role/test-bation/i-xxxxxxxxxxxxxxxxx" は実行が許可されていません。"リソース: arn:aws:iam::123456789123:role/test-bation" に対して "sts:AssumeRole" を実行する権限がありません。

対策1

対策として、configの内容を以下に変更することでAccessDeniedが発生しないようにすることができます。

[profile test-bastion]
region = ap-northeast-1
output = json

configに「Ec2InstanceMetadata」を指定していなくても、EC2にIAMロールがアタッチされていれば自動的にIAMロールの権限を使用してcli操作できます。
image.png

対策2

もう一つの対策として、IAMロールの信頼ポリシーに自己参照操作を許可する設定を追加することでもAccessDeniedを解消できます。
image.png

信頼ポリシー修正後にcliを実行すると正常に実行できることが確認できます。
image.png

おわりに

こちらのドキュメントにも記載がありますが、ロールの暗黙の自己信頼を使用していたユーザーは全体のごく少数らしいので、特別な理由がなければ対策1の方法で設定するのが良いのではないかと思います。

ほとんどのAWSのお客様は、この変更によって全く影響を受けません。すべてのロールのうち、ごく一部(約0.0001%)だけが関係するのです。

2022年6月30日以降に暗黙の自己信頼を使用していないロールはこの事象が起こるようになっているようですので、EC2からIAMロールを使用してcli操作を行う場合はご注意ください。

この記事がどなたかの参考になれば幸いです。

0
0
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
0