0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者】AWS Transfer Family Web Apps を使ってみる (2) CloudFront/WAF連携

Posted at

1. はじめに

  • 前回の記事「【初心者】AWS Transfer Family Web Apps を使ってみる」で、S3バケットのフォルダ/ファイルを、ユーザ認証をかけた上で外部公開できることを確認した。
  • 追加で以下の改善を行う。
    • CloudFront/WAFを追加し、WAFでSRCIP制限を行う(前回記事での設定では、許可されていないSRCIPからもログイン自体はできてしまうため、そもそもログイン画面に到達できないようにする)
    • Route53/ACMで、自ドメインのFQDNをCloudFrontに付与し、ユーザ向けのエンドポイントをわかりやすいURLに変更する。(前回記事の設定ではTransfer Family Web Appsの標準URLを用いているため)

2. やったこと

  • AWS公式から提供されているCloudFormationテンプレートを用いて、Transfer Family Web Appsをオリジンとし、カスタムドメイン名を持つCloudFrontディストリビューションを作成する。
  • カスタムドメイン名でユーザがWebAppsにアクセスできることを確認する。
  • CloudFrontにWAFをアタッチし、SRCIP制限を行う。

3. 構成図

作業前の構成図(前回の記事で作成した環境)

image.png

  • Transfer Family Web Apps のURLに直接アクセスさせる。

作業後の構成図

image.png

  • CloudFrontとWAF(付随してRoute53レコード及びACMでの証明書)を追加。

4. 手順

4.1 カスタムドメイン名(FQDN)の作成

  • Route53 パブリックホストゾーンにて、TransFer Family Web Appsのユーザ向けのエンドポイントとするレコードを作成する。本記事では仮に「webapp-demo.xxxxx.net」とする。(手順は割愛)
  • 最終的な設定は 「webapp-demo.xxxxx.net CNAME [CloudFrontディストリビューション名]」とするが、レコード登録時にCloudFrontが未設定のため、いったん適当な値にしておく。

4.2 証明書の作成

  • 作成したカスタムドメイン名(FQDN)に対する証明書をACMで作成する。(手順は割愛)

4.3 CloudFront ディストリビューションの作成

  • AWS公式ドキュメント「Update your access endpoint with a custom URL」を用いて、CloudFrontディストリビューションを作成する。
  • パラメータとして以下3点を設定する。
    • WebAppEndpoint: Transfer Family WebApps作成時に生成されたURL
    • AccessEndpoint: 手順4.1で作成した、カスタムドメイン名のURL
    • AcmCertificateArn: 手順4.2で作成した、証明書のARN

image.png

  • Stackの作成完了後、Transfer Family Web Appsをオリジンとし、カスタムドメイン名が設定されたCloudFrontディストリビューションが作成されていることを確認する。

image.png

image.png

4.4 Route53 レコードの修正

  • Route53の該当レコードのCNAME設定を、作成したCloudFrontディストリビューション名に変更する。

image.png

4.5 Transfer Family Web Apps のカスタムURL設定

  • 作成済のTransfer Family Web Appsの「カスタムURL」の値を、作成したカスタムドメイン名に変更する。

image.png

4.6 S3バケットのCORS設定修正

  • 対象のS3バケットのCORSの設定(AllowedOrigins)を、作成したカスタムドメイン名に変更する。

image.png

  • ここまで設定した内容で以下が実現できる。
    • ユーザ(ohtani)は、カスタムドメイン名を用いてアクセスする。
    • ID認証後、Transfer Family Web Appsにアクセスできる。SRCIPが許可されたものである場合はフォルダ・ファイルの参照が可能だが、SRCIPが許可されていない場合、バケットポリシーによりアクセスが拒否される。

4.7 WAFの追加

  • SRCIPが許可されたものでない場合、そもそもTransfer Family Web Appsのログイン画面にアクセスできないようにするため、CloudFrontディストリビューションに対してWAFを追加し、SRCIP制限を行う。

  • 手順は「AWS WAFで特定IPのリクエストからアクセス許可しよう」を参照。詳細は割愛するが、主な設定内容は以下。

    • 「IP set」を作成する。アクセスを許可するCIDRのリストを登録する。
    • 「Web ACL」を作成する。
      • このWeb ACLの適用先として、作成したCloudFrontディストリビューションを指定する。
      • Rule typeを「IP Set」として、リストにあるSRCIPからのアクセスを許可する。
      • RuleにマッチしないアクセスはBlockする。
  • WAF設定の追加後、許可されたSRCIP以外からカスタムドメイン名にアクセスすると、403 ERRORとなるようになった。

image.png

5. 所感

  • SRCIP制限をより確実な形で実装することができて満足感があった。コストは余計かかってしまうが、、
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?