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

3분 분량
0

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

해결 방법

중요: 시작하기 전에 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) 생성

  1. CloudFront 콘솔을 엽니다.
  2. 배포 목록에서 액세스를 제한하려는 S3 버킷의 콘텐츠를 서비스하는 배포를 선택합니다.
  3. 오리진 탭을 선택합니다.
  4. S3 오리진을 선택하고 Edit(편집)을 선택합니다.
  5. Origin Access(오리진 액세스)에서 Origin access control settings(오리진 액세스 제어 설정)(권장)을 선택합니다.
  6. Origin access control(오리진 액세스 제어)의 경우 기존 OAC를 선택하거나 Create Control(제어 생성) 설정을 선택합니다.
  7. 대화 상자에서 컨트롤 설정의 이름을 지정합니다. 기본 설정인 **서명 요청(권장)**을 그대로 두는 것이 좋습니다. 그런 다음 생성을 선택합니다.
  8. S3 버킷 액세스의 경우 S3 버킷에 버킷 정책을 적용합니다. 정책 복사를 선택한 다음 저장을 선택합니다.
  9. S3 버킷 권한으로 이동을 선택하면 S3 버킷 콘솔로 이동합니다.
  10. 변경 사항 저장을 선택합니다.
  11. Amazon S3 콘솔의 버킷 목록에서 CloudFront 배포의 오리진 버킷을 선택합니다.
  12. 권한 탭을 선택합니다.
  13. 버킷 정책에서 다음과 같은 문이 표시되는지 확인합니다.
{
    "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가 버킷에서 객체를 읽을 수 있도록 하려면 선행 문을 추가해야 합니다.

참고: CloudFront OAC를 사용하여 버킷에 대한 액세스를 제한한 후에 선택적으로 AWS WAF를 통합하여 또 다른 보안 계층을 추가할 수 있습니다.

옵션 2: 레거시 CloudFront 오리진 액세스 ID(OAI) 생성

  1. CloudFront 콘솔을 엽니다.
  2. 배포 목록에서 액세스를 제한하려는 S3 버킷의 콘텐츠를 서비스하는 배포를 선택합니다.
  3. 오리진 탭을 선택합니다.
  4. S3 오리진을 선택하고 Edit(편집)을 선택합니다.
  5. 오리진 액세스에서 Legacy access identities(리거시 액세스 ID)를 선택합니다.
  6. 오리진 액세스 ID 드롭다운 목록에서 오리진 액세스 ID 이름을 선택하거나 Create new OAI(새 OAI 생성)을 선택합니다.
  7. 대화 상자에서 새 오리진 액세스 ID의 이름을 지정하고 Create(생성)을 선택합니다.
  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의 Identity and Access Management

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