AWS Security Hub を CloudFormation で有効化する場合、すべてのスタンダードが有効化されるわけではない

AWS Security Hub において、 PCI DSS はデフォルトのスタンダードではありません。マネジメントコンソール以外から Security Hub を有効化する場合、注意が必要です。

コンバンハ、千葉(幸)です。

Security Hub を CloudFormation を用いて有効化する機会がありました。その際にどのスタンダードが有効化されるのか?を初めて知りましたので記しておきます。

目次

SecurityHub のスタンダードとは

Security Hub においては、スタンダード(標準、Standard)というコンポーネントによってセキュリティチェックが実行できます。

Security Hub では、サポートされている一連のセキュリティ標準でルールに対して自動的かつ継続的なチェックを実行した結果として独自の結果も生成します。これらのチェックにより、準備状況スコアを取得でき、注意の必要なアカウントおよびリソースを特定できます。

AWS Security Hub でのセキュリティ標準

2020年6月時点では以下のスタンダードが用意されています。

  • CIS AWS Foundations(サービス開始当初より)
  • Payment Card Industry Data Security Standard (PCI DSS)(2020年2月より)
  • AWS の基本的なセキュリティのベストプラクティス(2020年4月より)

それぞれが開始された際の様子は以下を参照してください。

これらのスタンダードを有効化することで、スタンダード内の各評価項目に対する結果が Security Hub のコンソールから参照できるようになります。

スタンダードは AWS Config のマネージドルールと紐づいており、スタンダードを有効化することで自動的に評価項目に対応した Config ルールが生成されます。これらのルールによって継続的なチェックが行われています。

マネジメントコンソールから Security Hub を有効化する場合

新規に Security Hub をマネジメントコンソールから有効化する場合、2020年6月現在では以下のような画面が表示されます。

有効にするスタンダードも併せて選択できるようになっており、デフォルトでは以下の2つが選択されています。

  • CIS AWS Foundations
  • AWS の基本的なセキュリティのベストプラクティス

PCI DSS 用のスタンダードは明示的に選択しない限り有効化されません。

CloudFormation で Security Hub を有効化する場合

CloudFormation のリファレンスを見てみると、テンプレートで現状定義できるのは以下のような形式です。

AWS::SecurityHub::Hub

Type: AWS::SecurityHub::Hub
Properties: 
  Tags: Json

Security Hub に付与するタグ以外は一切指定できないようになっています。有効化するスタンダードはここで選択できないようですが、どういった状態で有効化されるのでしょうか。

やってみた

以下のテンプレートを用いて CloudFormation を実行してみます。タグの指定すらしないシンプルな形です。

AWSTemplateFormatVersion: 2010-09-09
Description: "enable securityhub"
Resources:
  SH:
    Type: AWS::SecurityHub::Hub

CloudFormation を実行します。

実行後の状態を Security Hub のコンソールから確認すると、有効になっていたスタンダードは以下2つだけでした。

  • CIS AWS Foundations
  • AWS の基本的なセキュリティのベストプラクティス

PCI DSS のスタンダードはデフォルトのものではないという扱いのようです。有効化したい場合は、明示的にこの画面から有効化する必要があります。

AWS CLI のリファレンスから読み取ってみる

これらの扱いについて、 AWS CLI のリファレンスを読むと理解が追いつきました。

enable-security-hub

When you use the EnableSecurityHub operation to enable Security Hub, you also automatically enable the following standards.
・ CIS AWS Foundations
・ AWS Foundational Security Best Practices

To not enable the automatically enabled standards, set EnableDefaultStandards to false .

You do not enable the Payment Card Industry Data Security Standard (PCI DSS) standard.

以下のスタンダードはデフォルトスタンダードという扱いであり、明示的にオプションで指定しない限りは Security Hub の有効化に併せて有効化されます。

  • CIS AWS Foundations
  • AWS の基本的なセキュリティのベストプラクティス

PCI DSS のスタンダードはデフォルトスタンダードではないので、別途 明示的にbatch-enable-standardsオペレーションを用いて有効化する必要があります。

東京リージョンで有効化する場合のコマンド例は以下です。

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

詳細は以下を参照してください。

終わりに

AWS Security Hub におけるスタンダードの扱いについて確認しました。デフォルトスタンダードではない PCI DSS のスタンダードを Security Hub と併せて有効化できる分、マネジメントコンソールから操作するほうがちょっと便利ですね。AWS CLI や CloudFormation で有効化する際にはご注意ください。

とはいえ、果たして本当にこのスタンダードを有効化する必要があるのか?については、チェック対象とする項目と照らし合わせて、適宜ご判断いただければと思います。

PCI DSS コントロール

ありがとうございました。