

 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/)を参照してください。

# ID が強化された IAM ロールセッションを使用して Redshift に接続する
<a name="identity-center-authentication"></a>

IAM Identity Center を使用して、Amazon Redshift クラスターとサーバーレスワークグループへのフェデレーションアクセスを提供できます。このアプローチにより、ユーザーは Identity Center 認証情報を使用して認証できます。

Amazon Redshift は、ユーザー ID 情報を含む承認済みトークンを生成する `GetIdentityCenterAuthToken` API オペレーションを提供します。これらの API は、プロビジョニングされたクラスターとサーバーレスワークグループの両方で使用できます。トークンを使用すると、既存の Identity Center のセットアップを使用して、Amazon Redshift データベースへのシームレスなシングルサインオンアクセスが可能になります。

## 前提条件
<a name="identity-center-auth-prerequisites"></a>

Amazon Redshift で Identity Center 認証を使用する前に、次を確認してください。
+ **Identity Center のセットアップ:** アカウントには、ユーザー ID と適切なアプリケーション割り当てで IAM Identity Center が設定されている必要があります。セットアップの手順については、「[IAM アイデンティティセンターの設定](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)」を参照してください。
**重要**  
Redshift に接続する場合、redshift:connect スコープを使用する必要があります。
+ **ID 拡張認証情報:** アプリケーションは、埋め込みユーザー ID 情報を含む ID 拡張認証情報を使用する必要があります。詳細については、「[ID 拡張 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. アプリケーションは、埋め込みユーザー ID 情報を含む ID 拡張認証情報を使用して `GetIdentityCenterAuthToken` API を呼び出します。

1. Amazon Redshift は Identity Center ID を検証し、特定のクラスターまたはワークグループを対象とする暗号化された認証トークンを生成します。IAM ポリシーの例を参照してください。

1. アプリケーションはこのトークンを使用して、指定された Amazon Redshift クラスターまたはワークグループに接続します。

1. Amazon Redshift データプレーンはトークンを検証し、Identity Center アプリケーション内の Identity Center ユーザーのアクセス許可に基づいてアクセスを許可します。

**重要**  
この API には、アイデンティティが強化された認証情報が必要です。詳細については、「[ID 拡張 IAM ロールセッションの使用](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-identity-enhanced-iam-role-sessions.html)」を参照してください。  
ID 拡張認証情報なしで API を呼び出すと、`UnsupportedOperationFault` エラーを受け取ります。

## GetIdentityCenterAuthToken API オペレーション
<a name="identity-center-auth-apis"></a>

Amazon Redshift は 2 つの異なる `GetIdentityCenterAuthToken` API オペレーションを提供します。1 つはプロビジョニングされたクラスター用、もう 1 つはサーバーレスワークグループ用です。両方のオペレーションは同じ名前ですが、ターゲットリソースタイプに応じて異なるパラメータを受け入れます。

### プロビジョニングされたクラスターの 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>

**例: 1 つのクラスターの承認されたトークンを取得する**

```
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>

**例: 1 つのワークグループの承認されたトークンを取得する**

```
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  
ユーザー ID 情報と、承認されたクラスターまたはワークグループのリストを含む、暗号化された承認されたトークン。このトークンは機密データとして扱う必要があります。  
タイプ: 文字列

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 で利用可能

**注記**  
機能の高可用性は、最初のロールアウト中は異なる場合があります。