Security Hub Standardsを利用してAWSのセキュリティチェックを試した

2020.02.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Security HubでのAWS内のセキュリティ, コンプライアンスを一括で表示してくれます.
それとなく不要なSecurity Groupを削除したりと気を遣ってはいるのですが, 「具体的な判断基準を持ってAWSアカウントが安全ですか?」という問いには今の私は歯切れ悪く答えるしかない現状です.
なので今回はSecurity Hubを利用したコンプライアンスチェックに焦点を当てて実際に試していきます.
そしてAWSアカウントのセキュリティ状態を把握しようと思います.

Security Hub とは

Security HubはAWS内のセキュリティ状態をCIS AWS Foundations BenchmarkやPCI DSSに準拠しているかを把握したり, 検出結果をInspectorやGuardDutyのAWSサービス, サードパーティサービスの検出を含めて総合的に把握することができるサービスです.
検出結果を一元化してくれるのでそれぞれのサービスを行来することもなくなく対応できたり, データ集約をSecurity Hubに任せることができます.

また, ドキュメントの内容に基づくと現段階では下記の4機能が大枠で提供されています.

  • Insights
  • Findings
  • Product Integrations
  • Security Standards

この中で「Security Standards」でCIS AWS Foundations BenchmarkやPCI DSSに準拠しているかのチェックができるので実際に試していきたいと思います.

Security Hub を試してみる

実際にSecurity Hubを有効にしてコンプライアンスチェックを実施したいと思います.
実施するのは2つのことです.

  1. AWS Configの有効化
  2. Security Hubの有効化

1. AWS Configを有効にする

まずSecurity Hubを利用するには前提として, AWS Configを有効にする必要があります.
すでに私の環境ではAWS Configが有効化されているので, 今回は設定変更のみ行います. もしまだAWS Configを有効化していない場合はこちらを参考に有効化すると良いと思います.

CISのみを利用する場合はこちらのドキュメント にあるリソースのみ対象とすれば問題なく利用できるかと思っていたのですが, コンプライアンスチェックを行った際に「CIS 2.5 Ensure AWS Config is enabled in all regions」で引っかかるのでAWS Configの対象を全てのリソースにします.

$ aws configservice put-configuration-recorder \
  --configuration-recorde name=default,roleARN=arn:aws:iam::[redacted]:role/[redacted] \
  --recording-group allSupported=true,includeGlobalResourceTypes=true

2. Security Hubを有効にする

EnableSecurityHubを実行して有効化します.

$ aws securityhub enable-security-hub

このコマンドを実行すると, 指定したリージョンでAWS Config, Amazon GuardDuty, Amazon InspectorとAmazon Macieに対するアクセス権限をSecurity Hubに付与します. また有効化された際に自動的にCISでのコンプライアンスチェックも有効化されます (PCI DSSについては有効化されません). PCI DSSについても有効化したい場合は下記コマンドで別途実行すると有効になります.

$ aws securityhub batch-enable-standards \
  --standards-subscription-requests StandardsArn=arn:aws:securityhub:ap-northeast-1::standards/pci-dss/v/3.2.1

StandardsArnについては下記コマンドから確認することができます.

$ aws securityhub describe-standards

	[
	    {
	        "StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0",
	        "Name": "CIS AWS Foundations Benchmark v1.2.0",
	        "Description": "The Center for Internet Security (CIS) AWS Foundations Benchmark v1.2.0 is a set of security configuration best practices for AWS. This Security Hub standard automatically checks for your compliance readiness against a subset of CIS requirements."
	    },
	    {
	        "StandardsArn": "arn:aws:securityhub:ap-northeast-1::standards/pci-dss/v/3.2.1",
	        "Name": "PCI DSS v3.2.1",
	        "Description": "The Payment Card Industry Data Security Standard (PCI DSS) v3.2.1 is an information security standard for entities that store, process, and/or transmit cardholder data. This Security Hub standard automatically checks for your compliance readiness against a subset of PCI DSS requirements."
	    }
	]

また冒頭でSecurity Hubを利用するには前提として, AWS Configの有効化が必要だと記載しました.
実際にCISやPCI DSSでのチェックを行うために, AWS Config上でRulesが増えていることが確認できます.

$ aws configservice describe-config-rules --query ConfigRules[].ConfigRuleName

	[
			~~~
	    "securityhub-access-keys-rotated-xxxxxxxx",
	    "securityhub-cloud-trail-cloud-watch-logs-enabled-xxxxxxxx",
	    "securityhub-cloud-trail-encryption-enabled-xxxxxxxx",
	    "securityhub-cloud-trail-log-file-validation-enabled-xxxxxxxx",
			~~~
	]

結果を確認してみる

Security Hubのマネジメントコンソールに移動すると結果が出力されています.
初回実行時はいくらか時間がかかるので待つと良いです. 私の初回実行の結果はだいぶ低いですね.

img

実際にCIS AWS Foundations Benchmark v1.2.0に移動するとIAM Password Policyなど独自で定義しているものや, 環境によっては不要なルールもいくらか含まれていることもわかります.

img

検討は必要だとは思いますが, 無用に検出されるより不要なものは無効化も必要かと思います. なので次に不要なルールを無効化してみます. 例えばですが, 「CIS 1.9 Ensure IAM password policy requires minimum password length of 14 or greater」を無効にする場合は下記のコマンドを実行します.

$ aws securityhub update-standards-control \
	--control-status DISABLED \
	--disabled-reason 'another rule is used' \
	--standards-control-arn arn:aws:securityhub:ap-northeast-1:[redacted]:subscription/cis-aws-foundations-benchmark/v/1.2.0/1.9

さいごに

Security Hubは試す前は難しい印象がありましたが, 実際はかなり操作性も視認性も良く使いやすいと感じました.
他サービスとの統合などまだ様々な機能があるので今後とも試していきたいです.

参考文献