

 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/)을 참조하세요.

# 자격 증명 강화 IAM 역할 세션을 사용하여 Redshift에 연결
<a name="identity-center-authentication"></a>

IAM Identity Center를 사용하여 Amazon Redshift 클러스터 및 서버리스 작업 그룹에 대한 페더레이션 액세스를 제공할 수 있습니다. 이 접근 방식을 통해 사용자는 Identity Center 자격 증명을 사용하여 인증할 수 있습니다.

Amazon Redshift는 사용자 자격 증명 정보가 포함된 승인된 토큰을 생성하는 `GetIdentityCenterAuthToken` API 작업을 제공합니다. 이러한 API는 프로비저닝된 클러스터와 서버리스 작업 그룹 모두에 사용할 수 있습니다. 토큰을 사용하면 기존 Identity Center 설정을 사용하여 Amazon Redshift 데이터베이스에 원활하게 Single Sign-On 액세스할 수 있습니다.

## 사전 조건
<a name="identity-center-auth-prerequisites"></a>

Amazon Redshift에서 Identity Center 인증을 사용하기 전에 다음이 있는지 확인합니다.
+ **Identity Center 설정:** 계정에 사용자 ID 및 적절한 애플리케이션 할당으로 구성된 IAM Identity Center가 있어야 합니다. 설정 지침은 [IAM Identity Center 설정](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)을 참조하세요.
**중요**  
Redshift에 연결하려면 redshift:connect 범위를 사용해야 합니다.
+ **자격 증명 강화 자격 증명:** 애플리케이션에서는 임베디드 사용자 자격 증명 정보가 포함된 자격 증명 강화 자격 증명을 사용해야 합니다. 자세한 내용은 [자격 증명 강화 IAM 역할 세션 사용](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-identity-enhanced-iam-role-sessions.html)을 참조하세요.
+ **IAM 권한:** IAM 역할 또는 사용자에게 `GetIdentityCenterAuthToken` API를 호출하고 지정된 클러스터 또는 작업 그룹에 액세스할 수 있는 권한이 있어야 합니다. 필요한 권한:
  + 프로비저닝된 클러스터의 경우: 클러스터 ARN의 `redshift:GetIdentityCenterAuthToken`(형식: `arn:aws:redshift:region:account:cluster:cluster-name`)
  + 서버리스 작업 그룹의 경우: 작업 그룹 ARN의 `redshift-serverless:GetIdentityCenterAuthToken`(형식: `arn:aws:redshift-serverless:region:account:workgroup/workgroup-name`)
+ **호환되는 드라이버:** Identity Center 인증 토큰을 지원하는 Amazon Redshift JDBC 또는 ODBC 드라이버를 사용합니다.
  + JDBC 드라이버: [Amazon Redshift JDBC 드라이버 버전 2.0 설치 및 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-install.html)을 참조하세요.
  + ODBC 드라이버: [Amazon Redshift ODBC 드라이버 버전 2.0 설치 및 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/odbc20-install.html)을 참조하세요.

## Identity Center 인증 작동 방식
<a name="identity-center-auth-overview"></a>

Amazon Redshift에 대한 Identity Center 인증은 다음 워크플로를 사용합니다.

1. 애플리케이션은 임베디드 사용자 자격 증명 정보가 포함된 자격 증명 강화 자격 증명을 사용하여 `GetIdentityCenterAuthToken` API를 직접적으로 호출합니다.

1. Amazon Redshift는 Identity Center 자격 증명을 검증하고 특정 클러스터 또는 작업 그룹으로 범위가 지정된 암호화된 권한 있는 토큰을 생성합니다. 예제 IAM 정책을 참조하세요.

1. 애플리케이션은 이 토큰을 사용하여 지정된 Amazon Redshift 클러스터 또는 작업 그룹에 연결합니다.

1. Amazon Redshift 데이터 플레인은 토큰을 검증하고 Identity Center 애플리케이션 내에서 Identity Center 사용자의 권한을 기반으로 액세스 권한을 부여합니다.

**중요**  
이 API에는 자격 증명 강화 자격 증명이 필요합니다. 자세한 내용은 [자격 증명 강화 IAM 역할 세션 사용](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-identity-enhanced-iam-role-sessions.html)을 참조하세요.  
자격 증명 강화 자격 증명 없이 API를 직접적으로 호출하면 `UnsupportedOperationFault` 오류가 발생합니다.

## GetIdentityCenterAuthToken API 작업
<a name="identity-center-auth-apis"></a>

Amazon Redshift는 프로비저닝된 클러스터용과 서버리스 작업 그룹용의 두 가지 개별 `GetIdentityCenterAuthToken` API 작업을 제공합니다. 두 작업의 이름은 동일하지만 대상 리소스 유형에 따라 다른 파라미터를 허용합니다.

### 프로비저닝된 클러스터에 대한 GetIdentityCenterAuthToken
<a name="provisioned-identity-center-auth"></a>

프로비저닝된 Amazon Redshift 클러스터의 경우 Amazon Redshift 서비스의 `GetIdentityCenterAuthToken` API를 사용하여 승인된 토큰을 생성합니다.

#### 요청 구문
<a name="provisioned-request-syntax"></a>

```
{
   "ClusterIds": [ "string" ]
}
```

#### 요청 파라미터
<a name="provisioned-request-parameters"></a>

ClusterIds  
토큰에 액세스할 수 있는 권한이 부여될 Amazon Redshift 클러스터 식별자 목록입니다. 토큰은 이 목록에 지정된 클러스터로만 인증하는 데 사용할 수 있습니다.  
유형: 문자열 배열  
길이 제한: 최소 항목은 1입니다. 최대 항목 수 20개.  
필수 여부: 예

#### CLI 예
<a name="provisioned-cli-examples"></a>

**예: 단일 클러스터에 대해 승인된 토큰 가져오기**

```
aws redshift get-identity-center-auth-token \
    --cluster-ids my-redshift-cluster
```

**예: 여러 클러스터에 대해 승인된 토큰 가져오기**

```
aws redshift get-identity-center-auth-token \
    --cluster-ids my-cluster-1 my-cluster-2
```

### 서버리스 작업 그룹을 위한 GetIdentityCenterAuthToken
<a name="serverless-identity-center-auth"></a>

Amazon Redshift Serverless 작업 그룹의 경우 Amazon Redshift Serverless 서비스의 `GetIdentityCenterAuthToken` API를 사용하여 승인된 토큰을 생성합니다.

#### 요청 구문
<a name="serverless-request-syntax"></a>

```
{
   "WorkgroupNames": [ "string" ]
}
```

#### 요청 파라미터
<a name="serverless-request-parameters"></a>

WorkgroupNames  
토큰에 액세스할 수 있는 권한이 부여될 Amazon Redshift Serverless 작업 그룹 이름의 목록입니다. 토큰은 이 목록에 지정된 작업 그룹으로만 인증하는 데 사용할 수 있습니다.  
유형: 문자열 배열  
길이 제한: 최소 항목은 1입니다. 최대 항목 수 20개.  
필수 여부: 예

#### CLI 예
<a name="serverless-cli-examples"></a>

**예: 단일 작업 그룹에 대해 승인된 토큰 가져오기**

```
aws redshift-serverless get-identity-center-auth-token \
    --workgroup-names my-workgroup
```

**예: 여러 작업 그룹에 대해 승인된 토큰 가져오기**

```
aws redshift-serverless get-identity-center-auth-token \
    --workgroup-names workgroup-1 workgroup-2
```

### 응답 구문
<a name="identity-center-auth-response"></a>

두 API 모두 동일한 응답 구조를 반환합니다.

```
{
   "AuthorizedToken": "string",
   "ExpirationTime": "timestamp"
}
```

#### 응답 파라미터
<a name="identity-center-response-parameters"></a>

AuthorizedToken  
사용자 자격 증명 정보와 권한 있는 클러스터 또는 작업 그룹 목록이 포함된 암호화된 권한 있는 토큰입니다. 이 토큰은 민감한 데이터로 취급해야 합니다.  
유형: 문자열

ExpirationTime  
토큰이 만료되는 날짜 및 시간으로, UTC로 표시됩니다. 토큰은 생성 시점으로부터 1시간 동안 유효합니다.  
유형: 타임스탬프

#### 응답의 예
<a name="identity-center-response-example"></a>

```
{
    "AuthorizedToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwiaWF0IjoxNjQwOTk1MjAwLCJleHAiOjE2NDA5OTg4MDAsImNsdXN0ZXJzIjpbIm15LWNsdXN0ZXIiXX0...",
    "ExpirationTime": "2024-01-01T12:00:00Z"
}
```

## 드라이버 통합
<a name="identity-center-auth-driver-integration"></a>

Amazon Redshift 드라이버는 직접 토큰 사용을 통해 Identity Center 인증을 지원합니다.

### 직접 토큰 사용
<a name="direct-token-usage"></a>

`GetIdentityCenterAuthToken` API를 직접적으로 호출하여 토큰을 얻은 후 `SUBJECT_TOKEN` 토큰 유형과 함께 `IdpTokenAuthPlugin`을 사용합니다.

연결 구성:

```
plugin_name = com.amazon.redshift.plugin.IdpTokenAuthPlugin
token_type = SUBJECT_TOKEN
token = {encrypted_token_from_api_response}
```

Identity Center 인증 플러그인 및 드라이버 구성에 대한 자세한 내용은 [Amazon Redshift 클러스터에 연결](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-to-cluster.html)을 참조하세요.

### Java 코드 예제
<a name="java-code-example"></a>

Identity Center 인증을 사용하여 연결할 샘플 Java 코드:

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

// Get token from GetIdentityCenterAuthToken API
String token = "your_encrypted_token_from_api_response";

// Configure connection properties
Properties props = new Properties();
props.setProperty("user", "your_username");
props.setProperty("plugin_name", "com.amazon.redshift.plugin.IdpTokenAuthPlugin");
props.setProperty("token_type", "SUBJECT_TOKEN");
props.setProperty("token", token);

// Connect to Redshift
String url = "jdbc:redshift://your-cluster.region.redshift.amazonaws.com:5439/your_database";
try (Connection conn = DriverManager.getConnection(url, props)) {
    // Use connection
    System.out.println("Connected successfully!");
} catch (SQLException e) {
    e.printStackTrace();
}
```

## IAM 정책 요구 사항
<a name="identity-center-auth-iam-permissions"></a>

Amazon Redshift에서 Identity Center 인증을 사용하려면 Amazon Redshift 클러스터 및 작업 그룹에 연결하는 데 필요한 표준 권한 외에 특정 IAM 권한이 필요합니다.

### API 권한
<a name="identity-center-auth-iam-api-permissions"></a>

프로비저닝된 클러스터의 경우 향상된 IAM 역할 세션에 다음이 있어야 합니다.
+ 클러스터 ARN의 `redshift:GetIdentityCenterAuthToken`(형식: `arn:aws:redshift:region:account:cluster:cluster-name`)

서버리스 작업 그룹의 경우 향상된 IAM 역할 세션에 다음이 있어야 합니다.
+ 작업 그룹 ARN의 `redshift-serverless:GetIdentityCenterAuthToken`(형식: `arn:aws:redshift-serverless:region:account:workgroup/workgroup-name`)

### 예제 IAM 정책
<a name="identity-center-auth-iam-policy-examples"></a>

**프로비저닝된 클러스터에 대한 정책 예제:**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetIdentityCenterAuthToken"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:cluster:my-cluster"
            ]
        }
    ]
}
```

**서버리스 작업 그룹에 대한 정책 예제:**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-serverless:GetIdentityCenterAuthToken"
            ],
            "Resource": [
                "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/my-workgroup"
            ]
        }
    ]
}
```

**여러 리소스에 대한 정책 예제:**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetIdentityCenterAuthToken"
            ],
            "Resource": [
                "arn:aws:redshift:*:123456789012:cluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "redshift-serverless:GetIdentityCenterAuthToken"
            ],
            "Resource": [
                "arn:aws:redshift-serverless:*:123456789012:workgroup/*"
            ]
        }
    ]
}
```

## 리전별 가용성
<a name="identity-center-auth-regional-availability"></a>

Identity Center 인증은 다음 AWS 리전에서 사용할 수 있습니다.
+ 상용 리전: 지원되는 모든 Amazon Redshift 리전
+ AWS GovCloud: us-gov-east-1 및 us-gov-west-1에서 사용 가능
+ 중국 리전: cn-north-1 및 cn-northwest-1에서 사용 가능

**참고**  
초기 롤아웃 기간 동안 기능 사용 가능 여부는 달라질 수 있습니다.

# Identity Center 인증 문제 해결
<a name="identity-center-auth-errors"></a>

다음 섹션의 내용으로 Identity Center 인증 관련 문제를 해결할 수 있습니다.

**Topics**
+ [API 오류](#api-errors)
+ [연결 오류](#connection-errors)

## API 오류
<a name="api-errors"></a>

`GetIdentityCenterAuthToken` API는 다음과 같은 오류를 반환할 수 있습니다.
+ **UnsupportedOperationFault** – 자격 증명 강화 자격 증명 없이 요청이 이루어졌거나 현재 구성에서 Identity Center 자격 증명 전파가 지원되지 않습니다.
+ **ClusterNotFoundFault(redshift:GetIdentityCenterAuthToken)** - 지정된 클러스터 식별자 중 하나 이상이 존재하지 않거나 액세스 권한이 없습니다.
+ **WorkgroupNotFoundFault(redshift-serverless:GetIdentityCenterAuthToken)** - 지정된 작업 그룹 이름 중 하나 이상이 없거나 액세스할 권한이 없습니다.
+ **InvalidParameterValueException** - 클러스터 또는 작업 그룹의 빈 목록 또는 목록의 항목 20개 이상과 같이 요청 파라미터가 잘못되었습니다.

## 연결 오류
<a name="connection-errors"></a>

Identity Center 토큰을 사용하여 Amazon Redshift에 연결할 때 다음 오류가 발생할 수 있습니다.
+ **토큰 자격 증명이 만료되었거나 유효하지 않음** - `GetIdentityCenterAuthToken` API를 사용하여 새 토큰을 생성하고 연결 구성을 업데이트합니다.
+ **잘못된 토큰** - 토큰 형식을 확인하고 올바른 클러스터 또는 작업 그룹에 대해 생성되었는지 확인합니다.
+ **TYPE\$1INVALID\$1TOKEN** - 연결 파라미터에서 `token_type = SUBJECT_TOKEN`을 사용하고 있는지 확인합니다.
+ **ID 제공업체 유형 "awsidc"는 지원되지 않음** - Amazon Redshift 클러스터 또는 작업 그룹이 Identity Center 인증을 지원하고 호환되는 버전으로 업데이트하는지 확인합니다.
+ **AWS IdC 자격 증명 공급자가 존재하지 않음** - AWS 콘솔을 통해 Amazon Redshift 리소스에 대한 Identity Center 통합을 구성합니다.
+ **잘못된 범위. 사용자의 자격 증명이 Amazon Redshift에 연결할 권한이 없음** - 사용자에게 Identity Center에서 적절한 권한이 있고 올바른 리소스에 대해 토큰이 생성되었는지 확인합니다.