【AWS】CloudFrontの署名付きURLを使ってみた
はじめに
CloudFrontの署名付きURLを実際に動かして、試してみたハンズオン記事です。
S3内のオブジェクトを直接取得するのではなく、署名付きURLを発行してよりセキュアにオブジェクトを取得したいと思います。また、今回はEC2インスタンスから署名付きURLの発行を行います。
使用するサービス
- EC2
- CloudFront
- S3
ハンズオン
以下の流れで署名付きURLのハンズオンを進めます。
- EC2インスタンスの設定
- キーペアの作成
- パブリックキーの登録
- キーグループの作成
- S3バケットの設定
- CloudFrontディストリビューションの設定
1. EC2インスタンスの作成
このEC2インスタンスは、キーペアの作成や署名付きURLの作成に用います。
名前:cloudFront-signedurl-test
キーペア: 任意の名前で新規作成(.pem)
その他のパラメータ:デフォルト値
また、このEC2インスタンスではSSMを利用します。
以下を参考にして、SSM接続ができることを確認して下さい。
また、AWS CLIを用いますので、こちらもインストールして下さい。
2. キーペアの作成
キーペアは次のコマンドで作成します。
openssl genrsa -out cloudfront-test.private.pem 2048
openssl rsa -pubout -in cloudfront-test.private.pem -out cloudfront-test.pub.pem
3. パブリックキー &キーグループの作成
3で作成したパブリックキーをCloudFrontのサイドメニューのパブリックキーを作成を選択して、登録します。
名前:cloudfront-signedurl-test-publickey
次にキーグループを作成します。
サイドメニューからキーグループを選択し、キーグループを作成します。
名前:cloudfront-signedurl-test-keygroup
パブリックキー:cloudfront-signedurl-test-publickey
4. S3バケットの作成
名前: cloudfront-signedurl-test-backet
その他の設定はデフォルト値として、バケットを作成します。
バケットが作成されたら、適宜適当な画像をアップロードして下さい。
5. CloudFrontディストリビューションの作成
オリジン名:loudfront-signedurl-test-backetを選択
オリジンアクセス:有効化する
ビューアーのアクセスを制限する:作成済みのキーグループを選択して下さい。
その他の設定は基本的にデフォルトとして次に進みます。(必要があれば適宜変更して下さい。)
ディストリビューション作成後に次のような警告が出るので、指示に従ってバケットポリシーを修正して下さい。
6.署名付きURLによるS3バケット内のオブジェクトへのアクセス
まずは普通にS3内のオブジェクトにアクセスしてみます。
→ このようにつながらないです。
次に署名付きURLを発行し、アクセスしてみます。
署名付きURLは次のコマンドで発行します。
aws cloudfront sign \
--url https://<DistributionDomain>.cloudfront.net/<file名> \
--key-pair-id <KeyPairID> \
--private-key file://<private-keyへのパス> \
--date-less-than 2024-12-31T00:00:00+09:00
うまくいくと、非常に長いURLが生成されます。
そのURLにブラウザからアクセスすると…
→ 画像がしっかりと表示されましたね!(好きなつけ麺の写真)
まとめ
今回は、CloudFrontから署名付きURLを発行して、S3内のオブジェクトにアクセスしてみました。
S3の方の署名付きURLに関してもあまり詳しくないので触れていければと思います。
参考文献
- 公式ドキュメントhttps://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html
Discussion