Redshift Spectrum으로 Amazon S3 버킷에 액세스 - Amazon Redshift

Redshift Spectrum으로 Amazon S3 버킷에 액세스

Amazon Redshift Spectrum은 프로비저닝된 클러스터에서 향상된 VPC 라우팅을 지원하지 않습니다. Amazon Redshift Enhanced VPC Routing은 VPC를 통과하도록 특정 트래픽을 라우팅합니다. 클러스터와 Amazon S3 버킷 사이의 모든 트래픽은 강제로 Amazon VPC를 통과합니다. Redshift Spectrum은 Amazon Redshift에서 소유한 AWS 관리형 리소스에서 실행됩니다. 이러한 리소스는 VPC 외부에 있기 때문에, Redshift Spectrum은 Enhanced VPC Routing을 사용하지 않습니다.

Redshift Spectrum과 Amazon S3 간의 트래픽은 VPC 외부에서 AWS 사설 네트워크를 통해 안전하게 라우팅됩니다. 이동 중인 트래픽은 Amazon Signature Version 4 프로토콜(SIGv4)로 서명되고 HTTPS를 사용하여 암호화됩니다. 이 트래픽에는 Amazon Redshift 클러스터에 연결된 IAM 역할을 기반으로 권한이 부여됩니다. Redshift Spectrum 트래픽을 추가로 관리하기 위해 클러스터의 IAM 역할과 Amazon S3 버킷에 연결된 정책을 수정할 수 있습니다. 또한 아래의 설명처럼 클러스터가 AWS Glue 또는 Athena에 액세스할 수 있도록 VPC를 구성해야 할 수도 있습니다.

Enhanced VPC Routing은 Amazon Redshift가 다른 리소스에 액세스하는 방식에 영향을 미치기 때문에, VPC를 올바르게 구성하지 않으면 쿼리가 실패할 수 있다는 점에 유의하세요. 자세한 내용은 Amazon S3 버킷으로 트래픽을 전송하기 위해 VPC 엔드포인트, NAT 게이트웨이 및 기타 네트워킹 리소스를 생성하는 방법에 대해 상세히 설명하는 Redshift Enhanced VPC Routing으로 네트워크 트래픽 제어 섹션을 참조하세요.

참고

Amazon Redshift Serverless는 Amazon S3의 외부 테이블에 대한 쿼리를 위한 향상된 VPC 라우팅을 지원합니다. 구성에 대한 자세한 내용은 Amazon Redshift Serverless 시작 안내서에서 Amazon S3에서 데이터 로드를 참조하세요.

Amazon Redshift Spectrum 사용 시 권한 정책 구성

Redshift Spectrum을 사용할 때는 다음을 고려하세요.

Amazon S3 버킷 액세스 정책 및 IAM 역할

버킷에 연결된 버킷 정책을 사용하고, 프로비저닝된 클러스터에 연결된 IAM 역할을 사용하여 Amazon S3 버킷에서 데이터에 대한 액세스를 제어할 수 있습니다.

프로비저닝된 클러스터의 Redshift Spectrum은 지정된 VPC 엔드포인트에 대한 액세스만 제한하는 버킷 정책을 사용하는 Amazon S3 버킷에 저장된 데이터에 액세스할 수 없습니다. 대신 특정 보안 주체(예: 특정 AWS 계정 또는 특정 사용자)에 대한 액세스를 제한하는 버킷 정책을 사용합니다.

버킷에 대한 액세스 권한이 부여된 IAM 역할의 경우 Amazon Redshift 서비스 보안 주체만 이 역할을 맡도록 허용하는 신뢰 관계를 사용합니다. 클러스터에 연결할 때 이 역할은 Amazon Redshift의 컨텍스트 내에서만 사용할 수 있으며 클러스터 외부에서는 공유할 수 없습니다. 자세한 내용은 IAM 역할에 대한 액세스 제한 단원을 참조하십시오. 서비스 제어 정책(SCP)을 사용하여 역할을 추가로 제한할 수도 있습니다. AWS Organizations 사용 설명서의 IAM 사용자 및 역할이 지정된 변경을 수행하지 못하도록 방지(지정된 관리자 역할은 제외)를 참조하세요.

참고

Redshift Spectrum을 사용하기 위해 Amazon S3의 미리 서명된 URL 사용을 차단하는 IAM 정책을 적용할 수 없습니다. Amazon Redshift Spectrum에서 생성한 미리 서명된 URL은 1시간 동안 유효하므로 Amazon Redshift가 충분한 시간을 갖고 Amazon S3 버킷에서 모든 파일을 로드할 수 있습니다. Redshift Spectrum으로 스캔한 각 파일에 대해 미리 서명된 고유한 URL이 생성됩니다. s3:signatureAge 작업이 포함된 버킷 정책의 경우 값을 최소 3,600,000밀리초로 설정해야 합니다.

다음 예 버킷 정책은 AWS 계정 123456789012가 소유한 Redshift Spectrum에서 시작된 트래픽에서만 지정된 버킷에 액세스하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "BucketPolicyForSpectrum", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::123456789012:role/redshift"] }, "Action": ["s3:GetObject", "s3:List*"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"], "Condition": { "StringEquals": { "aws:UserAgent": "AWS Redshift/Spectrum" } } }] }

IAM 역할을 맡기 위한 권한

클러스터에 연결된 역할에는 다음과 같이 Amazon Redshift 서비스에서만 이 역할을 맡을 수 있도록 허용하는 신뢰 관계가 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

특정 버킷에 대한 COPY 및 UNLOAD 액세스를 방지하는 정책을 클러스터 역할에 추가할 수 있습니다. 다음 정책은 Redshift Spectrum에서 지정된 버킷으로의 트래픽만 허용합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서Redshift Spectrum에 대한 IAM 정책 단원을 참조하세요.

Amazon S3 액세스 로깅 및 감사

Amazon Redshift Enhanced VPC Routing 사용의 한 가지 이점은 모든 COPY 및 UNLOAD 트래픽이 VPC 흐름 로그에 로깅된다는 것입니다. Redshift Spectrum에서 시작해 Amazon S3로 전송되는 트래픽이 VPC를 통과하면 안 되기 때문에 이 트래픽은 VPC 흐름 로그에 로깅되지 않습니다. Redshift Spectrum이 Amazon S3의 데이터에 액세스하는 경우 AWS 계정 및 각 역할 권한의 맥락에서 이러한 작업을 수행합니다. AWS CloudTrail 및 Amazon S3에서 서버 액세스 로깅을 사용하여 Amazon S3 액세스를 기록하고 감사할 수 있습니다.

S3 IP 범위가 허용 목록에 추가되었는지 확인합니다. 필요한 S3 IP 범위에 대한 자세한 내용은 네트워크 격리를 참조하세요.

AWS CloudTrail로그

Redshift Spectrum 액세스를 비롯해 Amazon S3의 객체에 대한 모든 액세스를 추적하려면 Amazon S3 객체에 대한 CloudTrail 로깅을 사용합니다.

CloudTrail을 사용하여 AWS 인프라 전반에서 계정 활동을 확인, 검색, 다운로드, 보관 및 응답할 수 있습니다. 자세한 내용은 CloudTrail 시작하기를 참조하십시오.

기본적으로 CloudTrail은 버킷 수준의 작업만 추적합니다. 객체 수준 작업(예: GetObject)을 추적하려면 로깅된 각 버킷에 대해 데이터 및 관리 이벤트를 활성화하십시오.

Amazon S3 서버 액세스 로깅

서버 액세스 로깅은 버킷에 대해 이루어진 요청에 따른 상세 레코드를 제공합니다. 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서서버 액세스 로깅 활성화 방법을 참조하세요.

자세한 내용은 AWS Security Blog 게시물 How to Use Bucket Policies and Apply Defense-in-Depth to Help Secure Your Amazon S3 Data를 참조하세요.

AWS Glue 또는 Amazon Athena에 액세스

Redshift Spectrum은 AWS Glue 또는 Athena에서 데이터 카탈로그에 액세스합니다. 또 다른 옵션은 데이터 카탈로그에 전용 Hive 메타스토어를 사용하는 것입니다.

AWS Glue 또는 Athena에 액세스하도록 하려면 인터넷 게이트웨이 또는 NAT 게이트웨이를 사용해 VPC를 구성합니다. AWS Glue 및 Athena의 퍼블릭 엔드포인트에 대한 아웃바운드 트래픽을 허용하도록 VPC 보안 그룹을 구성합니다. 또는 AWS Glue Data Catalog에 액세스하도록 AWS Glue의 인터페이스 VPC 엔드포인트를 구성할 수 있습니다. VPC 인터페이스 엔드포인트를 사용하는 경우 VPC와 AWS Glue 간의 통신은 AWS 네트워크에서 수행됩니다. 자세한 내용은 인터페이스 엔드포인트 생성을 참조하세요.

VPC에서 다음과 같은 경로를 구성할 수 있습니다.

  • 인터넷 게이트웨이 – VPC 외부의 AWS 서비스에 연결하기 위해 Amazon VPC 사용 설명서의 설명에 따라 인터넷 게이트웨이를 VPC 서브넷에 연결할 수 있습니다. 인터넷 게이트웨이를 사용하려면 프로비저닝된 클러스터에 다른 서비스에서 통신할 수 있는 퍼블릭 IP 주소가 있어야 합니다.

  • NAT 게이트웨이 – 다른 AWS 리전의 Amazon S3 버킷이나 AWS 네트워크 내의 다른 서비스에 연결하려면 Amazon VPC 사용 설명서에 설명된 대로 네트워크 주소 변환(NAT) 게이트웨이를 구성합니다. 이 구성은 AWS 네트워크 외부에 있는 호스트 인스턴스에 액세스하는 데에도 사용합니다.

자세한 내용은 Redshift Enhanced VPC Routing으로 네트워크 트래픽 제어 단원을 참조하십시오.