내용으로 건너뛰기

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

3분 분량
0

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

해결 방법

S3 버킷에 대한 액세스를 제한하려면 오리진 액세스 제어(OAC)를 만들거나 레거시 오리진 액세스 ID(OAI)를 만들어야 합니다. 레거시 OAI 대신 OAC를 만드는 것이 가장 좋습니다.

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

CloudFront OAC 만들기

다음 단계를 완료하십시오.

  1. CloudFront 콘솔을 엽니다.
  2. 탐색 창에서 배포를 선택한 다음, 액세스를 제한하려는 S3 버킷의 콘텐츠를 제공하는 배포를 선택합니다.
  3. 오리진 탭을 선택합니다.
  4. Amazon S3 오리진을 선택한 다음, 편집을 선택합니다.
  5. 오리진 액세스에서 **오리진 액세스 제어 설정(권장)**을 선택합니다.
  6. 오리진 액세스 제어에서 기존 OAC를 선택합니다. 또는 새 OAC 생성을 선택합니다.
  7. 대화 상자에 제어 설정의 이름을 입력합니다. 기본 설정을 **서명 요청(권장)**으로 유지하는 것이 가장 좋습니다.
  8. 생성을 선택합니다.
  9. S3 버킷 액세스에서 정책 복사를 선택합니다.
  10. 변경 사항 저장을 선택합니다.
  11. Amazon S3 콘솔을 엽니다.
  12. 탐색 창에서 범용 버킷을 선택한 다음, 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"
            }
        }
    }
}

참고: DOC-EXAMPLE-BUCKET을 버킷 이름으로 바꾸고 arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE을 CloudFront 배포 Amazon 리소스 이름(ARN)으로 바꾸십시오. CloudFront OAC가 버킷에서 객체를 읽을 수 있도록 하려면 위 명령문을 버킷 정책에 추가해야 합니다. 버킷에 대한 액세스를 제한한 후 또 다른 보안 계층을 위해 AWS WAF를 통합할 수 있습니다.

레거시 CloudFront OAI 만들기

다음 단계를 완료하십시오.

  1. CloudFront 콘솔을 엽니다.
  2. 탐색 창에서 배포를 선택한 다음, 액세스를 제한하려는 S3 버킷의 콘텐츠를 제공하는 배포를 선택합니다.
  3. 오리진 탭을 선택합니다.
  4. Amazon S3 오리진을 선택한 다음, 편집을 선택합니다.
  5. 오리진 액세스에서 레거시 액세스 ID를 선택합니다.
  6. 오리진 액세스 ID 드롭다운 목록에서 OAI 이름을 선택합니다. 또는 새 OAI 생성을 선택합니다.
  7. 대화 상자에서 새 OAI의 이름을 입력한 다음, 생성을 선택합니다.
  8. 버킷 정책에서 예, 버킷 정책 업데이트를 선택합니다.
  9. 변경 사항 저장을 선택합니다.
  10. Amazon S3 콘솔을 엽니다.
  11. 탐색 창에서 범용 버킷을 선택한 다음, CloudFront 배포의 오리진인 버킷을 선택합니다.
  12. 권한 탭을 선택합니다.
  13. 버킷 정책에서 다음 예와 유사한 명령문이 표시되는지 확인합니다.
{  
    "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/*"  
}

참고: arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX를 CloudFront 배포 ARN으로, AWS****DOC-EXAMPLE-BUCKET을 버킷 이름으로 바꾸십시오. CloudFront OAI에서 버킷에 대한 액세스를 차단하는 **"Effect": "Deny"**가 포함된 명령문이 있는지 버킷 정책을 검토하십시오. CloudFront OAI가 버킷의 객체에 액세스할 수 있도록 작업을 허용으로 변경합니다. 또한 CloudFront OAI가 아닌 모든 소스에서 버킷에 대한 액세스를 허용하는 **"Effect": **"Allow"가 포함된 명령문이 있는지 버킷 정책을 검토하십시오. 사용 사례에 맞게 해당 명령문을 수정합니다.

관련 정보

배포판 만들기

Amazon S3의 ID 및 액세스 관리