やっほー
AWS LambdaでHTTPセキュリティヘッダを付与する方法!

AWS LambdaでHTTPセキュリティヘッダを付与する方法!

  • 2019年4月13日
  • 2021年3月18日
  • AWS
  • 5view
AWS AWS LambdaでHTTPセキュリティヘッダを付与する方法!

AWSをうまく使って、HTTPヘッダに任意のHTTPヘッダを付与したい!

セキュリティにうるさい現場だと、HTTPヘッダにセキュリティ対策がされていないとごちゃごちゃ言われます。

ということで今回は、AWS Lambdaを利用したHTTPセキュリティヘッダ付与方法を解説します!

前提

  • AWSアカウントを持っていること
  • CloudFront×S3でアプリを配信していること

公式サイト

システム構成はこんな感じ

今回は、アプリをS3に格納し、アクセスはCloudFrontを経由する構成になります。

で、「S3⇒CloudFront」のレスポンス時にHTTPヘッダを付与します。

↓の⑥になります。

システム構成

⑥の部分は「オリジンレスポンス」と呼ばれます。

AWS Lambdaを利用したHTTPセキュリティヘッダ付与方法

AWS Lambdaのソースコード

公式サイトにも記載されていますが、ソースコード自体は非常にシンプルです。

今回は、クリックジャッキング対策で付与する「X-Frame-Options」のみ付与してみます。

AWS Lambdaの設定

では、AWS Lambdaの設定をしましょう。

AWS Lambdaを選択し、「関数」→「関数の作成」→「一から作成」を選択します。

 

AWS Lambdaの基本設定

関数名は何でもOKです。

ランタイムは「Node.js 6.10」、もしくは「Node.js 8.10」を選択してください。それ以外はどうやらダメなようです。

 

CloudFront設定

LambdaにCloudFrontを設定します。

トリガーの追加から「CloudFront」を選択するだけです。

トリガーは、リージョンを「バージニア北部」にしないとCloudFrontが表示されないので注意してください。

 

Lambda@Edgeのデプロイ

Lambda@Edgeのデプロイをします。

デフォルトでOKですが、CloudFrontイベントは「オリジンレスポンス」を選択します。

 

新しいバージョンの発行

画面上部の「アクション」→「新しいバージョンを発行」からバージョンを発行します。

 

HttpHeaderLambdaの設定

先ほど作成したソースコードを設定します。

ソースコードはコピペでいいので貼り付けたら、画面右上の保存ボタンをクリックします。これで完了!

バージョンは「$LATEST」でないとソースコードの編集はできないので注意してください。

実際に画面を確認してみる

実際に画面を確認してみます。

 

開発者ツールで確認すると正しく設定されているのが分かります。

 

設定されていないファイルがある場合は、curlコマンドで確認すると正しい結果が得られるので試してみてください。
curl -D – https://〇〇〇〇〇

まとめ

もはや開発者もAWSやインフラに詳しくないと生きていけない時代になりました。

HTTPヘッダなんて今までゴリゴリコード書いてきましたが、それもインフラ周りで設定ができてしまうんですな。

AWSサービスで何がどこまでできるのかをしっかり理解しないといけないのは大変ですね。

ではまた!

AWS LambdaでHTTPセキュリティヘッダを付与する方法!
フォローしてもらえると泣いて喜びます