Security Hubのセキュリティスコアはどうやって計算されるか

# 内容

下記勉強会での発表内容になります。Security Hubを分かりやすく説明します。

https://infra365.connpass.com/event/313272/

# Security Hubの機能
Security Hubは大きく分けると下記2つの機能があります。

![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/1cad555a-69cb-05f9-ca3e-62de6e60dfa1.png)

セキュリティサービスの情報集約はGuardDutyやConfig等様々なAWSサービスを統合することが出来ます。統合することによりSecurity Hubに情報を集約することが可能になり、集約した情報からアラート通知も送付することが出来ます。

![スライド5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/392ec287-2194-0fe2-567a-e8f478919de0.png)

今回は情報集約の話ではなく、ベストプラクティスチェックの話をメインで行います。

![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/650068ef-e17b-42f9-1be8-111b363f1776.png)

# ベストプラクティスチェック
記載のあるセキュリティ基準に沿ったチェックをしてくれます。

![スライド7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/f3c450f1-d8bf-3c23-5390-e5a56ac6d8ee.png)

ベストプラクティスチェックは各種AWSサービスに対してセキュリティ基準のチェック内容を一つずつ行っていきます。チェック内容はセキュリティ基準により異なりますが「例えば」の箇所に記載があるような内容のものです。

![スライド8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/89db5240-a2c7-5074-ce52-196a2f05a8b5.png)

# セキュリティスコアの算出方法
ここから本題に入っていきます。チェック内容はコントロール項目といいます。例えば図にあるような「S3バケットのイベント通知が有効になっているか」、「S3のアクセスログが取得されているか」などがあります。これらの結果が失敗や成功としてカウントされ、成功、失敗、不明の値からセキュリティスコアが計算されます。

![スライド9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/fb3bbc0a-c779-d653-356c-fcd1b9d1aaa8.png)

ではコントロール項目の結果はどのように成功・失敗が判定されるのでしょうか。例えば「S3のアクセスログが取得されているか」のコントロール項目でS3バケットが3つある場合、3つの検出結果があります。この検出結果のステータスの組合せで一つのコントロール項目の結果が決まります。

![スライド10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/5fa16eff-b78e-1d5e-f887-3c8f2d7ea2bb.png)

では検出結果のステータスはどうやって決まるかというと。。

![スライド11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/475efdd8-4ca0-23c0-d993-247c5de06ec9.png)

下記2つのステータスがあってその組み合わせによって決まります。

![スライド12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/730f9312-0436-a004-9942-6114fd14be83.png)

![スライド13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/74561848-cf3c-2988-1323-2773a7303d83.png)

コンプライアンスステータスとワークフローステータスは下記の種類があります。

![スライド14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/8ede673d-1b14-b387-1811-91f7cbebc31b.png)

そしてコンプライアンスステータスとワークフローステータスの組合せによって検出結果は下記のようになります。

![スライド15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/3ddb624b-5b33-10d6-7212-0425e7d2d40c.png)

先ほどの例だと、上記の組合せから3つの検出結果は無効・無効・失敗になります。

![スライド18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/8c2e8d99-97db-b525-69c6-0ccaddf495ff.png)

では検出結果の組合せが無効・無効・失敗の場合、コントロール項目はどのようなステータスになるのでしょうか。

![スライド19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/3b00c910-83d0-bf6d-da14-de73d78335e6.png)

検出結果の組合せによってコントロール項目のステータスが決まりますが、検出結果で1つでも失敗があればコントロール項目のステータスは失敗になります。

![スライド20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/eb8c76c1-e05e-4cad-54ab-40d0714e1649.png)

なので無効・無効・失敗の場合は失敗が1つあるのでこのコントロール項目は失敗としてカウントされます。

![スライド21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/28a1fc9c-e4b2-cb70-dc1d-6a1680df5f27.png)

その他コントロール項目のステータスは下記検出結果の組合せにより決定されます。

![スライド22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/b80d8cc4-38c5-e4aa-3c0a-600972e60006.png)

![スライド23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/fb46ff25-2df1-33a1-96fb-d9d566528fd0.png)

![スライド24.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/dd778c91-9b06-f16f-e3cc-9d672b289e38.png)

# まとめ

* セキュリティスコアはコントロール項目の成功・失敗・無効などのステータスから計算されます。
* コントロール項目のステータスは検出結果の組合せで決まります。
* 検出結果のステータスはコンプライアンスステータスとワークフローステータスの組合せで決まります。

![スライド26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/473f358a-84bb-cde7-f3e7-ae42e3ac72c6.png)

# 資料

https://speakerdeck.com/toru_kubota/security-hubnosekiyuriteisukoahadouyatuteji-suan-sareruka