費用を抑えたAmazon Inspectorの使い方(診断結果エクスポート)

AWS

2024.10.25

Topics

概要

Amazon Inspector は、ワークロードを自動的に検出し、ソフトウェアの脆弱性や意図しないネットワークへの露出を継続的にスキャンする脆弱性管理サービスです。
EC2やECRの脆弱性を自動で診断してくれるサービスとなりますがアクティブ化している間、費用がかかります。
その点を懸念されて使用を控えられる場合が多いため、今回はエクスポート機能を使用して「1か月のみ診断を実行し、その結果をエクスポートして非アクティブ化する」利用方法をご紹介します。

前提

今回コンソール操作を実施するユーザは「AdministratorAccess」権限を持っています。
権限が制限されたユーザで実施する場合は「AmazonInspectorFullAccess」等を割りててください

参考:Amazon Inspector の開始方法

また、KMSやS3の必要な権限も付与してください。

参考:アクセス許可を確認する

Inspectorの有効化

Inspectorを有効化します。
アクティブ化してすぐ診断結果が確認可能となるわけではございません。
診断結果が出るのは1日程度かかると認識してください。アクティブ化している間はコンソール上より診断結果を確認可能ですのでご利用ください。

Export用S3バケットの作成

診断結果をエクスポートするためのS3バケットを作成します。
基本的に診断結果は公開するわけではないため、すべてデフォルトの設定でよいかと思います。
必要に応じて設定をしてください。
リージョンに関してはInspectorと同じにする必要があります。

今回は「spam-s3-inspector」という名称でバケットを作成しました。
また、のちほどエクスポートが可能となるようにポリシーを変更します。

KMSカスタマー管理型キーの作成

KMSでカスタマー管理型のキーを作成します。
こちらもデフォルトで設定しています。
キー管理者、キーユーザは適宜選択してください(今回はともに選択なし)
リージョンに関してはInspectorと同じにする必要があります。

今回は「spam-kms-key」という名称でバケットを作成しました。
keyについても、のちほどエクスポートが可能となるようにポリシーを変更します。

アクセス許可の設定

Inspectorのエクスポートを可能とするために、先ほど作成した「spam-s3-inspector」、「spam-kms-key」にポリシーを設定します。
以下ポリシーをそれぞれ設定します。それぞれ編集してください。
・アカウントID
・作成したバケット名
・リージョン

「spam-s3-inspector」のバケットポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "allow-inspector",
            "Effect": "Allow",
            "Principal": {
                "Service": "inspector2.amazonaws.com"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::作成したバケット名/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "アカウントID"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:inspector2:リージョン:アカウントID:report/*"
                }
            }
        }
    ]
}

「spam-kms-key」のキーポリシー

{
    "Version": "2012-10-17",
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::アカウントID:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow Amazon Inspector to use the key",
            "Effect": "Allow",
            "Principal": {
                "Service": "inspector2.amazonaws.com"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "アカウントID"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:inspector2:リージョン:アカウントID:report/*"
                }
            }
        }
    ]
}

エクスポート

上記の設定が完了したらInspector画面よりエクスポートを実行します。
「検出結果をエクスポート」よりエクスポートの設定を行います。

「フィルターを追加」で条件を付けてエクスポートが可能です。
今回は「Show all」を選択し、すべての診断結果をエクスポートします。

「ファイルタイプをエクスポート」はお好きなほうをご選択ください。

「エクスポートの場所」は先ほど作成した、S3とKMSキーを選択します。

最後に、右下にあるはずの「Export」でエクスポートが完了します!診断結果をご確認ください!
(エラーが出てエクスポートできない場合はポリシーの誤りがある可能性が高いです)

Inspectorの無効化

診断を止めるために非アクティブ化します。ここを忘れてしまうと費用が掛かり続けます。

「全般設定」→「Inspectorを非アクティブ化」で完了です。
非アクティブ化するとすべての脆弱性診断が停止し、コンソール上で診断結果を確認できなくなるため、注意してください。(リソースへの影響は出ません)

雑記

お疲れ様でした。
Inspector自体はとても便利な機能となるためぜひお試しください。
また、診断対象の数で費用面が大きく変わることもあります。診断サービスも増えてきており制限をかけない場合、すべて診断されてしまい費用がかさむこともあります。
対象を減らして費用を抑えるといったことも可能であるため、今後記事を作成したいと思います。

参考:Inspectorの料金

最後に私の躓きポイントは以下2点でした。
「あってるはずなのに~」と思っても見直すことをお勧めします。(見直したうえで見落としていて、同僚に発見してもらいました)
・S3のポリシー誤り
・KMSキーのポリシー誤り

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら