[アップデート] IAM ロール信頼ポリシーの編集エディタが刷新され IAM Access Analyzer によるポリシー検証と外部アクセスプレビューに対応しました

IAM ロール信頼ポリシーをより便利にいじくり回せるようになりました。いじくり回しましょう。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

IAM ロール信頼ポリシーのエディタがアップデートされ、IAM Access Analyzer と連携されました。

大まかに以下が変わっています。

  • 対話型のポリシーエディタに対応
  • ポリシーの検証に対応
  • ポリシーの保存前の外部アクセスのプレビューに対応

IAM ポリシー、S3 バケットポリシーなどで対応していた機能が IAM ロール信頼ポリシーにも対応しました。嬉しいですね。

IAM Access Analyzer のおさらい

サービスのリリース当時と比べ、IAM Aceess Analyzer でできることは増えています。整理したのが以下です。

# 機能 アナライザー リリース
1 リソースベースポリシーの分析 必要 2019年12月
2 リソースベースポリシーの事前分析(外部アクセスプレビュー) 必要 2021年3月
3 IAM ポリシーなどのポリシー検証 不要 2021年3月
4 CloudTrail イベントを基にした IAM ポリシーの生成 不要 2021年4月

今回のアップデートで AWS マネジメントコンソール上で IAM ロールの信頼ポリシーに対し#2,#3の機能が使えるようになりました。それぞれの機能がリリースされた当時の内容は以下です。

▼ #2 リソースベースポリシーの事前分析

▼ #3 IAM ポリシーなどのポリシー検証

IAM Access Analyzer の機能は「アナライザー」というコンポーネントを必要とするものとそうでないものに分かれています。今回は#2の機能も試したいのでアナライザーを作成しておきます。

ただ有効化するだけであれば以下を押下したのち、もうワンクリックするだけです。

IAM_Management_Console_Access_Analyzer

新しい信頼ポリシーエディタを試してみる

早速試してみます。ポリシーエディタは以下のいずれでも使用できますが、今回は前者でやってみます。

  • 新規の IAM ロール作成時
  • 既存の IAM ロールの編集時

新規作成の場合、信頼されたエンティティタイプとして「カスタム信頼ポリシー」を選択することで新しいポリシーエディタが使用できます。

IAM_Management_Console_trustpolicy_editor

対話型のポリシーエディタ

新しいポリシーエディタでは画面右側で以下を選択できます。

  1. STS アクションの追加
  2. プリンシパルの追加
  3. 条件の追加(オプション)

IAM_Management_Console_trust_policy_editor

プリンシパルを追加する場合の例は以下です。プリンシパルタイプを選択するとそれに応じた ARN のフォーマットが表示されるため、設定したい内容に置き換えて追加します。

IAM_Management_Console_trustpolicy_editor-4892046

入力した内容に応じてプリンシパル部に反映されました。同じように条件を追加することもできます。

IAM_Management_Console_turstpolicy_editor

ポリシーの検証

ポリシーエディタでは上記のように右ペインを利用しても直接エディタ上でも編集ができますが、その内容はほぼリアルタイムで検証されています。

構文誤りがあったりポリシーの内容に適切でない部分があった場合には画面下部に検証結果が表示されます。

IAM_Management_Console_trustpolicy_editor-4893162

ここで検証(チェック)してくれる観点は以下にまとまっています。

今回のアップデートによって信頼ポリシー用のチェック項目も追加されました。確認した範囲では以下が該当しそうです。

分類 項目 概要
Error Role trust policy syntax error notprincipal 信頼ポリシーでNotPrincipalを使用
Error Role trust policy unsupported wildcard in principal 信頼ポリシーでPrincipalにワイルドカードを指定
Error Role trust policy syntax error resource 信頼ポリシーでResourceもしくはNotResourceを使用
Error Invalid federated principal syntax in role trust policy 信頼ポリシーのPrincipalでフェデレーテッドプリンシパルの構文誤り
General Warning Policy size exceeds role trust policy quota 信頼ポリシーのサイズが上限を超えている
Suggestion Redundant principal in role trust policy 信頼ポリシーでroleとassumed-roleの両方を指定

上記の6項目はあくまで信頼ポリシー専用(他のポリシーには適用されない)の項目をまとめただけで、信頼ポリシーに適用されるチェック項目がこれだけしかないというわけではありません。

外部アクセスのプレビュー

画面下部の「外部アクセスをプレビュー」を押下することで、プレビューの実行画面が開きます。ここでプレビューを実行するためには「アナライザー」が作成済みである必要があります。

2022/10/4 現在の日本語のコンソールでは「バケット」「バケットポリシー」と表記されていますが、「IAMロール」「信頼ポリシー」と読み替えてください。

IAM_Management_Console_trustpolicyeditor

「プレビュー」を押下することで、この IAM ロールが「外部」からアクセス可能かどうかがチェックされます。

今回は信頼ポリシーのプリンシパルで別の AWS アカウントの IAM ロールを指定していたため、外部プリンシパルとして検出されました。 *1

IAM_Management_Console_trustpolicy_editor-4893725

ポリシーを保存する前に当該ロールへのアクセス可否を確認できるステップがあるのは嬉しいですね。

終わりに

IAM ロールの信頼ポリシーエディタが刷新され、IAM Access Analyzer と連携されたというアップデートでした。

特にポリシー構文を自動的にチェックしてくれるのは嬉しいですね。プリンシパルとして IAM ロールと IAM ロールセッションの両方を指定するのは冗長で後者は機能しない、というのは気にかけたことがなかったので、そういった部分を指摘してくれるのは助かります。

便利になったエディタを利用してより良い IAM ロールライフをお過ごしください。

以上、 チバユキ (@batchicchi) がお送りしました。

参考

脚注

  1. これまで説明を省いていましたが、アナライザーでは「信頼できるゾーン」として「自身の AWSアカウント」だけでなく「Organizations組織」も設定できます。今回は AWS アカウントを信頼ゾーンとしているので「外部」イコール「自身の AWS アカウント外」です。信頼ゾーンを Organizations 組織としていた場合、クロスアカウントだが「外部」でない、という状態になり得ます。