IAM Access Analyzerでルールを作成し自動的にアーカイブする #reinvent

コンニチハ、千葉です。

IAM Access Analyzerにてアーカイブルールを作成して自動的にリソースをアーカイブしてみます。 IAM Access Analyzerの概要につきましては以下を参照ください。

[速報] AWS Identity and Access Management Access Analyzerがリリースされました! #reinvent

アーカイブルールとは、意図したアクセス設定になっているかのルールを定義し、それに従い自動的にアーカイブ済みにします。逆にアーカイブされずに残ったリソースは、意図していない定義とみなすことができます。手動でもアーカイブできますが、今回はアーカイブルールを作成して自動でアーカイブしてみます。

前提知識

  • スキャンの実施タイミング
    • 初期スキャン以降、24時間ごとに自動的にスキャンが実行される
    • IAMロールに適用されたポリシーの変更など、結果を解決するための変更を行った後、Access Analyzerはリソースを再度スキャン(スキャンは最大30分かかることがある)
    • 各リソースに対しオンデマンドでスキャンを実行できる(リソースごとに個別実行)
  • IAM Access Analyzerの結果の見方
    • アクティブ:ルールに適合していないリスト
    • アーカイブ:ルールに適合し自動的にアーカイブされる。また各リソースに対し、手動でのアーカイブも可能。
    • 解決済み:アクティブなリソースに対し変更を加え、定義したルールに合致したリソース。またはリソースを削除した場合。

やってみたパターン1

  1. 「IAMロール信頼関係で特定のAWSアカウントからアクセス許可されているもの」のアーカイブルールを作成する(これを正しい設定とする)
  2. 「特定のAWSアカウントからアクセス許可」に合致するようにIAMロールを作成する(アーカイブに表示されるはず)

で、動作を確認してみたいと思います。まずは、アーカイブルールを作成します。IAMの画面からアーカイブルールを選択します。

ルールはこんな感じで指定します。特定のAWSアカウントからの信頼関係が許可されている場合OKとします。

では、特定のAWSアカウントからアクセス許可するIAMロールを作成してみます。ロール作成時に、ルールに指定したアカウントIDと同じものを入力します。

それでは、結果をみてみましょう。アーカイブ済み一覧に作成したIAMロールが表示されました。ルールに適合したと判断されました。

やってみたパターン2

こちらのパターンは、ルールに適合しないIAMロールを作成し、後からルールに適合するように変更した場合です。どのような挙動になるかみてみます。

  1. 「IAMロール信頼関係で特定のAWSアカウントからアクセス許可されているもの」のアーカイブルールを作成する(これを正しい設定とする)
  2. 「特定のAWSアカウントからアクセス許可」に合致しないIAMロールを作成する(アクティブに表示される)
  3. 「特定のAWSアカウントからアクセス許可」に合致するようにIAMロールを作成する(解決済みに表示される)

1は先ほど作成したルールを利用するのでここでの手順は省略します。ルールで指定したAWSアカウントIDと別のIDを入力し、ルールに適合しないIAMロールを作成します。

結果を見ると、アクティブ側に表示されました。

次に信頼関係を修正し、ルールに合致するアカウントIDを入力し、結果を確認します。

解決済みに表示されました!

さいごに

アーカイブルールについて挙動を作成しました。検証する前はイメージが付きにくかったのですが、検証したことでサービスの利用方法が理解できました。ルールに合致しないリソースをEventBrigedで連携し通知も可能です。こちらと合わせて監視すると良さそうです。

IAM Access AnalyzerをAmazon EventBridgeで監視してAmazon SNSで通知する

参考

https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-archive-rules.html