継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

CloudFront のセキュリティヘッダーの設定を試した

タダです.

CloudFront でホスティングしているサイトのレスポンスにセキュリティヘッダーをつける対応を行ったので,その備忘録を残しておきます.

CloudFront のセキュリティヘッダーとは

CloudFront では以下のようなセキュリティヘッダーを加えてレスポンスができる機能です.この機能が登場以前は Lambda@Edge などでレスポンスヘッダーを追加して上げる必要があったと思いますが,CloudFront の機能だけでレスポンスヘッダーへの追加が完結するのはいいことですね.

  • HTTP Strict Transport Security (HSTS)
  • X-XSS-Protection
  • X-Content-Type-Options
  • X-Frame-Options
  • Referrer-Policy
  • Content-Security-Policy

aws.amazon.com

セキュリティヘッダーを追加してみる

それでは CloudFront - S3 でコンテンツを返す設定をしているディストリビューションにセキュリティヘッダーを追加してみます.この記事では HSTS のみを有効化し,前後のレスポンスヘッダーの状態を確認してみます.まずは設定変更前が以下のような状態で当然ですが,セキュリティヘッダーが返ってきません.

セキュリティヘッダー追加前

$ curl -I https://www.hoge.com
HTTP/2 200
content-type: text/html
content-length: 8
date: Sat, 03 Dec 2022 07:43:12 GMT
last-modified: Sat, 03 Dec 2022 07:33:59 GMT
etag: "1313058fad6daf581fdcfea2e76ac3b1"
accept-ranges: bytes
server: AmazonS3
x-cache: Miss from cloudfront
via: 1.1 964dcea2ce9513bdb853e662b2030b0a.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT51-P2
x-amz-cf-id: LBSFP4KsgFReRH730JOKqCvdF00yFzs8Oc6cN9Z6NOwvAriMYI8bDQ==

セキュリティヘッダーのポリシー作成と適用

セキュリティヘッダーを追加してみます.CloudFront > ポリシー > レスポンスヘッダー の順に遷移してレスポンスヘッダーポリシーを作成から作っていきます.ご覧のようにバーを有効化してセキュリティヘッダーの最大経過時間を指定し保存すれば,ポリシー作成は完了です.

次にポリシーをディストリビューションに適用していきます.この後,再度サイトにアクセスすると,strict-transport-security という HSTS のヘッダーが返ってきました.

$ curl -I https://www.hoge.com
HTTP/2 200
content-type: text/html
content-length: 8
date: Sat, 03 Dec 2022 07:53:18 GMT
last-modified: Sat, 03 Dec 2022 07:33:59 GMT
etag: "1313058fad6daf581fdcfea2e76ac3b1"
accept-ranges: bytes
server: AmazonS3
x-cache: Miss from cloudfront
via: 1.1 d063c80c78a8368d53c4a98089af352a.cloudfront.net (CloudFront)
x-amz-cf-pop: KIX56-C2
x-amz-cf-id: nF3_Nk4D25L5-t2FzjWLKnqFirsq6419T_DekwhFbp7ucpmY2maqJw==
strict-transport-security: max-age=600

まとめ

CloudFront のセキュリティヘッダー機能を使ったのでまとめました.有効化が非常に簡単で,使う機会があればサクッと試せる機能だと思いました.