1
0

More than 3 years have passed since last update.

CloudFormation で署名付きCookieが有効なパスを含む CloudFront Distribution を作る

Posted at

主に個人的作業メモ。

作成する CloudFront の性質

  • /m/* -> 署名付きCookieがないと閲覧できない、API Gateway (Lambda) が実体を持つコンテンツ
  • /v1/* -> API Gateway (Lambda) が実体を持つコンテンツ
  • /* (Default) -> S3 に実体がある静的コンテンツ

経緯

2021年2月現在、CloudFront には以下の機能が追加されている。

  • Root権限で作成した鍵ではなく、ユーザー権限で公開鍵・KeyGroup を作成して、そのKeyGroup内で署名した Cookie に基づいて特定パス以下のアクセスを制限する機能
    • 例えば、/private/* のパスを閲覧する場合、ユーザーの Cookie に事前に適切な値が含まれていない場合 403 エラーとなるような仕組み
  • これを実現するためには以下の項目を順次行う必要がある
    • CloudFront に公開鍵を登録する
    • 登録した公開鍵を含む KeyGroup を作成する
    • CloudFront の Behavior (パスごとの挙動) に対して、KeyGroup を指定することで、そのパスに対する署名付きCookie必須のアクセスに制限できる

CloudFormation 内で実施すべき作業とメモ

  • 公開鍵を CloudFormation で登録する
    • EncodedKey には YAML で以下のように登録すればよい
    • | は以降の行を改行で結合して複数行を1行に扱うための記号
    • なお、ここで公開している公開鍵は検証用に作ったものなので、自分で登録する場合は別途自分で秘密鍵・公開鍵を作成すること
        EncodedKey: |
          -----BEGIN PUBLIC KEY-----
          MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxhzuK6zXYY5w3gwubNYh
          OPPto8+UuvepM/Yna46eqCTQ+6uNC5zjuindBUEAnY4SUBFqeD8uECXpuKYd9Yf/
          JB0tsC1XGeXYzqS4z5OZbGL28p6Kj4tFcTBz1htCGq0Ldhgsag+ZduWRieZUYsFa
          QbfHgFcpJrubqaF4isZLVMTlg0PgT//wkJCDE2KHk/WOBW7hpVo0KDLpztxRKM4s
          kVC4Xt4nqV0q/lfw45PW/d3R5CBt8xdnn26pxMRGRLf2v3DJHpFR7rzDU/TQphFW
          sYRQEudAJcl+eGkUH08LRYnirDnH7f9zI/1lCVsxmSzr/2jZlsqx0BVe6doyXqR4
          sQIDAQAB
          -----END PUBLIC KEY-----

CloudFormation Template

以下の Gist に YAML 形式のものを示す。
なお、コメントなどは Amplify をもとにしたものなので、それに準じた値が入っている。

1
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
1
0