はじめに
Amazon CloudFrontのOrigin Access Identity(OAI)は、CloudFrontがS3バケットのオリジンにアクセスする際に使用する特別なIDです。
OAIを利用することで、S3バケットへの直接アクセスを制限し、CloudFront経由でのみコンテンツを配信できるようになります。
書こうと思ったきっかけ
AWSのセキュリティ強化の方法を学んでいる中で、CloudFrontのOAIがS3バケットのアクセス管理に役立つことを知りました。
また、OAIを適切に設定することで、コスト削減やアクセス制御の簡素化が可能になる点にも興味を持ちました。
特に、誤った設定がセキュリティリスクを生む可能性があるため、正しい使い方を整理したいと思いました。そこで、OAIの概要や設定方法についてまとめることにしました。
CDN(Content Delivery Network)とは?
CDN(Content Delivery Network)は、インターネット上でコンテンツ(画像、動画、CSS、JavaScript など)を高速かつ効率的に配信するための分散型ネットワークのことです。
CDNの仕組み
CDNは、世界各地に設置されたサーバー(エッジサーバー)を活用し、ユーザーの近くにあるサーバーからコンテンツを配信することで、以下のようなメリットを提供します。
1. 表示速度の向上
ユーザーの近くのサーバーからデータを取得するため、レイテンシ(遅延)が少なくなり、Webページの読み込み速度が向上します。
2. サーバー負荷の軽減
CDNがコンテンツをキャッシュすることで、オリジンサーバー(元のサーバー)へのアクセスを減らし、負荷を分散できます。これにより、大量のアクセスが発生してもサーバーが安定して動作します。
3. 可用性の向上
CDNは複数のサーバーにコンテンツを分散しているため、特定のサーバーがダウンしても他のエッジサーバーが代わりにコンテンツを提供できます。これにより、Webサイトの稼働率が向上します。
4. セキュリティの強化
CDNは、DDoS攻撃対策や不正アクセス防止の機能を備えている場合が多く、Webサイトの安全性向上にも役立ちます。
OAIのメリット
- セキュリティの強化:S3バケットのパブリックアクセスを無効化し、CloudFront経由でのみアクセスを許可できる。
- コスト削減:S3からの直接アクセスを防ぐことで、CloudFrontのキャッシュを活用し、データ転送コストを削減。
- アクセス制御の簡素化:IAMポリシーを使用せず、CloudFrontのOAIをS3のバケットポリシーで管理可能。
OAIの設定手順
OAIの作成
- AWSマネジメントコンソールでCloudFrontに移動。
- 新しいディストリビューションを作成、または既存のディストリビューションを選択。
- オリジン設定で、オリジンタイプをS3バケットに設定。
- Origin Accessの設定でRestrict Bucket Accessを有効にし、Create a New Identityを選択。
- OAIの名前を入力し、Create をクリック。
- 「Yes, Update the Bucket Policy」を選択して、S3バケットポリシーを自動更新。
S3バケットポリシーの設定(手動設定の場合)
OAIを手動で設定する場合、S3バケットのポリシーを以下のように変更します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity OAI-ID"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
OAI-ID
の部分には、作成したOAIのIDを入力します。
OAIを利用する際の注意点
- OAIを使用すると、S3バケットへのパブリックアクセスはブロックされるため、S3のURLを直接使用できなくなる。
- CloudFrontディストリビューションの更新には時間がかかる場合がある。
- OAIを削除すると、CloudFront経由でのアクセスが失敗するため、事前にバケットポリシーを調整する。
まとめ
CloudFrontのOAIを利用することで、S3バケットのセキュリティを強化しながら、効率的なコンテンツ配信が可能になります。
適切な設定とポリシー管理を行うことで、安全でコスト効率の高いデリバリを実現できます。