AWS Lambda 함수 URL 오리진에 대한 액세스 제한
CloudFront는 Lambda 함수 URL 오리진에 대한 액세스를 제한하기 위한 오리진 액세스 제어(OAC)를 제공합니다.
새 OAC 생성
다음 주제에 설명된 단계를 완료하여 CloudFront에서 새 OAC를 설정합니다.
참고
Lambda 함수 URL과 함께 PUT
또는 POST
메서드를 사용하는 경우 사용자가 요청을 CloudFront에 전송할 때 x-amz-content-sha256
헤더에 페이로드 해시 값을 포함해야 합니다. Lambda는 서명되지 않은 페이로드를 지원하지 않습니다.
사전 조건
OAC를 생성하고 설정하기 전에 Lambda 함수 URL을 오리진으로 사용하는 CloudFront 배포가 있어야 합니다. 자세한 내용은 Lambda 함수 URL 사용 단원을 참조하십시오.
Lambda 함수 URL에 액세스할 수 있는 OAC 권한 부여
OAC를 생성하거나 CloudFront 배포에서 설정하기 전에 OAC에 Lambda 함수 URL에 액세스할 수 있는 권한이 있는지 확인합니다. 이 작업은 CloudFront 배포를 생성한 후 배포 구성의 Lambda 함수 URL에 OAC를 추가하기 전에 수행해야 합니다.
참고
Lambda 함수 URL에 대한 IAM 정책을 업데이트하려면 AWS Command Line Interface(AWS CLI)을 사용해야 합니다. Lambda 콘솔에서의 IAM 정책 편집은 현재 지원되지 않습니다.
다음 AWS CLI 명령은 Lambda 함수 URL에 대한 CloudFront 서비스 보안 주체(cloudfront.amazonaws.com
) 액세스 권한을 부여합니다. 이 정책의 Condition
요소는 요청이 Lambda 함수 URL을 포함하는 CloudFront 배포를 대신하는 경우에만 CloudFront가 Lambda에 액세스할 수 있도록 허용합니다.
예 : CloudFront OAC에 대한 읽기 전용 액세스를 허용하도록 정책을 업데이트하는 AWS CLI 명령입니다.
다음 AWS CLI 명령을 실행하면 CloudFront 배포(
)가 Lambda E1PDK09ESKHJWT
에 액세스할 수 있습니다.FUNCTION_URL_NAME
aws lambda add-permission \ --statement-id "AllowCloudFrontServicePrincipal" \ --action "lambda:InvokeFunctionUrl" \ --principal "cloudfront.amazonaws.com" \ --source-arn "arn:aws:cloudfront::
123456789012
:distribution/E1PDK09ESKHJWT
" \ --function-nameFUNCTION_URL_NAME
참고
배포를 생성했는데 Lambda 함수 URL에 대한 권한이 없는 경우 CloudFront 콘솔에서 Copy CLI 명령을 선택한 다음 명령줄 터미널에서 이 명령을 입력할 수 있습니다. 자세한 정보는 AWS Lambda 개발자 안내서의 AWS 서비스에 대한 액세스 부여를 참조합니다.
OAC 생성
OAC를 생성하려면 AWS Management Console, AWS CloudFormation, AWS CLI 또는 CloudFront API를 사용할 수 있습니다.
오리진 액세스 제어를 위한 고급 설정
CloudFront OAC 기능에는 특정 사용 사례만을 위한 고급 설정이 포함되어 있습니다. 고급 설정이 특별히 필요한 경우가 아니면 권장 설정을 사용하세요.
OAC에는 서명 동작(콘솔) 또는 SigningBehavior
(API, CLI 및 AWS CloudFormation)라는 설정이 포함되어 있습니다. 이 설정은 다음 옵션을 제공합니다.
- 항상 오리진 요청에 서명(권장 설정)
-
이 설정의 이름은 콘솔에서 서명 요청(권장)이고 API, CLI, AWS CloudFormation에서
always
이며, 이 설정을 사용하는 것이 좋습니다. 이 설정을 사용하면 CloudFront가 항상 Lambda 함수 URL으로 보내는 모든 요청에 서명합니다. - 오리진 요청 서명 안 함
-
이 설정의 이름은 콘솔에서 Do not sign requests(요청 서명 안 함)이고 API, CLI, AWS CloudFormation에서
never
입니다. 이 OAC를 사용하는 모든 배포의 모든 오리진에 대한 OAC를 끄려면 이 설정을 사용합니다. OAC를 사용하는 모든 오리진 및 배포에서 OAC를 하나씩 제거하는 것과 비교하여 시간과 노력을 절약할 수 있습니다. 이 설정을 사용하면 CloudFront가 Lambda 함수 URL로 보내는 모든 요청에 서명하지 않습니다.주의
이 설정을 사용하려면 Lambda 함수 URL이 공개적으로 액세스할 수 있어야 합니다. 공개적으로 액세스할 수 없는 Lambda 함수 URL에 이 설정을 사용하는 경우 CloudFront가 오리진에 액세스할 수 없습니다. Lambda 함수 URL은 CloudFront에 오류를 반환하고 CloudFront 해당 오류를 뷰어에 전달합니다. 자세한 내용은 AWS Lambda 사용 설명서의 Lambda 함수 URL에 대한 보안 및 인증 모델을 참조하세요.
- 뷰어(클라이언트)
Authorization
헤더 재정의 안 함 -
이 설정의 이름은 콘솔에서 Do not override authorization header(승인 헤더 재정의 안 함)이고 API, CLI, AWS CloudFormation에서
no-override
입니다. 해당 뷰어 요청에Authorization
헤더가 포함되지 않은 경우에만 CloudFront에서 오리진 요청에 서명하도록 하려면 이 설정을 사용합니다. 이 설정을 사용하면 CloudFront에서는 뷰어 요청에Authorization
헤더가 있는 경우 이를 전달하지만 뷰어 요청에Authorization
헤더가 포함되어 있지 않으면 오리진 요청에 서명합니다(자체Authorization
헤더 추가).주의
-
이 설정을 사용하는 경우, Lambda 함수 URL에 대해 CloudFront 배포의 이름 또는 CNAME 대신 Signature Version 4 서명을 지정해야 합니다. CloudFront가 뷰어 요청의
Authorization
헤더를 Lambda 함수 URL로 전달하면 Lambda는 Lambda URL 도메인의 호스트에 대해 서명을 검증합니다. 서명이 Lambda URL 도메인을 기반으로 하지 않는 경우 서명의 호스트는 Lambda URL 오리진에서 사용하는 호스트와 일치하지 않습니다. 따라서 요청이 실패하여 서명 검증 오류가 발생합니다.
-
뷰어 요청에서
Authorization
헤더를 전달하려면 이 오리진 액세스 제어와 연결된 Lambda 함수 URL을 사용하는 모든 캐시 동작에 대한Authorization
헤더를 캐시 정책에 반드시 추가해야 합니다.
-