Security Hub が CIS AWS Foundations Benchmark v1.4.0 をサポート

## はじめに
AWS Security Hub が CIS AWS Foundations Benchmark v1.4.0 をサポートしました :tada::tada::tada:

https://aws.amazon.com/jp/about-aws/whats-new/2022/11/security-hub-center-internet-securitys-cis-foundations-benchmark-version-1-4-0/

これまでも AWS config rules の conformance pack では、v1.3.0 や v1.4.0 のルールセットが提供されていましたが、Security Hub のセキュリティ基準機能では長らく v1.2.0 のみをサポートしていました。これにより Security Hub で 既存の v1.2.0 の準拠状況をチェックしているユーザーも最新のベストプラクティスに対応することができます。

※CIS Benchamrk 本体は 2022 年 8 月に最新バージョンとなる CIS AWS Foundations Benchmark v1.5.0 がリリースされていますが、今回のアップデートでは v1.4.0 への対応です。

## v1.2.0 と v1.4.0 のチェック項目の比較
以下のドキュメントに整理されています。

https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-cis1.4-vs-cis1.2.html

以前 v1.3.0 および v1.4.0 の変更点を別投稿でまとめていますので、日本語や監査手順レベルのでの詳細について確認されたい方は参照いただければと思います。

https://qiita.com/hayao_k/items/fed7c07c9f05c445ce1f

https://qiita.com/hayao_k/items/cd8a0589782b981cc442

## Security Hub によるチェックをサポートしていない項目
以下のドキュメントに整理されています。

https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-cis-checks-not-supported.html

v1.4.0 で定義されている項目のうち、評価ステータスが Manual であるものおよび、Automated の一部項目については未サポートになっています。
特に v1.2.0 と比較すると、Automated で未サポートの項目が多いのが気になるところです。

### Manual
このステータスは準拠状況の評価を完全に自動化することができず、一部またはすべてに手動による確認が必要となることを表します。そのため、Security Hub による自動チェックには対応していません。

* 1.1 – 現在の連絡先の詳細を維持する
* 1.2 – セキュリティ連絡先情報が登録されていることを確認する
* 1.3 – セキュリティの質問が AWS アカウントに登録されていることを確認する
* 1.11 – コンソールパスワードを持つすべての IAM ユーザーの初期ユーザーセットアップ中にアクセスキーをセットアップしないでください
* 1.18 – インスタンスからの AWS リソース アクセスに IAM インスタンス ロールが使用されていることを確認する
* 1.21 – IAM ユーザーが ID フェデレーションまたはマルチアカウント環境の AWS Organizations を介して一元的に管理されるよう にする
* 2.1.4 – 必要に応じて、Amazon S3 内のすべてのデータが検出、分類、保護されていることを確認する
* 5.4 – VPC ピアリングのルーティング テーブルが「最小アクセス」であることを確認する

### Automated
このステータスは準拠状況の評価を完全に自動化できることを表しますが、リリース時点で以下の項目が Security Hub による自動チェックをサポートしていません。1.15, 4.1, 4.2, 4.3, 5.2 あたりは v1.2.0 ではチェックができるのに何故。。というお気持ち。今後の拡充に期待です。

* 1.13 – 1 人の IAM ユーザーが使用できるアクティブなアクセス キーが 1 つだけであることを確認する
* 1.15 – IAM ユーザーがグループを通じてのみアクセス許可を受け取るようにする
* 1.19 – IAM に保存されている期限切れの SSL/TLS 証明書がすべて削除されていることを確認する
* 1.20 – IAM Access Analyzer がすべてのリージョンで有効になっていることを確認する
* 2.1.3 – S3 バケットで MFA 削除が有効になっていることを確認する
* 3.10 – 書き込みイベントのオブジェクトレベルのロギングが S3 バケットで有効になっていることを確認する
* 3.11 – 読み取りイベントのオブジェクトレベルのロギングが S3 バケットで有効になっていることを確認する
* 4.1 – 不正な API 呼び出しに対してログ メトリック フィルタとアラームが存在することを確認する
* 4.2 – MFA なしで管理コンソールにサインインするためのログ メトリック フィルターとアラームが存在することを確認する
* 4.3 – 「root」アカウントを使用するためのログ メトリック フィルターとアラームが存在することを確認します (これは、自動化された要件 1.7 に似ています。Security Hub でサポートされている、管理および日常タスクでの「root ユーザーの使用を排除する」に似ています)。
* 4.15 – AWS Organizations の変更に対するログ メトリクス フィルタとアラームが存在することを確認する
* 5.2 – 0.0.0.0/0 からリモート サーバー管理ポートへの進入を許可するセキュリティ グループがないことを確認する

## 有効化してみる
Security Hub のコンソールのセキュリティ基準を確認すると、CIS AWS Foundations Benchmark v1.4.0 が追加されていることがわかります。ルールセットとしては完全に分かれているため v1.2.0 と v1.4.0 を同時に有効化できます。並行稼働しながらあとから v1.2.0 を無効化するという移行も可能です。　

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/48ca4289-d52a-ae8f-9360-b139066f85a4.png)

有効化ボタンをクリックすると確認画面が表示されます。再度有効化をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/ac114020-3f4a-e03a-2627-9319ef132ef5.png)

AWS が推奨する AWS 基礎セキュリティのベストプラクティスを有効化していない場合は、追加で確認が表示されます。任意で設定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/04e65b06-1984-4a1b-4f0a-f4fed5d0f6db.png)

設定直後はすべてデータなしと表示されますが、しばらくすると項目ごとのステータスが更新され、セキュリティスコアが表示されます。簡単ですね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6ab3f9b4-c0d2-0992-b7a9-45407988d4c8.png)

検出結果 (Findings) やカスタムインサイトで、v1.4.0 の項目に表示を絞るには GeneratorID に Start with (次で始まる): `cis-aws-foundations-benchmark/v/1.4.0/` を指定し、Filter をかけるとよいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/1d95b572-f9f7-1e2a-124e-b16b81db273e.png)

### Security Hub マネージドの Config Rule
セキュリティ基準は一部のカスタムロジックと AWS Config Rules を使用して準拠状況のチェックが行われています。AWS Config Rules のコンソールを確認すると `securityhub-` というプレフィックスがつくルールが存在します。これらは Security Hub が作成した Service-Linked AWS Config Rules (SLR) と呼ばれるルールです。SLR は対象の AWS サービスによって操作されるため、Config 上でユーザーが個別に編集、削除といった操作をおこなうことはできません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/221eb264-89fc-1d5f-5992-8593fcf6ce11.png)

v1.2.0 と同時に有効化している場合、共通の項目に関しては SLR も共用されるようです。v1.4.0 で追加された項目に対しては以下の SLR が対応しています。

| CIS 要件 | コントロール名 (日本語参考訳) | 対応する SLR |
| --- | --- | --- |
|1.12 |45 日以上使用されていない資格情報が無効になっていることを確認する|securityhub-iam-user-unused-credentials-check-45-|
|2.1.1|すべての S3 バケットが保存時の暗号化を採用していることを確認する|securityhub-s3-bucket-server-side-encryption-enabled-|
|2.1.2|HTTP リクエストを拒否するように S3 バケット ポリシーが設定されていることを確認する|securityhub-s3-bucket-ssl-requests-only-|
|2.1.5.1|アカウントレベルで S3 Block Public Access が設定されていることを確認する|securityhub-s3-account-level-public-access-blocks-periodic-|
|2.1.5.2|バケットレベルで S3 Block Public Access が設定されていることを確認する|securityhub-s3-bucket-level-public-access-prohibited-|
|2.2.1|EBS ボリュームの暗号化が有効になっていることを確認する|securityhub-ec2-ebs-encryption-by-default-|
|2.3.1|RDS インスタンスの暗号化が有効になっていることを確認する|securityhub-rds-storage-encrypted-|
|5.1|	0.0.0.0/0 からリモート サーバー管理ポートへの進入を許可するネットワーク ACL がないことを確認する|securityhub-nacl-no-unrestricted-ssh-rdp-|

## 留意点
### API で処理を何らかの自動化している場合
前述のように v1.2.0 と v1.4.0 はルールセットが分かれているため、API 呼び出し時の Standard ARN や GeneratorID に関しても v1.4.0 のものを明示する必要があります。

* Standard ARN – `arn:aws::securityhub:region::standards/cis-aws-foundations-benchmark/v/1.4.0`
* GeneratorID – `cis-aws-foundations-benchmark/v/1.4.0/<control ID>`

https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-cis1.4-vs-cis1.2.html#cisv1.4.0-finding-fields

### Security Hub の利用を開始したときにデフォルトで有効になるのはどっち？
Security Hub を新規で利用開始する場合、CIS AWS Foundations Benchmark および AWS Foundational Security Best Practices のセキュリティチェックが自動で有効化されます。今回 v1.4.0 が追加されたため、v1.2.0 と v1.4.0 どちらがデフォルトで有効になるのか、あるいは両方なのかが気になります。

2022/11/10 時点では v1.2.0 のみがデフォルトで有効になるようです。今後動作が変更される可能性があります。v1.4.0 に関しては現時点ではアカウントごとに有効化する必要があるので、特に AWS Organizations で組織レベルで監視している場合は有効化処理等の追加を検討する必要がありそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d002c803-0115-225c-0ab9-8d104729169f.png)

ちなみに API ドキュメントではバージョン番号はまだ言及されていませんでした。

https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_EnableSecurityHub.html

> 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

以上です。
参考になれば幸いです。