

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon Redshift 데이터 웨어하우스에 대한 권한 부여 구성
<a name="zero-etl-using.redshift-iam"></a>

통합 소스의 데이터를 Amazon Redshift 데이터 웨어하우스에 복제하려면 먼저 다음 두 엔터티를 추가해야 합니다.
+ **권한 있는 보안 주체 — 데이터 웨어하우스에 제로 ETL 통합을 생성할 수 있는 사용자 또는 역할을 식별합니다.
+ **권한이 부여된 통합 소스 - 데이터 웨어하우스를 업데이트할 수 있는 소스 데이터베이스를 식별합니다.

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

## 권한 있는 보안 주체 추가
<a name="zero-etl-using.redshift-iam-ap"></a>

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

다음 조건이 모두 충족되면 이 단계를 건너뛰어도 됩니다.
+ Redshift Serverless 작업 그룹 또는 프로비저닝된 클러스터를 소유하는 AWS 계정이 소스 데이터베이스도 소유합니다.
+ 해당 보안 주체가 이 Redshift Serverless 네임스페이스 또는 프로비저닝된 클러스터에 제로 ETL 통합을 생성할 수 있는 권한이 있는 ID 기반 IAM 정책과 연결되어 있습니다.

### Amazon Redshift 서버리스 네임스페이스에 권한 있는 보안 주체 추가
<a name="iam-ap-serverless"></a>

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

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

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

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

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

### Amazon Redshift 프로비저닝된 클러스터에 권한 있는 보안 주체 추가
<a name="iam-ap-cluster"></a>

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

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

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

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

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

## 권한 있는 통합 소스 추가
<a name="zero-etl-using.redshift-iam-air"></a>

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

### 권한 있는 통합 소스를 Amazon Redshift 서버리스 네임스페이스에 추가
<a name="iam-air-serverless"></a>

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

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

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

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

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

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

### Amazon Redshift 프로비저닝된 클러스터에 권한 있는 통합 소스 추가
<a name="iam-air-cluster"></a>

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

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

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

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

1. 제로 ETL 통합을 위한 데이터 소스인 소스의 ARN을 지정합니다.

**참고**  
권한 있는 통합 소스를 제거하면 프로비저닝된 클러스터에 데이터가 복제되는 것이 중지됩니다. 이 작업을 수행하면 해당 소스에서 이 Amazon Redshift 프로비저닝된 클러스터로의 모든 제로 ETL 통합이 비활성화됩니다.

## Amazon Redshift API를 사용하여 권한 부여 구성
<a name="zero-etl-using.resource-policies"></a>

Amazon Redshift API 작업을 사용하여 제로 ETL 통합에서 작동하는 리소스 정책을 구성할 수 있습니다.

네임스페이스로의 인바운드 통합을 생성할 수 있는 소스를 제어하려면 리소스 정책을 생성하여 네임스페이스에 연결하세요. 리소스 정책을 사용하여 통합에 액세스할 수 있는 소스를 지정할 수 있습니다. 리소스 정책은 대상 데이터 웨어하우스의 네임스페이스에 연결되어 소스가 인바운드 통합을 생성하여 소스의 라이브 데이터를 Amazon Redshift로 복제할 수 있도록 합니다.

다음은 샘플 리소스 정책입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "redshift.amazonaws.com"
      },
      "Action": "redshift:AuthorizeInboundIntegration",
      "Resource": "arn:aws:redshift:*:*:integration:*",
      "Condition": {
        "StringEquals": {
          "aws:SourceArn": "arn:aws:rds:*:111122223333:cluster:*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
       "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "redshift:CreateInboundIntegration",
      "Resource": "arn:aws:redshift:*:*:integration:*"
    }
  ]
}
```

------

다음은 통합을 위한 리소스 정책 구성에 적용할 수 있는 Amazon Redshift API 작업을 요약한 것입니다.
+ [PutResourcePolicy](https://docs.aws.amazon.com/redshift/latest/APIReference/API_PutResourcePolicy.html) API 작업을 사용하여 리소스 정책을 유지할 수 있습니다. 다른 리소스 정책을 제공하면 해당 리소스의 이전 리소스 정책이 대체됩니다. 다음 작업에 대한 권한을 부여하는 이전 리소스 정책 예시를 사용하세요.
  + `CreateInboundIntegration` - 소스 보안 주체가 소스에서 대상 데이터 웨어하우스로 복제할 데이터에 대한 인바운드 통합을 생성할 수 있도록 허용합니다.
  + `AuthorizeInboundIntegration` - 대상 데이터 웨어하우스가 소스 ARN에서 복제된 데이터를 수신할 수 있는지 Amazon Redshift가 지속적으로 검증하도록 허용합니다.
+ [GetResourcePolicy](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetResourcePolicy.html) API 작업을 사용하여 기존 리소스 정책을 볼 수 있습니다.
+ [DeleteResourcePolicy](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DeleteResourcePolicy.html) API 작업을 사용하여 리소스에서 리소스 정책을 제거할 수 있습니다.

리소스 정책을 업데이트하려면 [put-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/redshift/put-resource-policy.html) 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`에 다음 사항이 포함됩니다.

------
#### [ 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"
        }
    ]
}
```

------