どうしてもAmplifyホスティングをプロジェクトに採用したいので、Amplifyホスティングを最大限に活用してセキュリティ評価をした結果

AWS Amplifyホスティングが便利そうなので使いたいのですが、セキュリティ的な不安からプロジェクトへの導入をあきらめていました。やはり、AWSにおいての開発は、Amplifyを使うのが便利だと思うので、再度チャレンジしようと思い、まずはセキュリティ評価を行いました。

結論を先に記載すると以下の通りです。

- セキュリティヘッダが不十分　※ただし、設定は可能
- DV証明書のみであり、OV/EV証明書の導入ができない
- 暗号強度が低い
- IPアドレス制限ができない
- WAFの設定ができない

# Amplifyホスティングを最大限に活用する

「Amplifyホスティングを最大限に活用する」というのは過大広告のつもりではなく、Amplifyに表示されている推奨設定項目のタイトルです。以下の方法が記載されています。
まだまだやれそうなことはありそうですが、記載されているものはすべて実施しました。
直感的な操作でできるので、おそらく、そんなに悩むことはないと思います。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/b1cbcb5f-ef74-c57f-5d5b-b4f0f641f577.png)

今回利用しているCodeCommitでは、プレビュー機能に対応していませんでした。

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/f6b57a60-10d9-b668-7794-693959769b52.png)

# Mozilla Observatory

Mozilla Observatoryを利用することで、HTTPに関するセキュリティチェックが行えます。
以下のURLにアクセスします。
https://observatory.mozilla.org/

公開したくない場合は、「Don't include my site in the public results」にチェックを入れます。
「enter domain name here」に検査対象のURLを入力して、「Scan Me」をクリックします。

![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/aa14d5bc-34d4-2502-b4f4-a7570f10d4b0.png)

:::note warn
検査をする際は、Amplifyホスティングのパスワード保護を一時的に無効にする必要があります。
:::

スキャンを開始すると以下の画面になるので少し待ちます。
数分経っても終わらない場合は、パスワード保護が有効になっていないかなど、アクセス出来ることを確認します。

![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/8f514548-68b8-5495-abdb-8e0281c7238d.png)

# HTTP Observatory

HTTPヘッダのチェックをしてくれます。
Mozilla Observatoryを使う利点は、ほとんどこの機能だと思っています。
スコアは、「F」ランクでした。

![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/1bb66702-6fce-d271-9894-99e27393dafd.png)

特に対策をしていないため、以下の通り指摘されている状況です。

![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/99803ae6-4658-f816-5776-9b1540be97cc.png)

![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/4a383553-4c5b-acd9-d447-d152d7163edb.png)

上記指摘は、以下のAmplifyの機能でほぼ対策できそうです。

https://docs.aws.amazon.com/ja_jp/amplify/latest/userguide/custom-headers.html

```yaml:セキュリティヘッダーの例
customHeaders:
  - pattern: '**'
    headers:
      - key: 'Strict-Transport-Security'
        value: 'max-age=31536000; includeSubDomains'
      - key: 'X-Frame-Options'
        value: 'SAMEORIGIN'
      - key: 'X-XSS-Protection'
        value: '1; mode=block'
      - key: 'X-Content-Type-Options'
        value: 'nosniff'
      - key: 'Content-Security-Policy'
        value: "default-src 'self'"
```

# TLS Obervatory

次にTLS通信を確認します。
「I = Intermediate」という並みのスコアとなっています。

![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/280ab14e-a371-ff0e-f07f-55b43a21ff8e.png)

原因は、以下の暗号強度にあるようです。
AWSとしては問題ないと考えていると思いますが、セキュリティ要件の厳しいプロジェクトでは難しいかもしれません。

![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/ba97ba95-fb5d-71ba-6fef-a010e1425b75.png)

# ssllabs.com

SSL Labsはそこそこの評価です。
若干スコアが低いのは、TLS Observatoryと同じく、暗号強度が若干低いためです。

![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/70d12978-f77a-bd3d-1c32-fd20ac364937.png)

証明書は、DV証明書が使われており、ぱっと見カスタマイズは難しそうです。
OVやEVが求められるプロジェクトでの導入は厳しそうです。

![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/a6f40cbd-7091-ba67-4dbf-879223d4bad6.png)

SSLの導入基準の目安は、以下のIPAサイトの「TLS暗号設定ガイドライン～安全なウェブサイトのために（暗号設定対策編）～」に開設があります。

https://www.ipa.go.jp/security/vuln/ssl_crypt_config.html

# ImmuniWeb

様々なセキュリティ基準の準拠状況のチェックです。
こちらは問題なさそうです。

![012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/3507c925-bcee-9fb6-aef7-0958bef0f43d.png)

# tls.imirhil.fr

こちらは、TLSの評価ですが、SSL Labsと同様の結果です。

![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/3c723585-f25e-b157-0ccd-ab15da55695e.png)

# securityheaders.com

こちらは、HTTP Observatory同様に、Amplifyホスティングのセキュリティヘッダ設定機能により、ある程度対策できそうです。

![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/5b523c55-8ed3-f198-2565-44e0028e8d1b.png)

# Miscellaneous

こちらのセキュリティヘッダにより対策できそうです。

![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/d303d8e6-10f0-ea68-c7d2-5a4b133fc392.png)

# Amplifyホスティングを導入する上でのセキュリティ課題

今回の検査で見えた課題は、以下の通りです。
このくらいのレベルであれば、重要な外部公開サービスでなければ許容される範囲のように思います。

- セキュリティヘッダが不十分　※ただし、設定は可能
- DV証明書のみであり、OV/EV証明書の導入ができない
- 暗号強度が低い

それ以外にも、構成として以下のような課題があります。

- IPアドレス制限ができない
- WAFの設定ができない

今後の投稿では、上記に対する考察をテーマにしようと思います。