はじめに

今回は、AWS IAM Access AnalyzerのAWS Organizations連携機能について紹介します。IAM Access AnalyzerはAWSアカウント内の様々なAWSリソースのアクセス許可を分析することで、意図しないパブリック設定およびアカウント/組織外に対する共有設定を検出することができます。

本稿では、IAM Access AnalyzerのAWS Organizations連携機能の具体的な設定方法や利用にあたっての注意点を紹介していきます。

AWS IAM Access AnalyzerのOrganizations連携機能の利用方法

IAM Access Analyzerは、委任管理者をサポートしています。そのため、AWS Organizationsと連携する他の多くのサービスと同様に、委任管理者として別のアカウントを指定していきます。下記イメージ図の通り、管理アカウント以外を委任管理者として設定します。

管理アカウントの作業

まずは管理アカウントで委任管理者の設定を行います。

(1)IAMの画面へ遷移し、サイドメニューの「アナライザーの設定」リンクをクリックします。

(2)「委任された管理者を追加」ボタンをクリックします。

(3)委任された管理者として、別のAWSアカウントIDを入力し、「変更を保存」ボタンをクリックします。

(4)処理が成功することを画面上で確認します。

これで管理アカウントでの作業は完了です。

委任管理者アカウントでの動作確認

それでは委任管理者アカウントで動作確認をしていきます。

(1)委任管理者アカウントにログインし、IAMの画面へ遷移し、サイドメニューの「アナライザーの設定」リンクをクリックします。ログインしたアカウントが委任された管理者であることを確認します。

(2)サイドメニューの「アクセスアナライザー」リンクをクリックし、「アナライザーを作成」ボタンをクリックします。

(3)作成できるアナライザーは下記3種類です。まずはコストのかからない外部アクセスアナライザーを作成してみます。

アナライザーの種類 分析内容 コスト
外部アクセスアナライザー パブリックアクセス可能なAWSリソースおよびクロスアカウントアクセスの検出 無料
内部アクセスアナライザー 指定したAWSリソースにアクセス可能なIAMロールおよびIAMユーザーの検出 指定したAWSリソースごとに$9/月
未使用アクセスアナライザー 利用されていないIAMロールおよびIAMユーザーの検出 分析対象のIAMロールおよびIAMユーザーごとに$0.20/月

検出結果のタイプとして「Resource analysis - External access」を選択し、信頼ゾーンとして「現在の組織」を選択します。これにより、組織内アカウント間のアクセスは意図したものとして扱われ、組織外のエンティティからのアクセスのみが検出対象となります。そして「アナライザーを作成」ボタンをクリックします。

(4)筆者の環境では5分ほど待つと、徐々に検出結果が表示され始めました。

(5)検出結果IDをクリックすると、下記画像のように詳細を確認できます。下記画像では該当のIAMロールは自組織外のAWSアカウントからのスイッチロールが可能であることが検出されています。

(6)それでは続いて内部アクセスアナライザーを作成してみます。再度「アナライザーを作成」ボタンをクリックし、検出結果のタイプとして「Resource analysis - Internal access」を選択します。信頼ゾーンとして「Entire organization」を選択します。これにより、指定したリソースに対して、組織内のどのアカウントのIAMプリンシパル(IAMロールやIAMユーザー)がアクセスできるかを分析します。

分析対象リソースは「Add resources by pasting in resource ARN」を選択します。前述の通り、1リソースごとに9ドル/月の費用が発生するため、コストを抑えるために分析対象を限定することをお勧めします。今回は例として、筆者の環境に存在するS3バケットのARNを1つ指定してみます。そして、最後に「アナライザーを作成」ボタンをクリックします。

(7)数分待機すると、以下の画像のように検出結果が表示されました。今回選択したS3バケットにアクセス可能なIAMロールおよびIAMユーザーは同一AWSアカウント内にしか存在しないことが確認できました。例えば、個人情報や機密情報といった重要なデータをS3バケットなどのデータストアに保存している際にアクセス可能なIAMロールおよびIAMユーザーを厳密に管理したいことがあると思います。そのような場合、設計通りのアクセス設定となっているかを容易に確認することができます。

(8)最後に未使用アクセスアナライザーを作成してみます。再度「アナライザーを作成」ボタンをクリックし、検出結果のタイプとして「Principal analysis - Unused access」を選択します。追跡期間はデフォルトの90日のままとしておきます。選択されたアカウントとして「現在の組織」を選択します。これによって、Organizations配下のすべてのAWSアカウント内のIAMロールおよびIAMユーザーが分析対象となります。

ただし前述の通り、分析対象となったIAMロールおよびIAMユーザーの数だけ課金がされてしまいますので、今回は除外設定を行い、委任管理者アカウントのみを対象とします。そして、最後に「アナライザーを作成」ボタンをクリックします。

(9)筆者の環境では未使用アクセスアナライザーを作成してすぐに検出結果が表示されました。未使用アクセスアナライザーは2種類の分析を行います。1つ目は「未使用のプリンシパル」で、分析期間内に一度も利用されていない未使用のロール、IAMユーザーの未使用のアクセスキー、IAMユーザーの未使用のパスワードを検出します。2つ目は「未使用の許可」で、分析期間内に一度も利用されていないIAMアクションアクセス許可を検出します。

(10)未使用の許可の検出結果IDをクリックすると、以下の画像のように詳細を確認できます。以下の画像の該当IAMロールでは、EC2やIAMに関するすべてのアクションは未使用でSystems Managerの一部アクションも分析期間内に一度も利用されていないことが示されています。

また、分析期間内の実際の利用状況に応じた必要最小限のアクセス許可となる推奨ポリシーも示してくれます。必要最小限のアクセスはベストプラクティスとされているものの、実装に落とし込むことがなかなか難しいため、IAM Access Analyzerの推奨ポリシーは大変参考になるのではないでしょうか。

課題となりやすいポイント

最後に課題となりやすいポイントを紹介します。

  • IAM Access Analyzerは一部機能が有償となっています。とくに内部アクセスアナライザーは分析対象のAWSリソースごとに月額9ドルの費用が発生します。この費用は決して小さくありませんので、分析対象のAWSリソースは必要最低限に絞ることをお勧めします。また、未使用アクセスアナライザーも分析対象のIAMロールおよびIAMユーザーごとに月額0.2ドルの費用が発生します。こちらもOrganizations配下を分析対象としてしまうと、高額な費用が発生することがありますので、利用する際は注意が必要です。例えば、組織内に分析対象のIAMロール/ユーザーが合計5,000存在する場合、月額で1,000ドル(0.2ドル × 5,000)の費用が発生します。

  • Managed Service Provider(MSP。顧客のAWS環境の運用を代行する事業者)によって、AWSアカウントの提供を受けている場合、外部アクセスアナライザーによって多くのIAMロールが検出されることがあります。これは、Managed Service Providerは複数のOrganizationsを管理しているため、下記画像のように、Organizations外の管理用のAWSアカウントからのスイッチロールを行う構成をとるためです。

こうしたケースでは、アーカイブルールを利用し、Managed Service Provider管理のIAMロールの検出結果を自動的にアーカイブさせることを検討してください。アーカイブルールを使うと、意図した設定に関する検出結果を非表示にできるため、本当に確認が必要な通知だけに絞り込めます。下記画像は特定のAWSアカウントからのスイッチロール可能なIAMロールが検出された場合に自動的にアーカイブさせるルールの例です。

まとめ

今回は、AWS IAM Access AnalyzerのAWS Organizations連携機能のセットアップ手順と課題となりやすいポイントを紹介しました。本稿がOrganizations配下のAWSアカウントの運用管理のお役に立てば幸いです。