CloudFront 배포를 사용하여 Amazon S3 버킷에 대한 액세스를 제한하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷에 대한 액세스를 제한하여 사용자가 Amazon CloudFront 배포를 통해서만 객체에 액세스할 수 있도록 하고 싶습니다.

해결 방법

중요: 시작하기 전에 CloudFront 배포의 Amazon S3 오리진이 REST API 엔드포인트로 구성되어 있는지 확인합니다(예: AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com). 이 해결 방법은 웹 사이트 엔드포인트로 구성된 S3 오리진(예: AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com)에는 적용되지 않습니다. 자세한 내용은 CloudFront를 사용하여 Amazon S3에 호스팅되는 정적 웹 사이트를 서비스하려면 어떻게 해야 하나요?를 참조하세요.

옵션 1 (모범 사례): CloudFront OAC 생성

CloudFront 오리진 액세스 제어(OAC)를 생성하려면 다음 단계를 완료합니다.

  1. CloudFront 콘솔을 엽니다.
  2. 배포 목록에서 액세스를 제한하려는 S3 버킷의 콘텐츠를 제공하는 배포를 선택합니다.
  3. 오리진 탭을 선택합니다.
  4. S3 오리진을 선택한 다음 편집을 선택합니다.
  5. 오리진 액세스에서 **오리진 액세스 제어 설정(권장)**을 선택합니다.
  6. 오리진 액세스 제어의 경우 기존 OAC를 선택하거나 제어 생성 설정을 선택합니다.
  7. 대화 상자에서 제어 설정의 이름을 지정합니다. 기본 설정을 **서명 요청(권장됨)**으로 유지하는 것이 좋습니다. 
  8. 생성을 선택합니다.
  9. S3 버킷 액세스에서 정책 복사를 선택한 다음 저장을 선택하여 S3 버킷에 버킷 정책을 적용합니다.
  10. S3 버킷 권한으로 이동을 선택하여 S3 버킷 콘솔로 이동합니다.
  11. 변경 사항 저장을 선택합니다.
  12. Amazon S3 콘솔의 버킷 목록에서 CloudFront 배포의 오리진이 되는 버킷을 선택합니다.
  13. 권한 탭을 선택합니다.
  14. 버킷 정책에서 다음과 유사한 설명이 표시되는지 확인합니다.
{
    "Version": "2012-10-17",
    "Statement": {
        "Sid": "AllowCloudFrontServicePrincipalReadOnly",
        "Effect": "Allow",
        "Principal": {
            "Service": "cloudfront.amazonaws.com"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
        "Condition": {
            "StringEquals": {
                "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE"
            }
        }
    }
}

CloudFront OAC가 버킷에서 객체를 읽을 수 있도록 하려면 앞의 문을 추가해야 합니다.

참고: 버킷에 대한 액세스를 제한한 후 또 다른 보안 계층을 위해 AWS WAF를 통합할 수 있습니다.

옵션 2: 레거시 CloudFront OAI 생성

레거시 CloudFront 오리진 액세스 ID(OAI)를 생성하려면 다음 단계를 완료합니다.

  1. CloudFront 콘솔을 엽니다.
  2. 배포 목록에서 액세스를 제한하려는 S3 버킷의 콘텐츠를 제공하는 배포를 선택합니다.
  3. 오리진 탭을 선택합니다.
  4. S3 오리진을 선택한 다음 편집을 선택합니다.
  5. 오리진 액세스의 경우 레거시 액세스 ID를 선택합니다.
  6. 오리진 액세스 ID 드롭다운 목록에서 오리진 액세스 ID 이름을 선택합니다. 또는 새 OAI 생성을 선택합니다.
  7. 대화 상자에서 새 오리진 액세스 ID의 이름을 지정하고 생성을 선택합니다.
  8. 버킷 정책에서 예, 버킷 정책을 업데이트합니다를 선택합니다.
  9. 변경 사항 저장을 선택합니다.
  10. Amazon S3 콘솔의 버킷 목록에서 CloudFront 배포의 오리진이 되는 버킷을 선택합니다.
  11. 권한 탭을 선택합니다.
  12. 버킷 정책에서 다음과 유사한 설명이 표시되는지 확인합니다.
{{

"Sid": "1",

"Effect": "Allow",

"Principal": {

"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"

},

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"

}

참고: CloudFront OAI에서 버킷에 액세스하지 못하게 하는 **"Effect": "Deny"**가 있는 문이 있는지 버킷 정책을 검토합니다. CloudFront OAI가 버킷의 객체에 액세스할 수 있도록 해당 문을 수정합니다.

또한 CloudFront OAI가 아닌 모든 소스에서 버킷에 대한 액세스를 허용하는 **"Effect": "Allow"**가 있는 문이 있는지 버킷 정책을 검토합니다. 사용 사례에 맞게 해당 문을 수정합니다.

관련 정보

배포판 만들기

Amazon S3의 ID 및 액세스 관리

AWS 공식
AWS 공식업데이트됨 일 년 전