こんばんは、小寺です。
CloudFrontがLambda Functions URLへのOACに対応しました。
https://aws.amazon.com/about-aws/whats-new/2024/04/amazon-cloudfront-oac-lambda-function-url-origins/
Origin Access Control (OAC)とは
OACは2022年に発表されたアップデートで、OACが発表される前まではOAIが使われていました。
OACはCloudFrontのオリジンにS3をつかうときの、アクセスを制御として発表されています。元々のオリジンアクセスアイデンティティ(OAI)の課題点はざっくり以下の通りです。
- AWS Signature Version 4(SigV4) を必要とする AWS リージョンでの POST メソッドを使用した HTTP および HTTPS リクエストに対応できない
- SSE-KMSに対応していない
OACが発表されて、以下が対応できるようになりました。
- SigV4のみ対応のリージョンを含めたS3への動的リクエスト(POST、 PUT)のサポート
- SSE-KMS で暗号化されているS3オブジェクトのダウンロードとアップロードがサポート
- AWSリージョンを含めたすべてのリージョンでOACがサポートされる
今回のアップデートでうれしいこと
OACを使用して、指定された CloudFront ディストリビューションからのアクセスのみがサポートされるようになりました。
S3ではよく利用されている内容ですが、Lambda Function URLsへのアクセス制限がより柔軟にできるようになりましたね。
アップデート前まで、以下の構成で運用されていた方が多いのではないかと。認証についても Lambda 関数で、IAM 認証タイプを構成して、認証されたユーザー/ロールで関数で呼び出すというやり方をされているかと思います。そのときにはLambda@Edgeを使って呼び出すために、呼び出しコストも気になる部分だったかと思います。
かといって、コストを気にして認証をNoneにしていた場合、今まではもし仮にLambdaで作った関数のURLが漏洩してしまったときに、いつでもURL実行できてしまうリスクがありました・・。本アップデートにより、OAC対応がされたことで、SigV4が使えるようになり、意図しないユーザーからLambda関数 URL に直接アクセスが回避できます。
セキュリティ的には、AWS Shield Standard から DDoS攻撃の保護ができるようになります。CloudFront OAC による認証を通すことで、すべてのリクエストが CloudFrontの高速配信ができるようになるのも、メリットですね。