[アップデート]IAM Access Analyzerで新たなタイプのアナライザーであるInternal Accessが追加されました
お疲れさまです。とーちです。
IAM Access Analyzerで新たな機能が追加されたというアップデートがありました。直近、仕事でこのサービスを触っていたので個人的にはhotなアップデートです。
さっそくどんな機能なのか見ていきたいと思います。
今回のアップデートについて
従来のIAM Access Analyzerでは、「外部アクセス」と「未使用アクセス」の2つのアナライザータイプが提供されていました。外部アクセスでは組織外等からのアクセスを検出し、未使用アクセスでは使われていないIAMロールや権限を特定できました。
今回のアップデートで新たに「Internal Access(内部アクセス)」というアナライザータイプが追加されました。これはどういったものかというと、AWSアカウント上の特定のリソース種別のリソースに対して、そのリソースにアクセスできるIAMプリンシパル(IAMユーザーやIAMロール等)を特定できる機能になっています。
外部アクセスの組織アナライザーではOrganizations組織内のIAMプリンシパルについては検出対象外となっていましたが、Internal Accessはそこを一部補完する形になるかなと思います。
現時点で分析対象となるリソース種別は以下の通りです。
- Amazon DynamoDB ストリーム
- Amazon DynamoDB テーブル
- Amazon RDS DB クラスタースナップショット
- Amazon RDS DB スナップショット
- Amazon S3 バケット
- Amazon S3 Express One Zone ディレクトリバケット
Organizations環境で複数のアカウントを管理している場合、アカウント間での意図しないクロスアカウントアクセスを見つけるのに活躍しそうです。
料金について
2025/6/18時点では、日本の料金ページにはInternal Access Analyzerの料金は記載されていませんが、英語の料金ページには記載があります。画面下にスクロールし、言語からEnglishを選択すると英語の料金ページが表示されます。
料金ページによると 分析対象の1リソースにつき 月額 9 USD かかるとのことで料金が高騰しやすいサービスになっていますので、検証などで使われる際はご注意ください。この後の記載で、実際の検証の中で分析対象リソースを選択する際に「All supported resource types」を選んでしまっていますが、対象リソースはよく選定し 最小限のリソースにのみ使用することをおすすめします。
実際に試してみる
それでは早速、Internal Access Analyzerを使ってみましょう。今回は以下の条件で実施していきます。
- AWS Organizations環境下で実施
- IAM Access Analyzerはメンバーアカウントに委任済みなので、委任管理アカウントで作業実施
まずは、マネージメントコンソールからIAMの画面を開き、アクセスアナライザーを選択しましょう。既に画面がかなり変わってますね。グラフ等の表示が追加されています。以下の画面で「アナライザーを作成」を押します。
続いて分析のタイプを選びます。 Resource analysis - Internal access
という項目が今回追加された新たなタイプのアナライザーです。
続いてアナライザーの詳細を設定します。ここでは、任意のアナライザー名と信頼ゾーンを指定します。
信頼ゾーンの選択
信頼ゾーンは自アカウントのみかOrganizations組織単位で有効化するかを選択します。信頼ゾーンにより以下のように検出結果が異なってきます。
- Organizations組織単位: Organizations組織内のプリンシパル(IAM ユーザーまたはロール)が選択したリソースにアクセスできる場合に検出結果が生成
- 自アカウントのみ: 自アカウント内のプリンシパル(IAM ユーザーまたはロール)が選択したリソースにアクセスできる場合に検出結果が生成
今回は「Organizations組織単位」で設定を進めます。
次に分析対象リソースの追加を行います。ここで追加したリソースがInternal accessで調査される対象となります。下記画面のように「リソースを追加する」を押すと3つの選択肢が出てきます。
それぞれ分析対象リソースをどのように追加するかを表しており、以下のような意味合いになります。
- Add resources from selected accounts: AWSアカウント単位で分析対象を追加します
- Add resources by pasting in resource ARN: ARNを指定することで分析対象を追加します。ARNは複数入力可能です。
- Add resources by uploading a CSV: CSVファイルをアップロードすることで分析対象を追加します。AWS Resource Explorerを使用するとアカウント内のリソースをCSV ファイルにエクスポートできるのですが、それをそのままアップロードできるようです。
今回は「Add resources from selected accounts」でやってみます。こちらを選択すると以下のように分析対象のAWSアカウントを選択する画面となります。OU単位で選択できると嬉しかったのですが、少なくともこの画面からだとアカウント単位での選択になるようですね。なお、管理アカウントも分析対象として選択することができました。
画面の上部にどの種別のリソースを選択するかを決める項目があります。
- 「All supported resource types」を選ぶとInternal accessでサポートされている全てのリソースが分析対象となります。
- 「Define specific resource types」を選ぶと分析対象のリソース種別を表示された中から選択することができます。今回は「All supported resource types」にしてみました。
アカウント等を選択した後に「Add resources」ボタンを押すと分析対象リソースが以下のように追加されたことが確認できます。
作成するアナライザーに対してタグなどの設定もできますが今回は上記の設定のみでアナライザーを作成します。
分析結果の確認
この状態でしばらく待つと分析結果が表示されます。公式ドキュメントによると結果が表示されるまでに数分または数時間かかる場合があるとのことです。また初回スキャン後は、24時間ごとに再スキャンされるとのこと。
今回は10分かかるかかからないかくらいで検出結果が表示されました。検出結果は以下の通り操作すれば確認できます。
分析対象アカウントは2アカウントとしたのですが、以下の通りかなり多くの分析結果が出ていますね。
どうやら個別のリソースごとに対象リソースにアクセスできるプリンシパル全てが一つ一つの検出結果として表示されているようです。そのため強い権限を持つIAMプリンシパルが多いと検出結果も自然と多くなりそうですね。サービスリンクロール等が対象リソースにアクセスできる場合も検出結果に含まれてしまうのでこういったものはアーカイブルールで除外したほうが良さそうです。
検出結果の詳細確認
試しに検出結果IDをクリックすると以下のような画面がでます。
大まかに説明すると以下のような構成になっています。
- Finding ID部分: 画面一番左のFinding IDで始まる部分は、分析対象リソースのリソース名やARN、所有アカウントを表しています
- Principal部分: その横のPrincipal (IAM ロール)で始まる部分は、対象リソースに対してアクセスできるプリンシパルの情報が表示されています
- Resource control policy部分: Resource control policy (RCP) restrictionで始まる部分は、RCPやSCP等のポリシーを含めて権限を評価したかどうかを表しています。APIドキュメントを読む限りでは以下の4つのステータスがあるようです。
ステータス | 意味 |
---|---|
NOT_APPLICABLE | ポリシーが存在しない、または適用対象外 |
APPLICABLE | ポリシーは存在するが、評価に含めていない |
APPLIED | ポリシーを評価に含めて権限を計算済み |
FAILED_TO_EVALUATE | ポリシー評価中にエラーが発生 |
- Access level部分: 画面一番右のAccess levelで始まる列はどのような操作を対象のプリンシパルが行うことができるかを表していますね。操作できるアクションが全て記載されているように見えるのでとても分かりやすいです
アーカイブ機能
また画面上部の「Archive」ボタンを押すと対象の検出結果をアーカイブできるようになっています。
Archiveすると、その検出結果を「確認済み」としてマークできます。問題のないアクセスだと確認したものをArchiveしておけば、新しい検出結果だけに集中して確認作業ができるようになります。
アーカイブした検出結果は以下のようにステータスで選択することで確認することができます。
アーカイブルールの設定
またアーカイブルールは以下の内部アナライザーの設定画面から作成することができます。
以下のように特定の項目の値に基づき自動アーカイブするルールを作成できます。今回はプリンシパルARNがAWSControlTowerExecution
の検出結果をアーカイブするルールを作ってみました。
すると以下のように既存の検出結果が即座にアーカイブが実行されました。またこのルールが有効である間は新たな検出結果が発生した際も自動でアーカイブされます。
詳細については、以下のページにある表の一番右の「Supported analyzer types」でどのタイプのアナライザーでサポートされているかが確認できます。
まとめ
今回は新たに追加されたIAM Access AnalyzerのInternal Access機能を実際に試してみました。従来の外部アクセス分析では見えなかった組織内のアクセスパターンを可視化できるという点で、厳格なセキュリティルールがある組織などで重宝されるかもしれないですね。
以上、とーちでした。