【CloudFront】OAI(Origin Access Identity)とは?わかりやすく解説!

Amazon CloudFrontを利用する際によくある要望として、

  • S3のファイルへ直接アクセスできないようにしたい
  • 必ずCloudFrontを経由してS3を参照させたい

というケースがあります。このときに使うのがOAI(Origin Access Identity)です。

この記事では、OAIの仕組み・メリット・OACとの違いを、初心者にもわかりやすく解説します。

OAI(Origin Access Identity)とは?

Amazon CloudFrontのOrigin Access Identity(OAI)は、CloudFrontがS3バケットのオリジンにアクセスするための専用IDです。もう少し詳しく言うと、S3のcanonical user IDを持ったCloudFront専用ユーザーで、S3バケットポリシーでこのユーザーだけに読み取り権限を与えることで、S3への直接アクセスを制御できます。

イメージとしては、CloudFront専用の「特別なユーザー(IAMユーザーに近いイメージ)」と思えばOKです。

OAIを利用することで、S3バケットへの直接アクセスを制限し、CloudFront経由でのみコンテンツを配信できるようになります。

OAIのメリット

OAIを利用することで以下のメリットがあります。

メリット

  • セキュリティの強化
    • S3バケットのパブリックアクセスを無効化し、OAI経由(=CloudFront経由)からのアクセスだけを許可できます。
  • CloudFrontキャッシュを必ず経由
    • インターネットから直接S3 URLにアクセスしても弾かれるため、原則としてCloudFrontを経由してコンテンツを取得する形になり、キャッシュを有効に活用できます。
  • S3のURLを知られてもアクセス不可
    • バケットポリシーでOAI以外を拒否していれば、S3のURLが知られていても403エラーとなり、「S3に置いている画像が勝手に直リンクされる」問題を防げます。

「OAI」と「OAC」の違い

AWSは新方式としてOAC(Origin Access Control)も提供しており、S3オリジンを新規に作る場合はOAIではなくOACを使うことが推奨されています。

項目OAIOAC
仕組みS3 canonical user IDを持つCloudFront専用ユーザーCloudFrontがSigV4署名付きリクエストでS3などのオリジンにアクセス
対応範囲S3バケットのみS3 + 一部のAWSサービス(MediaStore / MediaPackage v2 / Lambda URLなど)
セキュリティ従来方式。SSE-KMSなど一部の新機能には非対応のケースあり新方式。SSE-KMSや全リージョンのS3をサポートし、より厳密なアクセス制御が可能
今後の扱い既存構成向けのレガシー機能(新規構築では利用は推奨されない)AWS公式で推奨される方式(新規は基本的にOACを選ぶのがベストプラクティス)

OAIは古い方式ではありますが、既存の構成では今も広く使われています。新しくCloudFront+S3を構築する場合は、基本的にはOACを使いましょう。

スポンサーリンク