はじめに

AWSリソースの設定がAWSペストプラクティスに沿っているかをチェックする仕組みを導入したい時になにを使いますか?
AWS Trusted Advisorを思い浮かべると思います。
AWSリソースの設定が思ったとおりになっているかをチェックする仕組みを導入したい時になにを使いますか?
AWS Configを思い浮かべると思います。

ではAWSリソースの設定がセキュアな状態かをチェックする仕組みを導入したい時になにを使いますか?
ちょっと迷いますよね。
これについて自分なりに調査し解釈をしましたので、せっかくですので記事として残したいと思います。
誰かが同じようなことで検討する際に役立てば幸いです。

結論から言うと

とりあえずセキュアな状態かを簡単にチェックしたいとかですと、Security Hubの利用がおすすめです。
もちろんAWS Trusted AdvisorでもAWS Configでもセキュリティチェックは可能です。
細かな要件がなくセキュリティチェックしたいとかだとSecurity Hubがパフォーマンスに優れていると思います。

・ベスプラ診断(AWS Trusted Advisor)ってよりかはセキュリティサービスとして導入したい
・色々カスタマイズ(AWS Config)はできなくてもいいからセキュリティフレームワーク準拠かを簡単に診断したい

上記ぐらいの感じであればまさにSecurity Hubが刺さると思います!

各種実現案

1. AWS Trusted Advisorによるセキュリティチェック

メリット
実は、Security Hubと統合できますし Well-Architected Toolとだって統合できちゃいます。
セキュリティだけでなく、コスト最適化や耐障害性といった観点でもチェックを行ってくれます。

デメリット
Security Hubと統合の際に追加される項目は「AWS 基礎セキュリティのベストプラクティス v1.0.0 」のみとなります。
ほげほげベンチマークというよりはAWSが独自に定めたベスプラ準拠であるかといった観点でチェックを行うことになります。
また、いろんな観点でチェックを行えるという反面、でた結果については運用をどう回すかなども考えていかなくてはいけなくなると思います。
なのでセキュリティチェックを求める場合には少しずれてしまうと思います。

2. AWS Configによるセキュリティチェック

メリット
カスタムルールを定義作成することで、どんなチェック要件にも対応できます。
個別要件がなくてセキュリティフレームワークに準拠したチェックのみを行いたい場合でも、コンフォーマンスパックというものがAWSで準備されています。
CISやPCI DSS、NISTといったものに準拠しているかの確認が容易に行えます。

また修復アクションの定義も可能です。
検知されたチェック内容に対して補正設定を行うことができます。
例)S3のパブリックブロックアクセス無効設定を検知した時に有効化を自動化させることができます

デメリット
いろいろできるからこそ、導入する時に考えることが多い
コンフォーマンスパックを利用する場合でもCloudFormationを利用する必要があったりと少し導入面倒

3. AWS Security Hubによるセキュリティチェック

メリット
有効化をするだけで簡単にセキュリティフレームワークに準拠したチェックを行えます。
CIS AWS Foundations BenchmarkやNIST Special Publication 800-53 Revision 5、PCI DSSといったものに準拠しているかの確認が容易に行えます。
おすすめは、AWS 基礎セキュリティのベストプラクティス v1.0.0とCIS AWS Foundations Benchmark v1.2.0です。

またGuardDutyと統合することができます。
なのでSecurity Hub結果とGuardDuty結果をセキュリティチェックとしてまるっとSecurity Hub管理ができます。
こちらもSecurity Hub有効時点で自動的に統合処理が行われます。

デメリット
個別要件に対応するカスタムルールは定義できません。
また修復アクションは使用できずにあくまでチェックのみを提供します。

これを有効にした時に結局Config ruleが作成されます。
Security Hub によって有効化される AWS Config ルールは無料ですが、Security Hub側でチェック単位で費用が発生するなどややこしい部分もあります。

Security Hubによるチェックはベンチマーク準拠が担保されるものの、そもそものベンチマークがAWS基本サービスのみをサポートしています。(それ以外は診断対象となっていない)

まとめ

Security Hubで足りない部分を一部、Config(適合パック)やConfig(カスタムルール)で補完するとかいうハイブリッドな使い方もできるかと思います。
しかしながらそれだと結局、Configの導入設定は行うことになりますので、全部Config利用に倒した方が良いのではないかと個人的に感じています。

この辺りはコスト(検討/運用)パフォーマンスで考えていくしかないかと思います。
明確な要件がそもそもあれば別ですが、そうないと思いますので簡単にベンチマークを満たしている確認ができるSecurity Hubがとても便利だなーと感じました。
おまけでGuardDuty統合できますし。

以上です。誰かの検討の参考になれれば嬉しいです。
最後までご覧いただきありがとうございました。