署名付きCookieを試してみる(1)

やまもとやま
2023-02-21
2023-02-21

資格って美味しいのですか?

どうも、やまもとやまです。
そろそろAWSのSAPでも取得しようと勉強しているのですが、気になるサービス等があると実際に試したくなったりしてなかなか進みません。
折角なので、ちょこっと試してみたCloudFrontの署名付きCookieについて記事に残しておきます。
少し長くなりそうなので、今回はOACによる公開設定まで行い、次回に署名付きCookieの設定および動作をご説明します。

構成

yamamoto07-aws-001

CloudFront経由でS3バケットのオブジェクトへアクセスする構成となります。
その際、S3への直接アクセスは許可せず、CloudFront経由の場合のみ表示できるようにします。
以前はOAI(Origin Access Identity)により実現されていましたが、2022年8月頃よりOAC(Origin
Access Control)が追加され、OACが推奨(OAIは非推奨)となったため、今回はOACで試してみました。
また、ビヘイビアで特定拡張子のファイルについては署名付きCookieおよびURLによるアクセス制限を設けます。

設定手順

まずはコンテンツを格納するS3バケットを作成します。
AWSマネージメントコンソールにログインし、S3 ⇒ バケット から、「バケットを作成」ボタンをクリック。

yamamoto07-aws-s3-001

設定内容は以下になります。
・バケット名:任意の名前を入力
・ACLは無効のまま
・パブリックアクセスはすべてブロック

バケットが作成されたので、コンテンツ用のオブジェクトをアップロードしておきましょう。
今回は作成したバケットの直下に次の2ファイルをアップロードします。
この時点では非公開状態のため、ブラウザでアクセスしても表示はできません。
sample.html
usagi.jpg

次に、CloudFrontのディストリビューションを作成します。
CloudFront ⇒ ディストリビューション から、「ディストリビューションを作成」ボタンをクリック。

yamamoto07-aws-cf-002

設定内容は以下になります。
・オリジンドメイン:先ほど作成したS3バケットを選択
・S3バケットアクセス:「Origin access control settings (recommended)」を選択(これがOACですね)

設定の際、OACを選択すると「Origin access control」の指定ボックスが開きますので、「コントロール設定を作成」ボタンをクリックします。

yamamoto07-aws-cf-001

「Create control setting」のウィンドウが表示されますので、任意の名前を入力して作成しましょう。
OAC設定が作成され、ディストリビューション設定で選択された状態になるので、そのままディストリビューションを作成します。

さて、この状態ではまだCloudFront経由でS3へのアクセスはできないため、バケットポリシーを変更する必要があります。

yamamoto07-aws-cf-003

ディストリビューション作成完了の画面で誘導されますので、「ポリシーをコピー」ボタンをクリックしてコピー、その後に「S3バケットの権限に移動してポリシーを更新する」リンクをクリックします。

yamamoto07-aws-s3-002

yamamoto07-aws-s3-003

すると、対象S3バケットのアクセス許可設定画面が新しいウィンドウで開くので、バケットポリシーの「編集」ボタンをクリックし、先ほどコピーしたポリシーをペーストして保存します

これでCloudFrontからS3バケットへのアクセスが許可されたので、ブラウザでコンテンツを表示可能になります。
早速表示してみましょう。

yamamoto07-web-ok-01

yamamoto07-web-ok-02

無事表示できました。
ついでに、S3を直接指定した場合はこのようにアクセスが拒否されます。

yamamoto07-web-ng-001

今回はここまで。
次回はいよいよ署名付きCookieを試してみます。

というわけで

本題は次回になりますが、今回はOACを利用してCloudFront経由でプライベートなS3コンテンツへアクセスできることを確認できました。
なお、OACはOAIに比べて機能面でアップデートされており、SSE-KMSで暗号化されたS3オブジェクトへのアクセス等も可能になっています。
詳細はAWSドキュメントをご参照ください。
それではまた!