Amazon Simple Storage Service 오리진에 대한 액세스 제한 - Amazon CloudFront

Amazon Simple Storage Service 오리진에 대한 액세스 제한

CloudFront는 Amazon S3 오리진에 인증된 요청을 전송하는 두 가지 방법으로 오리진 액세스 제어(OAC)와 오리진 액세스 ID(OAI)를 제공합니다. OAC는 Amazon S3와 같은 오리진을 보호하는 데 도움이 됩니다. OAC는 다음을 지원하므로 OAC를 사용하는 것이 좋습니다.

  • 2022년 12월 이후에 출시된 옵트인 리전을 포함하여 모든 AWS 리전 리전의 모든 Amazon S3 버킷

  • Amazon S3 AWS KMS를 사용한 서버 측 암호화(SSE-KMS)

  • Amazon S3에 대한 동적 요청(PUTDELETE)

오리진 액세스 ID(OAI)는 위 목록의 시나리오에서 작동하지 않거나 이러한 시나리오에서 추가 해결 방법이 필요합니다. 다음 주제에서는 Amazon S3 오리진에서 오리진 액세스 제어(OAC)를 사용하는 방법을 설명합니다. 오리진 액세스 ID(OAI)에서 오리진 액세스 제어(OAC)로 마이그레이션 하는 방법에 대한 자세한 내용은 오리진 액세스 ID(OAI)에서 오리진 액세스 제어(OAC)로 마이그레이션 섹션을 참조하세요.

참고
  • Amazon S3 버킷 오리진과 함께 CloudFront OAC를 사용하는 경우 Amazon S3 객체 소유권을 새 Amazon S3 버킷의 기본값인 버킷 소유자 적용으로 설정해야 합니다. ACL이 필요한 경우 버킷 소유자 선호 설정을 사용하여 CloudFront를 통해 업로드된 객체에 대한 제어를 유지합니다.

  • 오리진이 웹 사이트 엔드포인트로 구성된 Amazon S3 버킷인 경우 사용자 지정 오리진으로 CloudFront와 함께 버킷을 설정해야 합니다. 즉, OAC(또는 OAI)를 사용할 수 없습니다. OAC는 Lambda@Edge를 사용한 오리진 리디렉션을 지원하지 않습니다.

주제

새로운 오리진 액세스 제어 생성

다음 주제에 설명된 단계를 완료하여 CloudFront에서 새 오리진 액세스 제어를 설정합니다.

필수 조건

오리진 액세스 제어(OAC)를 생성하고 설정하기 전에 Amazon S3 버킷 오리진과 함께 CloudFront 배포가 있어야 합니다. 이 오리진은 웹 사이트 엔드포인트로 구성된 버킷이 아니라 일반 S3 버킷이어야 합니다. S3 버킷 오리진과 함께 CloudFront 배포를 설정하는 방법에 대한 자세한 내용은 기본 CloudFront 배포 시작하기 섹션을 참조하세요.

참고

OAC를 사용하여 S3 버킷 오리진을 보호하는 경우 특정 설정과 상관없이 CloudFront와 Amazon S3 간의 통신은 항상 HTTPS를 통해 이루어집니다.

S3 버킷에 액세스할 수 있는 오리진 액세스 제어 권한 부여

오리진 액세스 제어(OAC)를 생성하거나 CloudFront 배포에서 이를 설정하기 전에 OAC에 S3 버킷 오리진에 액세스할 수 있는 권한이 있는지 확인합니다. 이 작업은 CloudFront 배포를 생성한 후 배포 구성에서 S3 오리진에 OAC를 추가하기 전에 수행해야 합니다.

OAC에 S3 버킷에 액세스할 수 있는 권한을 부여하려면 S3 버킷 정책을 사용하여 CloudFront 서비스 보안 주체(cloudfront.amazonaws.com)가 버킷에 액세스하도록 허용합니다. 정책의 Condition 요소를 사용하여 S3 오리진이 포함된 CloudFront 배포를 위한 요청인 경우에만 CloudFront에서 버킷에 액세스하도록 허용합니다.

버킷 정책 추가 또는 수정에 대한 자세한 내용은 Amazon S3 사용 설명서의 Amazon S3 콘솔을 사용하여 버킷 정책 추가를 참조하세요.

다음은 CloudFront OAC가 S3 오리진에 액세스할 수 있도록 허용하는 S3 버킷 정책의 예입니다.

예 CloudFront OAC에 대한 읽기 전용 액세스를 허용하는 S3 버킷 정책
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" } } } }
예 CloudFront OAC에 대한 읽기 및 쓰기 액세스를 허용하는 S3 버킷 정책
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" } } } }

SSE-KMS

S3 버킷 오리진의 객체가 AWS Key Management Service(SSE-KMS)로 서버 측 암호화를 사용하여 암호화된 경우 OAC에 AWS KMS 키를 사용할 권한이 있는지 확인해야 합니다. OAC에 KMS 키를 사용할 수 있는 권한을 부여하려면 KMS 키 정책에 명령문을 추가합니다. 키 정책을 수정하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서키 정책 변경을 참조하세요.

다음 예에서는 OAC에서 KMS 키를 사용할 수 있도록 허용하는 KMS 키 정책 명령문을 보여줍니다.

예 CloudFront OAC가 SSE-KMS용 KMS 키에 액세스할 수 있도록 허용하는 KMS 키 정책 명령문
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "Service": [ "cloudfront.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" } } }

오리진 액세스 제어 생성

오리진 액세스 제어(OAC)를 생성하려면 AWS Management Console, AWS CloudFormation, AWS CLI 또는 CloudFront API를 사용할 수 있습니다.

Console
오리진 액세스 제어를 생성하려면
  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home에서 CloudFront 콘솔을 엽니다.

  2. 탐색 창에서 Origin access(원본 액세스)를 선택합니다.

  3. Create control setting(제어 설정 생성)을 선택합니다.

  4. Create control setting(제어 설정 생성) 양식을 사용하여 다음을 수행합니다.

    1. Details(세부 정보) 창에서 오리진 액세스 제어의 Name(이름) 및 선택적 Description(설명)을 입력합니다.

    2. Settings(설정) 창에서 기본 설정인 Sign requests(recommended)(요청 서명(권장))를 유지하는 것이 좋습니다. 자세한 내용은 오리진 액세스 제어를 위한 고급 설정 단원을 참조하십시오.

  5. Origin type(오리진 유형) 드롭다운에서 S3를 선택합니다.

  6. 생성(Create)을 선택합니다.

    OAC를 생성한 후 Name(이름)을 기록해 둡니다. 다음 절차에서 필요합니다.

배포의 S3 오리진에 오리진 액세스 제어를 추가하려면
  1. 에서 CloudFront 콘솔을 엽니다https://console.aws.amazon.com/cloudfront/v4/home

  2. OAC를 추가하려는 S3 오리진이 있는 배포를 선택한 다음 Origins(원본) 탭을 선택합니다.

  3. OAC를 추가할 S3 오리진을 선택한 다음 Edit(편집)을 선택합니다.

  4. 원본 액세스의 경우 원본 액세스 제어 설정(권장)를 선택합니다.

  5. Origin access control(원본 액세스 제어) 드롭다운 메뉴에서 사용할 OAC를 선택합니다.

  6. Save changes(변경 사항 저장)를 선택합니다.

모든 CloudFront 엣지 로케이션에 배포가 시작됩니다. 엣지 로케이션은 새 구성을 수신하면 S3 버킷 오리진으로 보내는 모든 요청에 서명합니다.

CloudFormation

AWS CloudFormation에 오리진 액세스 제어(OAC)를 생성하려면 AWS::CloudFront::OriginAccessControl 리소스 유형을 사용합니다. 다음 예는 오리진 액세스 제어를 생성하기 위한 YAML 형식의 AWS CloudFormation 템플릿 구문을 보여줍니다.

Type: AWS::CloudFront::OriginAccessControl Properties: OriginAccessControlConfig: Description: An optional description for the origin access control Name: ExampleOAC OriginAccessControlOriginType: s3 SigningBehavior: always SigningProtocol: sigv4

자세한 내용은 AWS CloudFormation 사용 설명서AWS::CloudFront::OriginAccessControl을 참조하세요.

CLI

AWS Command Line Interface(AWS CLI)를 사용하여 오리진 액세스 제어를 생성하려면 aws cloudfront create-origin-access-control 명령을 사용합니다. 각 개별 파라미터를 명령줄 입력으로 지정하는 대신 입력 파일을 사용하여 명령의 입력 파라미터를 제공할 수 있습니다.

오리진 액세스 제어를 생성하려면(입력 파일과 CLI)
  1. 다음 명령을 사용하여 이름이 origin-access-control.yaml인 파일을 생성합니다. 이 파일에는 create-origin-access-control 명령에 대한 모든 입력 파라미터가 들어 있습니다.

    aws cloudfront create-origin-access-control --generate-cli-skeleton yaml-input > origin-access-control.yaml
  2. 방금 생성한 origin-access-control.yaml 파일을 엽니다. 파일을 편집하여 OAC의 이름, 설명(선택 사항)을 추가하고 SigningBehavioralways로 변경합니다. 그런 다음 파일을 저장합니다.

    다른 OAC 설정에 대한 자세한 내용은 오리진 액세스 제어를 위한 고급 설정 섹션을 참조하세요.

  3. 다음 명령으로 origin-access-control.yaml 파일의 입력 파라미터를 사용하여 오리진 액세스 제어를 만듭니다.

    aws cloudfront create-origin-access-control --cli-input-yaml file://origin-access-control.yaml

    명령 출력에 있는 Id 값을 기록해 둡니다. CloudFront 배포의 S3 버킷 오리진에 OAC를 추가하려면 필요합니다.

OAC를 기존 배포의 S3 버킷 오리진에 연결하려면(입력 파일과 CLI)
  1. 다음 명령을 사용하여 OAC를 추가할 CloudFront 배포에 대한 배포 구성을 저장합니다. 배포에는 S3 버킷 오리진이 있어야 합니다.

    aws cloudfront get-distribution-config --id <CloudFront distribution ID> --output yaml > dist-config.yaml
  2. 방금 생성한 dist-config.yaml이라는 파일을 엽니다. 파일을 편집하여 다음과 같이 변경합니다.

    • Origins 객체에서 OriginAccessControlId라는 필드에 OAC의 ID를 추가합니다.

    • OriginAccessIdentity라는 필드에서 값을 제거합니다(있는 경우).

    • ETag 필드의 이름을 IfMatch로 바꾸지만 필드 값은 변경하지 마세요.

    완료되면 파일을 저장합니다.

  3. 오리진 액세스 제어를 사용하도록 배포를 업데이트하려면 다음 명령을 사용합니다.

    aws cloudfront update-distribution --id <CloudFront distribution ID> --cli-input-yaml file://dist-config.yaml

모든 CloudFront 엣지 로케이션에 배포가 시작됩니다. 엣지 로케이션은 새 구성을 수신하면 S3 버킷 오리진으로 보내는 모든 요청에 서명합니다.

API

CloudFront API를 사용하여 오리진 액세스 제어를 생성하려면 CreateOriginAccessControl을 사용합니다. 이 API 호출에서 지정하는 필드에 대한 자세한 내용은 AWS SDK 또는 기타 API 클라이언트에 대한 API 참조 설명서를 참조하세요.

오리진 액세스 제어를 생성한 후 다음 API 호출 중 하나를 사용하여 배포의 S3 버킷 오리진에 연결할 수 있습니다.

이 두 API 호출에 대해 오리진 내부의 OriginAccessControlId 필드에 오리진 액세스 제어 ID를 제공합니다. 이러한 API 호출에서 지정하는 다른 필드에 대한 자세한 내용은 배포를 만들거나 업데이트할 때 지정하는 값와 AWS SDK 또는 기타 API 클라이언트에 대한 API 참조 설명서를 참조하세요.

S3 버킷에 OAC가 연결된 배포 삭제

S3 버킷에 OAC가 연결된 배포를 삭제해야 하는 경우 S3 버킷 오리진을 삭제하기 전에 배포를 삭제해야 합니다. 또는 오리진 도메인 이름에 지역을 포함시킬 수도 있습니다. 이렇게 할 수 없는 경우 삭제하기 전에 공개로 전환하여 배포에서 OAC를 제거할 수 있습니다. 자세한 내용은 배포 삭제 단원을 참조하십시오.

오리진 액세스 ID(OAI)에서 오리진 액세스 제어(OAC)로 마이그레이션

레거시 오리진 액세스 ID(OAI)에서 오리진 액세스 제어(OAC)로 마이그레이션하려면 먼저 S3 버킷 오리진을 업데이트하여 OAI와 OAC가 버킷 콘텐츠에 액세스할 수 있도록 합니다. 이렇게 하면 전환 중에 CloudFront가 버킷에 대한 액세스 권한을 잃지 않습니다. OAI와 OAC가 모두 S3 버킷에 액세스할 수 있도록 하려면 각 보안 주체에 대해 하나씩 두 개의 명령문을 포함하도록 버킷 정책을 업데이트합니다.

다음 예제 S3 버킷 정책은 OAI와 OAC 모두가 S3 오리진에 액세스할 수 있도록 허용합니다.

예 OAI 및 OAC에 대한 읽기 전용 액세스를 허용하는 S3 버킷 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" } } }, { "Sid": "AllowLegacyOAIReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <origin access identity ID>" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>/*" } ] }

OAI와 OAC에 대한 액세스를 모두 허용하도록 S3 오리진의 버킷 정책을 업데이트한 후 OAI 대신 OAC를 사용하도록 배포 구성을 업데이트할 수 있습니다. 자세한 내용은 새로운 오리진 액세스 제어 생성 단원을 참조하십시오.

배포가 완전히 배포되면 버킷 정책에서 OAI에 대한 액세스를 허용하는 명령문을 제거할 수 있습니다. 자세한 내용은 S3 버킷에 액세스할 수 있는 오리진 액세스 제어 권한 부여 단원을 참조하십시오.

오리진 액세스 제어를 위한 고급 설정

CloudFront 오리진 액세스 제어 기능에는 특정 사용 사례만을 위한 고급 설정이 포함되어 있습니다. 고급 설정이 특별히 필요한 경우가 아니면 권장 설정을 사용하세요.

오리진 액세스 제어에는 Signing behavior(서명 동작)(콘솔) 또는 SigningBehavior(API, CLI 및 AWS CloudFormation)라는 설정이 포함되어 있습니다. 이 설정은 다음 옵션을 제공합니다.

항상 오리진 요청에 서명(권장 설정)

이 설정의 이름은 콘솔에서 Sign requests(recommended)(서명 요청(권장))이고 API, CLI, AWS CloudFormation에서 always이며, 이 설정을 사용하는 것이 좋습니다. 이 설정을 사용하면 CloudFront가 항상 S3 버킷 오리진으로 보내는 모든 요청에 서명합니다.

오리진 요청 서명 안 함

이 설정의 이름은 콘솔에서 Do not sign requests(요청 서명 안 함)이고 API, CLI, AWS CloudFormation에서 never입니다. 이 오리진 액세스 제어를 사용하는 모든 배포의 모든 오리진에 대한 오리진 액세스 제어를 끄려면 이 설정을 사용합니다. 오리진 액세스 제어를 사용하는 모든 오리진 및 배포에서 오리진 액세스 제어를 하나씩 제거하는 것과 비교하여 시간과 노력을 절약할 수 있습니다. 이 설정을 사용하면 CloudFront가 S3 버킷 오리진으로 보내는 모든 요청에 서명하지 않습니다.

주의

이 설정을 사용하려면 S3 버킷 오리진에 공개적으로 액세스할 수 있어야 합니다. 공개적으로 액세스할 수 없는 S3 버킷 오리진에 이 설정을 사용하는 경우 CloudFront가 오리진에 액세스할 수 없습니다. S3 버킷 오리진은 CloudFront에 오류를 반환하고 CloudFront 해당 오류를 뷰어에 전달합니다.

뷰어(클라이언트) Authorization 헤더 재정의 안 함

이 설정의 이름은 콘솔에서 Do not override authorization header(승인 헤더 재정의 안 함)이고 API, CLI, AWS CloudFormation에서 no-override입니다. 해당 뷰어 요청에 Authorization 헤더가 포함되지 않은 경우에만 CloudFront에서 오리진 요청에 서명하도록 하려면 이 설정을 사용합니다. 이 설정을 사용하면 CloudFront에서는 뷰어 요청에 Authorization 헤더가 있는 경우 이를 전달하지만 뷰어 요청에 Authorization 헤더가 포함되어 있지 않으면 오리진 요청에 서명합니다(자체 Authorization 헤더 추가).

주의

뷰어 요청에서 Authorization 헤더를 전달하려면 이 오리진 액세스 제어와 연결된 S3 버킷 오리진을 사용하는 모든 캐시 동작에 대한 Authorization 헤더를 캐시 정책반드시 추가해야 합니다.

오리진 액세스 ID 사용(레거시, 권장하지 않음)

CloudFront 오리진 액세스 ID(OAI)는 오리진 액세스 제어(OAC)와 유사한 기능을 제공하지만 모든 시나리오에서 기능이 작동하는 것은 아닙니다. 따라서 OAC를 대신 사용하는 것이 좋습니다. 특히 OAI는 다음을 지원하지 않습니다.

  • 옵트인 리전을 포함한 모든 AWS 리전의 Amazon S3 버킷

  • Amazon S3 AWS KMS를 사용한 서버 측 암호화(SSE-KMS)

  • Amazon S3에 대한 동적 요청(PUT, POST 또는 DELETE)

  • 2022년 12월 이후 출시된 새로운 AWS 리전

OAI에서 OAC로 마이그레이션하는 방법에 대한 자세한 내용은 오리진 액세스 ID(OAI)에서 오리진 액세스 제어(OAC)로 마이그레이션 섹션을 참조하세요.

OAI를 생성하거나 CloudFront 콘솔을 사용하여 배포에 추가할 때 Amazon S3 버킷 정책을 자동으로 업데이트하여 OAI에 버킷 액세스 권한을 부여할 수 있습니다. 또는 버킷 정책을 수동으로 생성하거나 업데이트하도록 선택할 수 있습니다. 어떤 방법을 사용하든 권한을 검토하여 다음 사항을 확인하세요.

  • CloudFront를 통해 파일을 요청하는 최종 사용자를 대신하여 CloudFront OAI가 버킷의 파일에 액세스할 수 있습니다.

  • 최종 사용자는 Amazon S3 URL을 사용하여 CloudFront 외부의 파일에 액세스할 수 없습니다.

중요

CloudFront가 지원하는 모든 HTTP 메서드를 수락하고 전달하도록 CloudFront를 구성하는 경우 CloudFront OAI에 원하는 권한을 부여해야 합니다. 예를 들어 DELETE 메서드를 사용하는 요청을 수락하고 전달하도록 CloudFront를 구성하는 경우, 뷰어가 원하는 파일만 삭제할 수 있도록 DELETE 요청을 적절하게 처리하도록 버킷 정책을 구성합니다.

Amazon S3 버킷 정책 사용

다음과 같은 방법으로 버킷 정책을 만들거나 업데이트하여 Amazon S3 버킷의 파일에 대한 액세스 권한을 CloudFront OAI에 부여할 수 있습니다.

  • Amazon S3 콘솔에서 Amazon S3 버킷의 Permissions(권한) 탭 사용

  • Amazon S3 API에서 PutBucketPolicy 사용

  • CloudFront 콘솔 사용 OAI를 CloudFront 콘솔의 원본 설정에 추가할 때 예, 버킷 정책을 업데이트합니다(Yes, update the bucket policy)를 선택하여 사용자를 대신해 버킷 정책을 업데이트하도록 CloudFront에 지시할 수 있습니다.

버킷 정책을 수동으로 업데이트하는 경우 다음 사항을 확인하세요.

  • 정책에서 올바른 OAI를 Principal로 지정합니다.

  • 최종 사용자를 대신해 객체에 액세스하는 데 필요한 권한을 OAI에 부여합니다.

자세한 내용은 다음 단원을 참조하세요.

버킷 정책에서 OAI를 Principal로 지정

Amazon S3 버킷 정책에서 OAI를 Principal로 지정하려면 OAI ID가 포함된 OAI의 Amazon 리소스 이름(ARN)을 사용합니다. 예:

"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <origin access identity ID>" }

CloudFront 콘솔의 보안, 오리진 액세스, ID(레거시)에서 OAI ID를 찾습니다. 또는 CloudFront API의 ListCloudFrontOriginAccessIdentities를 사용할 수도 있습니다.

OAI에 권한 부여

OAI에 Amazon S3 버킷의 객체에 액세스할 수 있는 권한을 부여하려면 정책에서 특정 Amazon S3 API 작업과 관련된 작업을 사용합니다. 예를 들어 s3:GetObject 작업을 통해 OAI가 버킷의 객체를 읽을 수 있습니다. 자세한 내용은 다음 섹션의 예제를 참조하거나 Amazon Simple Storage Service 사용 설명서Amazon S3 작업을 참조하세요.

Amazon S3 버킷 정책 예제

다음 예제에서는 CloudFront OAI가 S3 버킷에 액세스하도록 허용하는 Amazon S3 버킷 정책을 보여줍니다.

CloudFront 콘솔의 보안, 오리진 액세스, ID (레거시)에서 OAI ID를 찾을 수 있습니다. 또는 CloudFront API의 ListCloudFrontOriginAccessIdentities를 사용할 수도 있습니다.

예 OAI에 읽기 액세스 권한을 부여하는 Amazon S3 버킷 정책

다음 예제에서는 OAI가 지정된 버킷(s3:GetObject)의 객체를 읽을 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <origin access identity ID>" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>/*" } ] }
예 OAI에 읽기 및 쓰기 액세스 권한을 부여하는 Amazon S3 버킷 정책

다음 예제에서는 OAI가 지정된 버킷(s3:GetObjects3:PutObject)의 객체를 읽고 쓸 수 있도록 허용합니다. 이렇게 하면 최종 사용자가 CloudFront를 통해 Amazon S3 버킷에 파일을 업로드할 수 있습니다.

{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <origin access identity ID>" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>/*" } ] }

Amazon S3 객체 ACL 사용(권장되지는 않음)

중요

Amazon S3 버킷 정책을 사용하여 OAI에 S3 버킷에 대한 액세스 권한을 부여하는 것이 좋습니다. 이 섹션에 설명된 대로 액세스 제어 목록(ACL)을 사용할 수 있지만, 권장하지는 않습니다.

Amazon S3는 S3 객체 소유권버킷 소유자 적용으로 설정할 것을 권장합니다. 즉, 버킷 및 그 안의 객체에 대해 ACL이 비활성화됩니다. 객체 소유권에 이 설정을 적용하는 경우 버킷 정책을 사용하여 OAI에 대한 액세스 권한을 부여해야 합니다(이전 섹션 참조).

다음 섹션은 ACL이 필요한 레거시 사용 사례에만 해당됩니다.

다음과 같은 방법으로 파일의 ACL을 만들거나 업데이트하여 Amazon S3 버킷의 파일에 대한 액세스 권한을 CloudFront OAI에 부여할 수 있습니다.

ACL을 사용하여 OAI에 액세스 권한을 부여하는 경우 Amazon S3 정식 사용자 ID를 사용하여 OAI를 지정해야 합니다. CloudFront 콘솔의 보안, 오리진 액세스, ID (레거시)에서 이 ID를 찾을 수 있습니다. CloudFront API를 사용하는 경우, OAI를 만들 때 반환된 S3CanonicalUserId 요소의 값을 사용하거나 CloudFront API에서 ListCloudFrontOriginAccessIdentities를 호출합니다.

새 Amazon S3 리전에서는 인증된 요청에 대해 서명 버전 4를 사용해야 합니다. (각 Amazon S3 리전에서 지원되는 서명 버전은 AWS 일반 참조Amazon Simple Storage Service 엔드포인트 및 할당량을 참조하세요.) 오리진 액세스 ID를 사용 중이고 버킷이 서명 버전 4가 필요한 리전 중 하나에 있는 경우 다음에 유의해야 합니다.

  • DELETE, GET, HEAD, OPTIONSPATCH 요청은 자격과 관계없이 지원됩니다.

  • POST 요청은 지원되지 않습니다.