はじめに
今年8月26日のアップデートでCloudFrontからS3へOrigin Access Control (OAC)を利用したアクセス制御
についての発表がされました。
Amazon CloudFront introduces Origin Access Control (OAC)
Origin Access Control (OAC)の利点
下記のような利点が挙げられ、新たにCloudFrontからS3アクセス制限をする場合にはOrigin Access Control (OAC)を積極的に使用していく
・セキュリティの強化
・HTTPメソッドのサポート(GET, PUT, POST, PATCH, DELETE, OPTIONS, HEAD)
・SSE-KMSを使用したS3バケットのダウンロードとアップロードのサポート
・全ての(2022年12月までに開始される)リージョンでOAIをサポート
・SigV4のみで対応しているリージョンへのHTTP/HTTPSを利用したPOSTメソッドのリクエスト
ハンズオン
・既にS3は作成してある(暗号化なし)状態でスタートします
Cloudfrontの設定
ディストリビューションの作成
項目『オリジンドメイン』に対象とするS3バケットを入力する
項目『S3バケットアクセス』にあるOrigin access control settings
を選択する
コントロール設定を作成
特に変更なしで『作成』を押下、他の項目も変更なしで画面下にある『ディストリビューションを作成』を押下する
ポリシーをコピーする
ディストリビューション完成後、画面上部の赤枠部分『ポリシーをコピー』を押下してポリシーのコピーを行う。
S3の設定
バケットポリシーの編集
対象のS3へ移動後、項目『バケットポリシー』の『編集』を押下する
Origin Access Control (OAC)ポリシーの内容(今回コピーしたポリシーの内容)
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::tetutetu-test/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::012345678912:distribution/E1XXXXXXXXXXXX"
}
}
}
]
}
※参考:従来の Origin Access Control (OAI)でのポリシー
"Principal"の部分に多少の違いが見られます
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3XXXXXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::tetutetu-test/*"
}
]
}
挙動の確認
CloudFront経由でアクセスした際の画面
さいごに
今回は基本的な設定の仕方のみでしたが、実際恩恵を受けるにあたってはSSE-KMS暗号化しているS3にアクセスするパターンの場合とかですかね。とりあえずセキュリティの強化だけを今回のハンズオンできた感じです。
もう少し時間をとって、SSE-KMS暗号化しているS3へのアクセスする場合など切り分けして学習してきます。