はじめに
SecurityHub、使っていますか?
AWS環境上にシステムを構築するにあたり、様々なセキュリティフレームワークに準拠しているかを管理できる便利なツールなのでAWSアカウントを開設したら是非有効にしたいサービスです。
Organizationの統制化にあるアカウントであれば、CloudFormationStackSetsやAWS ServiceCatalogなどで実装することもできるかもしれませんが、
- terraformを常用しており、cloudformationに馴染みがない(学習コストを許容できない)。
- お客様所有の環境など、StackSetsやServiceCatalogを使ううまみがない。
などの理由でterraformで実装したいというケースもあるかもしれません。
本稿ではterraformでSecurityHubの有効化と、一緒にやっておきたい最低限のセキュリティ設定を自動で行いたいと思います。
設定すること
本稿では以下のサービスを有効化します。
- Config
- SecurityHub
- GuardDuty
- Inspector
SecufrityHubの標準は下記の二つを選択しています。
- Center for Internet Security (CIS) AWS Foundations Benchmark v1.4.0
- AWS Foundational Security Best Practices (FSBP) 標準
SecurityHubの標準って?という方は下記を参照してください。
上記の標準を有効化するとAWSアカウント内の各種設定状況がチェックされ、標準に準拠していないものが検出されます。
そこで、デフォルトの状態だと検出されてしまうであろうアカウントレベルの設定もまとめてterraformで対応してしまいます。
具体的には下表のSecurityHubコントロールとなります。
ID | 説明 |
---|---|
IAM.7 | IAM ユーザーのパスワードポリシーには、強力な設定が必要です |
IAM.15 | IAM パスワードポリシーで、最小文字数の 14 文字かそれ以上が要求されていることを確認する |
IAM.16 | IAM パスワードポリシーを確認して、パスワードの再利用を防ぐ |
IAM.18 | AWS サポートでインシデントを管理するためのサポートロールが作成されていることを確認する |
S3.1 | S3 ブロックパブリックアクセス設定を有効にする必要があります |
EC2.7 | EBS のデフォルト暗号化を有効にする必要があります |
SecurityHubコントロールって?という方は下記を参照してください。
実装
上記リポジトリにコードを保存しています。
ご利用の環境に合わせてenvファイルを作成の上terraformを実行してください。
READMEにも使い方を記載していますが、不要なモジュールをコメントアウトすることで有効化したいサービス、適用したい設定を絞ることができます。
おわりに
いかがでしたでしょうか。
「AWSアカウントのセキュリティを高めたいけど、何から始めたらいいかわからない」という方は、
まずSecurityHubを有効化してみることをおすすめします。
今回有効化した各種サービスもそれぞれに費用がかかります。
対象アカウントのユースケースに合わせて必要なサービスを取捨選択しつつ、上手にセキュリティを高めていきましょう。
※ 参考(各サービスの料金)