Amazon Redshift 데이터 웨어하우스에 대한 권한 부여 구성
통합 소스의 데이터를 Amazon Redshift 데이터 웨어하우스에 복제하려면 먼저 다음 두 엔터티를 추가해야 합니다.
-
권한 있는 보안 주체 — 데이터 웨어하우스에 제로 ETL 통합을 생성할 수 있는 사용자 또는 역할을 식별합니다.
-
권한이 부여된 통합 소스 - 데이터 웨어하우스를 업데이트할 수 있는 소스 데이터베이스를 식별합니다.
Amazon Redshift 콘솔의 리소스 정책 탭에서 또는 Amazon Redshift PutResourcePolicy
API 작업을 사용하여 권한이 부여된 보안 주체 및 권한이 부여된 통합 소스를 구성할 수 있습니다.
권한 있는 보안 주체 추가
Redshift Serverless 작업 그룹 또는 프로비저닝된 클러스터에 제로 ETL 통합을 생성하려면 연결된 네임스페이스 또는 프로비저닝된 클러스터에 대한 액세스 권한을 부여하세요.
다음 조건이 모두 충족되면 이 단계를 건너뛰어도 됩니다.
-
Redshift Serverless 작업 그룹 또는 프로비저닝된 클러스터를 소유하는 AWS 계정이 소스 데이터베이스도 소유합니다.
-
해당 보안 주체가 이 Redshift Serverless 네임스페이스 또는 프로비저닝된 클러스터에 제로 ETL 통합을 생성할 수 있는 권한이 있는 ID 기반 IAM 정책과 연결되어 있습니다.
Amazon Redshift 서버리스 네임스페이스에 권한 있는 보안 주체 추가
-
Amazon Redshift 콘솔의 왼쪽 탐색 창에서 Redshift Serverless를 선택합니다.
-
네임스페이스 구성을 선택한 다음 네임스페이스를 선택하고 리소스 정책 탭으로 이동합니다.
-
권한 있는 보안 주체 추가를 선택합니다.
-
추가하려는 권한이 부여된 보안 주체마다 AWS 사용자나 역할의 ARN 또는 제로 ETL 통합을 만들기 위해 액세스 권한을 부여하려는 AWS 계정의 ID를 네임스페이스에 입력합니다. 계정 ID는 ARN으로 저장됩니다.
-
변경 사항 저장을 선택합니다.
Amazon Redshift 프로비저닝된 클러스터에 권한 있는 보안 주체 추가
-
Amazon Redshift 콘솔의 왼쪽 탐색 창에서 프로비저닝된 클러스터 대시보드를 선택합니다.
-
클러스터를 선택한 다음 클러스터를 선택하고 리소스 정책 탭으로 이동합니다.
-
권한 있는 보안 주체 추가를 선택합니다.
-
추가하려는 권한이 부여된 보안 주체마다 AWS 사용자나 역할의 ARN 또는 제로 ETL 통합을 만들기 위해 액세스 권한을 부여하려는 AWS 계정의 ID를 클러스터에 입력합니다. 계정 ID는 ARN으로 저장됩니다.
-
Save changes(변경 사항 저장)를 선택합니다.
권한 있는 통합 소스 추가
소스가 Amazon Redshift 데이터 웨어하우스를 업데이트할 수 있도록 하려면 네임스페이스에 권한이 부여된 통합 소스로 추가해야 합니다.
권한 있는 통합 소스를 Amazon Redshift 서버리스 네임스페이스에 추가
-
Amazon Redshift 콘솔에서 서버리스 대시보드로 이동합니다.
-
네임스페이스의 이름을 선택합니다.
-
리소스 정책 탭으로 이동합니다.
-
권한 있는 통합 소스 추가를 선택합니다.
-
제로 ETL 통합을 위한 소스의 ARN을 지정합니다.
참고
권한 있는 통합 소스를 제거하면 네임스페이스에 데이터가 복제되는 것이 중지됩니다. 이 작업을 수행하면 해당 소스에서 이 네임스페이스로의 모든 제로 ETL 통합이 비활성화됩니다.
Amazon Redshift 프로비저닝된 클러스터에 권한 있는 통합 소스 추가
-
Amazon Redshift 콘솔에서 프로비저닝된 클러스터 대시보드로 이동합니다.
-
프로비저닝된 클러스터의 이름을 선택합니다.
-
리소스 정책 탭으로 이동합니다.
-
권한 있는 통합 소스 추가를 선택합니다.
-
제로 ETL 통합을 위한 데이터 소스인 소스의 ARN을 지정합니다.
참고
권한 있는 통합 소스를 제거하면 프로비저닝된 클러스터에 데이터가 복제되는 것이 중지됩니다. 이 작업을 수행하면 해당 소스에서 이 Amazon Redshift 프로비저닝된 클러스터로의 모든 제로 ETL 통합이 비활성화됩니다.
Amazon Redshift API를 사용하여 권한 부여 구성
Amazon Redshift API 작업을 사용하여 제로 ETL 통합에서 작동하는 리소스 정책을 구성할 수 있습니다.
네임스페이스로의 인바운드 통합을 생성할 수 있는 소스를 제어하려면 리소스 정책을 생성하여 네임스페이스에 연결하세요. 리소스 정책을 사용하여 통합에 액세스할 수 있는 소스를 지정할 수 있습니다. 리소스 정책은 대상 데이터 웨어하우스의 네임스페이스에 연결되어 소스가 인바운드 통합을 생성하여 소스의 라이브 데이터를 Amazon Redshift로 복제할 수 있도록 합니다.
다음은 샘플 리소스 정책입니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Condition": { "StringEquals": { "aws:SourceArn": "
source_arn
" } } }, { "Effect": "Allow", "Principal": { "AWS": "source_principal
" }, "Action": "redshift:CreateInboundIntegration" } ] }
다음은 통합을 위한 리소스 정책 구성에 적용할 수 있는 Amazon Redshift API 작업을 요약한 것입니다.
-
PutResourcePolicy API 작업을 사용하여 리소스 정책을 유지할 수 있습니다. 다른 리소스 정책을 제공하면 해당 리소스의 이전 리소스 정책이 대체됩니다. 다음 작업에 대한 권한을 부여하는 이전 리소스 정책 예시를 사용하세요.
-
CreateInboundIntegration
- 소스 보안 주체가 소스에서 대상 데이터 웨어하우스로 복제할 데이터에 대한 인바운드 통합을 생성할 수 있도록 허용합니다. -
AuthorizeInboundIntegration
- 대상 데이터 웨어하우스가 소스 ARN에서 복제된 데이터를 수신할 수 있는지 Amazon Redshift가 지속적으로 검증하도록 허용합니다.
-
-
GetResourcePolicy API 작업을 사용하여 기존 리소스 정책을 볼 수 있습니다.
-
DeleteResourcePolicy API 작업을 사용하여 리소스에서 리소스 정책을 제거할 수 있습니다.
리소스 정책을 업데이트하려면 put-resource-policy AWS CLI 명령을 사용할 수도 있습니다. 예를 들어 DynamoDB 소스에 대한 Amazon Redshift 네임스페이스 ARN에 리소스 정책을 적용하려면 다음과 유사한 AWS CLI 명령을 실행합니다.
aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"
여기서 rs-rp.json
에 다음 사항이 포함됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/test_ddb" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433" } ] }