内容
Security Hubの仕組みや基礎、用語については過去にまとめた下記記事を参照下さい。
今回はAWSアカウント内に大量のオブジェクトを作成した際、セキュリティチェック項目の無効化によるコスト削減方法について記載します。Security Hub有効化後、「AWS 基本的なセキュリティのベストプラクティス」などのコントロールを有効化すると、各ベストプラクティスにより定義されているセキュリティチェックが実行されます。Security Hubの料金ですが、「セキュリティチェックの数」が一つの価格決定要素となっています。そのため、大量にオブジェクトを作成した場合、結構な数のチェック数となりコストに影響してしまいます。例えばS3バケットを1000個作成した場合を考えています。この場合、「S3バケット毎にチェックが実行される項目」×「S3バケット数」のチェック項目が増加します。S3バケット毎のチェック項目が「例)S3.5,S3,9 ・・・・と9個あったとすると」9×1000項目チェック数が増加します。
- [S3.5] S3 general purpose buckets should require requests to use SSL
- [S3.9] S3 general purpose buckets should have server access logging enabled
- ・・・・・・
Security Hubのセキュリティチェックのタイミング
Security HubのセキュリティチェックはAWS Condfigのルールを使用して実行されます。従ってSecurity Hubを有効化する前にAWS Configを有効化する必要があります。有効化後、セキュリティチェックのタイミングですが下記3パターンがあります。
1つ目は「定期的なセキュリティチェック」です。このパターンは一定の周期によって自動的にセキュリティチェックが実行されます。2つ目のパターンは「変更によってトリガーされるセキュリティチェック」でリソースの状態に変更があった際にセキュリティチェックが実行されます。3つ目は上記2つのパターンを組み合わせて実行されます。この様に継続的にチェックが実行されるため、セキュリティチェックの項目数が多いとコストに跳ね返って来るわけです。Security Hubリファレンスの「Schedule type」項目から各セキュリティチェックがどのタイプか確認可能です。下記はS3のリファレンスの例です。
セキュリティチェックを無効化する方法
不要なセキュリティチェックの無効化方法についても3パターンあります。1つ目は「AWS 基本的なセキュリティのベストプラクティス」などのコントロール基準自体を無効化する方法です。ただしこの方法では、その他必要な項目も全て無効になってしまいます。2つ目はコントロール基準の中の1つのルールを無効化する方法です。例えば「AWS 基本的なセキュリティのベストプラクティス」の中の「[S3.5] S3 general purpose buckets should require requests to use SSL」という1つのルールを無効化することによって該当ルールのセキュリティチェックを無効化することが可能です。3つ目は該当ルールの中の「コントロールステータス」を抑制する方法です。Security Hubのセキュリティスコアはどうやって計算されるかでも記載しましたが、失敗したセキュリティチェック項目に関して、設計上問題ないもの、何らかの対処が実施されているものに関しては「抑制対応」を行い、「管理者が項目としてチェックしたか」を管理していく必要があると考えています。コントロールステータスを抑制済みにした項目に関してはチェック対象外となります。ただしこの方法だとルール自体は無効化していないため、ルールのアップデートが行われると再チェックが実行される場合があります。(3つ目の方法だとアラートは抑制されるが、課金対象)