Amazon Redshift의 인프라 보안 - Amazon Redshift

Amazon Redshift의 인프라 보안

관리형 서비스인 Amazon Redshift는 AWS 글로벌 네트워크 보안으로 보호됩니다. AWS 보안 서비스와 AWS의 인프라 보호 방법에 대한 자세한 내용은 AWS 클라우드 보안을 참조하세요. 인프라 보안에 대한 모범 사례를 사용하여 AWS 환경을 설계하려면 보안 원칙 AWS Well‐Architected Framework인프라 보호를 참조하세요.

AWS에서 게시한 API 호출을 사용하여 네트워크를 통해 Amazon Redshift에 액세스합니다. 고객은 다음을 지원해야 합니다.

  • Transport Layer Security(TLS) TLS 1.2는 필수이며 TLS 1.3을 권장합니다.

  • DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Ephemeral Diffie-Hellman)와 같은 완전 전송 보안(PFS)이 포함된 암호 제품군 Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

또한 요청은 액세스 키 ID 및 IAM 주체와 관련된 비밀 액세스 키를 사용하여 서명해야 합니다. 또는 AWS Security Token Service(AWS STS)을 사용하여 임시 보안 자격 증명을 생성하여 요청에 서명할 수 있습니다.

네트워크 격리

Amazon VPC 서비스 기반의 Virtual Private Cloud(VPC)는 AWS 클라우드에서 개인적이고 논리적으로 격리된 네트워크입니다. 다음 단계를 수행하여 VPC 내에 Amazon Redshift 클러스터 또는 Redshift Serverless 작업 그룹을 배포할 수 있습니다.

Amazon Redshift 클러스터는 프로비저닝 시 기본적으로 잠금 상태입니다. Amazon Redshift 클라이언트로부터 들어오는 인바운드 네트워크 트래픽을 허용하려면 VPC 보안 그룹을 Amazon Redshift 클러스터에 연결합니다. 자세한 내용은 Redshift 리소스의 서브넷 단원을 참조하십시오.

특정 IP 주소 범위에서 들어 오고 나가는 트래픽만 허용하려면 VPC에서 보안 그룹을 업데이트합니다. 예를 들어 기업 네트워크에서 들어오고 나가는 트래픽만 허용할 수 있습니다.

Amazon Redshift 클러스터가 태깅된 서브넷과 관련한 네트워크 액세스 제어 목록을 구성하는 동안 각 AWS 리전의 S3 CIDR 범위를 수신 및 송신 규칙 모두의 허용 목록에 추가해야 합니다. 이렇게 하면 Redshift Spectrum, COPY 및 UNLOAD와 같은 S3 기반 작업을 중단 없이 실행할 수 있습니다.

다음 예제 명령은 us-east-1 리전의 Amazon S3에 사용된 모든 IPv4 주소에 대한 JSON 응답을 구문 분석합니다.

curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="S3") | .ip_prefix' 54.231.0.0/17 52.92.16.0/20 52.216.0.0/15

특정 리전의 S3 IP 범위를 가져오는 방법에 대한 지침은 AWS IP 주소 범위를 참조하세요.

Amazon Redshift는 클러스터를 전용 테넌시 VPC에 배포하도록 지원합니다. 자세한 내용은 Amazon EC2 User GuideDedicated instances를 참조하세요.

Amazon Redshift 보안 그룹

Amazon Redshift 클러스터를 프로비저닝할 때는 기본적으로 아무도 액세스하지 못하도록 클러스터가 잠깁니다. 이때 다른 사용자에게 Amazon Redshift 클러스터에 대한 인바운드 액세스 권한을 부여하려면 클러스터를 보안 그룹과 연결해야 합니다. EC2-VPC 플랫폼을 사용하는 기존 Amazon VPC 보안 그룹을 사용하거나, 혹은 새로운 보안 그룹을 정의한 후 클러스터와 연결할 수도 있습니다. EC2-VPC 플랫폼을 기반으로 클러스터를 관리하는 방법에 대한 자세한 내용은 VPC의 Redshift 리소스 단원을 참조하십시오.

인터넷을 통해 연결하는 대신 Virtual Private Cloud(VPC)의 VPC 엔드포인트(AWS PrivateLink) 인터페이스를 사용하여 Amazon Redshift 및 Amazon Redshift Serverless API 서비스에 직접 연결할 수 있습니다. Amazon Redshift API 작업에 대한 자세한 내용은 Amazon Redshift API ReferenceActions를 참조하세요. Redshift Serverless API 작업에 대한 자세한 내용은 Amazon Redshift Serverless API 참조의 작업을 참조하세요. AWS PrivateLink에 대한 자세한 내용은 Amazon VPC 사용 설명서인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참조하세요. 클러스터 또는 작업 그룹에 대한 JDBC/ODBC 연결은 Amazon Redshift API 서비스의 일부가 아닙니다.

인터페이스 VPC 엔드포인트를 사용하는 경우 VPC와 Amazon Redshift 또는 Redshift Serverless 사이의 통신은 모두 AWS 네트워크에서 수행되므로 더 안전할 수 있습니다. 각 VPC 엔드포인트는 하나 이상의 탄력적 네트워크 인터페이스 및 VPC 서브넷의 프라이빗 IP 주소로 표현됩니다. 탄력적 네트워크 인터페이스에 대한 자세한 내용은 Amazon EC2 사용 설명서탄력적 네트워크 인터페이스를 참조하세요.

인터페이스 VPC 엔드포인트는 VPC를 Amazon Redshift에 직접 연결합니다. 인터넷 게이트웨이, NAT(Network Address Translation) 장치, 가상 사설 네트워크(VPN) 연결 또는AWS Direct Connect 연결을 사용하지 않습니다. VPC에 있는 인스턴스는 퍼블릭 IP 주소가 없어도 Amazon Redshift API와 통신할 수 있습니다.

2가지 옵션으로 VPC를 통해 Amazon Redshift 또는 Redshift Serverless를 사용할 수 있습니다. 하나는 VPC 내부에 있는 인스턴스에서 연결하는 것입니다. 다른 하나는 AWS VPN 옵션이나 AWS Direct Connect를 사용하여 사설망을 VPC에 연결하는 것입니다. AWS VPN 옵션에 대한 자세한 내용은 Amazon VPC 사용 설명서VPN 연결을 참조하세요. AWS Direct Connect에 대한 자세한 내용은 AWS Direct Connect 사용 설명서연결 생성을 참조하세요.

AWS Management Console 또는 AWS Command Line Interface(AWS CLI) 명령을 사용하여 Amazon Redshift에 연결할 인터페이스 VPC 엔드포인트를 생성할 수 있습니다. 자세한 내용은 인터페이스 엔드포인트 생성을 참조하세요.

인터페이스 VPC 엔드포인트를 생성한 후 엔드포인트에 대한 프라이빗 DNS 호스트 이름을 사용할 수 있습니다. 그렇게 하면 기본 엔드포인트는 다음과 같습니다.

  • Amazon Redshift 프로비저닝: https://redshift.Region.amazonaws.com

  • Amazon Redshift Serverless: https://redshift-serverless.Region.amazonaws.com

프라이빗 DNS 호스트 이름을 사용하지 않는 경우 Amazon VPC는 다음 형식으로 사용할 수 있는 DNS 엔드포인트 이름을 제공합니다.

  • Amazon Redshift 프로비저닝: VPC_endpoint_ID.redshift.Region.vpce.amazonaws.com

  • Amazon Redshift Serverless: VPC_endpoint_ID.redshift-serverless.Region.vpce.amazonaws.com

자세한 내용은 Amazon VPC 사용 설명서인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참조하세요.

Amazon Redshift 및 Redshift Serverless는 VPC 내의 모든 Amazon Redshift API 작업Redshift Serverless API 작업에 대한 직접 호출을 지원합니다.

VPC 엔드포인트 정책을 VPC 엔드포인트에 연결하여 AWS Identity and Access Management(IAM) 보안 주체에 대한 액세스를 제어할 수 있습니다. 보안 그룹을 VPC 엔드포인트와 연결하여 네트워크 트래픽의 소스와 대상을 기반으로 인바운드 및 아웃바운드 액세스를 제어할 수도 있습니다. 예는 IP 주소의 범위입니다. 자세한 내용은 Amazon VPC 사용 설명서VPC 엔드포인트를 통해 서비스에 대한 액세스 제어를 참조하세요.

Amazon Redshift에 대한 VPC 엔드포인트 정책을 생성하여 다음을 지정할 수 있습니다.

  • 작업을 수행할 수 있거나 수행할 수 없는 보안 주체

  • 수행할 수 있는 작업

  • 작업을 수행할 수 있는 리소스

자세한 내용은 Amazon VPC 사용 설명서의 VPC 엔드포인트를 통해 서비스에 대한 액세스 제어를 참조하세요.

다음으로 VPC 엔드포인트 정책의 예를 찾아볼 수 있습니다.

다음으로 Amazon Redshift 프로비저닝에 대한 VPC 엔드포인트 정책의 예제를 찾아볼 수 있습니다.

다음 VPC 엔드포인트 정책은 AWS 계정 123456789012가 이 엔드포인트를 사용하는 리소스에 대한 모든 액세스를 거부합니다.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

다음 VPC 엔드포인트 정책은 AWS 계정 123456789012의 IAM 역할 redshiftrole에만 전체 액세스 권한을 허용합니다. 다른 모든 IAM 보안 주체는 엔드포인트를 사용하는 액세스가 거부됩니다.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/redshiftrole" ] } }] }

이것은 예시입니다. 대부분의 사용 사례에서는 특정 작업에 권한을 연결하여 권한 범위를 좁히는 것이 좋습니다.

다음 VPC 엔드포인트 정책은 AWS 계정 123456789012의 IAM 사용자 redshiftadmin에게만 전체 액세스 권한을 허용합니다. 다른 모든 IAM 보안 주체는 엔드포인트를 사용하는 액세스가 거부됩니다.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/redshiftadmin" ] } }] }

이것은 예시입니다. 대부분의 사용 사례에서는 사용자에게 할당하기 전에 역할에 권한을 연결하는 것이 좋습니다. 또한 특정 작업을 사용하여 권한 범위를 좁히는 것이 좋습니다.

다음 VPC 엔드포인트 정책은 AWS 계정 123456789012만 지정된 Amazon Redshift 작업을 수행할 수 있도록 허용합니다.

지정된 작업은 Amazon Redshift에 대한 읽기 전용 액세스 권한을 제공합니다. VPC의 다른 모든 작업은 지정된 계정에 대해 거부됩니다. 다른 모든 계정의 액세스도 거부됩니다. Amazon Redshift 작업 목록은 IAM User GuideActions, Resources, and Condition Keys for Amazon Redshift를 참조하세요.

{ "Statement": [ { "Action": [ "redshift:DescribeAccountAttributes", "redshift:DescribeClusterParameterGroups", "redshift:DescribeClusterParameters", "redshift:DescribeClusterSecurityGroups", "redshift:DescribeClusterSnapshots", "redshift:DescribeClusterSubnetGroups", "redshift:DescribeClusterVersions", "redshift:DescribeDefaultClusterParameters", "redshift:DescribeEventCategories", "redshift:DescribeEventSubscriptions", "redshift:DescribeHsmClientCertificates", "redshift:DescribeHsmConfigurations", "redshift:DescribeLoggingStatus", "redshift:DescribeOrderableClusterOptions", "redshift:DescribeQuery", "redshift:DescribeReservedNodeOfferings", "redshift:DescribeReservedNodes", "redshift:DescribeResize", "redshift:DescribeSavedQueries", "redshift:DescribeScheduledActions", "redshift:DescribeSnapshotCopyGrants", "redshift:DescribeSnapshotSchedules", "redshift:DescribeStorage", "redshift:DescribeTable", "redshift:DescribeTableRestoreStatus", "redshift:DescribeTags", "redshift:FetchResults", "redshift:GetReservedNodeExchangeOfferings" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

다음 VPC 엔드포인트 정책은 모든 계정 및 보안 주체에 대한 전체 액세스 권한을 허용합니다. 동시에 클러스터 ID가 my-redshift-cluster인 Amazon Redshift 클러스터에서 수행되는 작업에 대한 AWS 계정 123456789012의 액세스를 거부합니다. 클러스터에 대한 리소스 수준 권한을 지원하지 않는 다른 Amazon Redshift 작업은 여전히 허용됩니다. Amazon Redshift 작업 및 해당 리소스 유형 목록은 IAM User GuideActions, Resources, and Condition Keys for Amazon Redshift를 참조하세요.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "Principal": { "AWS": [ "123456789012" ] } } ] }

다음으로 Redshift Serverless에 대한 VPC 엔드포인트 정책의 예제를 찾아볼 수 있습니다.

다음 VPC 엔드포인트 정책은 AWS 계정 123456789012만 지정된 Redshift Serverless 작업을 수행할 수 있도록 허용합니다.

지정된 작업은 Redshift Serverless에 대한 읽기 전용 액세스 권한을 제공합니다. VPC의 다른 모든 작업은 지정된 계정에 대해 거부됩니다. 다른 모든 계정의 액세스도 거부됩니다. Redshift Serverless 작업 목록은 IAM 사용 설명서에서 Redshift Serverless의 작업, 리소스 및 조건 키를 참조하세요.

{ "Statement": [ { "Action": [ "redshift-serverless:DescribeOneTimeCredit", "redshift-serverless:GetCustomDomainAssociation", "redshift-serverless:GetEndpointAccess", "redshift-serverless:GetNamespace", "redshift-serverless:GetRecoveryPoint", "redshift-serverless:GetResourcePolicy", "redshift-serverless:GetScheduledAction", "redshift-serverless:GetSnapshot", "redshift-serverless:GetTableRestoreStatus", "redshift-serverless:GetUsageLimit", "redshift-serverless:GetWorkgroup" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

다음 VPC 엔드포인트 정책은 모든 계정 및 보안 주체에 대한 전체 액세스 권한을 허용합니다. 동시에 작업 그룹 ID가 my-redshift-workgroup인 Amazon Redshift 작업 그룹에서 수행되는 작업에 대한 AWS 계정 123456789012의 액세스를 거부합니다. 작업 그룹에 대한 리소스 수준 권한을 지원하지 않는 다른 Amazon Redshift 작업은 여전히 허용됩니다. Redshift Serverless 작업 및 해당 리소스 유형 목록은 IAM 사용 설명서에서 Redshift Serverless의 작업, 리소스 및 조건 키를 참조하세요.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup:my-redshift-workgroup", "Principal": { "AWS": [ "123456789012" ] } } ] }