Amazon Redshift 데이터 웨어하우스에 대한 권한 부여 구성 - Amazon Redshift

Amazon Redshift 데이터 웨어하우스에 대한 권한 부여 구성

통합 소스의 데이터를 Amazon Redshift 데이터 웨어하우스에 복제하려면 먼저 다음 두 엔터티를 추가해야 합니다.

  • 권한 있는 보안 주체 — 데이터 웨어하우스에 제로 ETL 통합을 생성할 수 있는 사용자 또는 역할을 식별합니다.

  • 권한이 부여된 통합 소스 - 데이터 웨어하우스를 업데이트할 수 있는 소스 데이터베이스를 식별합니다.

Amazon Redshift 콘솔의 리소스 정책 탭에서 또는 Amazon Redshift PutResourcePolicy API 작업을 사용하여 권한이 부여된 보안 주체 및 권한이 부여된 통합 소스를 구성할 수 있습니다.

권한 있는 보안 주체 추가

Redshift Serverless 작업 그룹 또는 프로비저닝된 클러스터에 제로 ETL 통합을 생성하려면 연결된 네임스페이스 또는 프로비저닝된 클러스터에 대한 액세스 권한을 부여하세요.

다음 조건이 모두 충족되면 이 단계를 건너뛰어도 됩니다.

  • Redshift Serverless 작업 그룹 또는 프로비저닝된 클러스터를 소유하는 AWS 계정이 소스 데이터베이스도 소유합니다.

  • 해당 보안 주체가 이 Redshift Serverless 네임스페이스 또는 프로비저닝된 클러스터에 제로 ETL 통합을 생성할 수 있는 권한이 있는 ID 기반 IAM 정책과 연결되어 있습니다.

Amazon Redshift 서버리스 네임스페이스에 권한 있는 보안 주체 추가

  1. Amazon Redshift 콘솔의 왼쪽 탐색 창에서 Redshift Serverless를 선택합니다.

  2. 네임스페이스 구성을 선택한 다음 네임스페이스를 선택하고 리소스 정책 탭으로 이동합니다.

  3. 권한 있는 보안 주체 추가를 선택합니다.

  4. 추가하려는 권한이 부여된 보안 주체마다 AWS 사용자나 역할의 ARN 또는 제로 ETL 통합을 만들기 위해 액세스 권한을 부여하려는 AWS 계정의 ID를 네임스페이스에 입력합니다. 계정 ID는 ARN으로 저장됩니다.

  5. 변경 사항 저장을 선택합니다.

Amazon Redshift 프로비저닝된 클러스터에 권한 있는 보안 주체 추가

  1. Amazon Redshift 콘솔의 왼쪽 탐색 창에서 프로비저닝된 클러스터 대시보드를 선택합니다.

  2. 클러스터를 선택한 다음 클러스터를 선택하고 리소스 정책 탭으로 이동합니다.

  3. 권한 있는 보안 주체 추가를 선택합니다.

  4. 추가하려는 권한이 부여된 보안 주체마다 AWS 사용자나 역할의 ARN 또는 제로 ETL 통합을 만들기 위해 액세스 권한을 부여하려는 AWS 계정의 ID를 클러스터에 입력합니다. 계정 ID는 ARN으로 저장됩니다.

  5. Save changes(변경 사항 저장)를 선택합니다.

권한 있는 통합 소스 추가

소스가 Amazon Redshift 데이터 웨어하우스를 업데이트할 수 있도록 하려면 네임스페이스에 권한이 부여된 통합 소스로 추가해야 합니다.

권한 있는 통합 소스를 Amazon Redshift 서버리스 네임스페이스에 추가

  1. Amazon Redshift 콘솔에서 서버리스 대시보드로 이동합니다.

  2. 네임스페이스의 이름을 선택합니다.

  3. 리소스 정책 탭으로 이동합니다.

  4. 권한 있는 통합 소스 추가를 선택합니다.

  5. 제로 ETL 통합을 위한 소스의 ARN을 지정합니다.

참고

권한 있는 통합 소스를 제거하면 네임스페이스에 데이터가 복제되는 것이 중지됩니다. 이 작업을 수행하면 해당 소스에서 이 네임스페이스로의 모든 제로 ETL 통합이 비활성화됩니다.

Amazon Redshift 프로비저닝된 클러스터에 권한 있는 통합 소스 추가

  1. Amazon Redshift 콘솔에서 프로비저닝된 클러스터 대시보드로 이동합니다.

  2. 프로비저닝된 클러스터의 이름을 선택합니다.

  3. 리소스 정책 탭으로 이동합니다.

  4. 권한 있는 통합 소스 추가를 선택합니다.

  5. 제로 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" } ] }