Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、ブログ記事
ID が強化された IAM ロールセッションを使用して Redshift に接続する
IAM Identity Center を使用して、Amazon Redshift クラスターとサーバーレスワークグループへのフェデレーションアクセスを提供できます。このアプローチにより、ユーザーは Identity Center 認証情報を使用して認証できます。
Amazon Redshift は、ユーザー ID 情報を含む承認済みトークンを生成する GetIdentityCenterAuthToken API オペレーションを提供します。これらの API は、プロビジョニングされたクラスターとサーバーレスワークグループの両方で使用できます。トークンを使用すると、既存の Identity Center のセットアップを使用して、Amazon Redshift データベースへのシームレスなシングルサインオンアクセスが可能になります。
前提条件
Amazon Redshift で Identity Center 認証を使用する前に、次を確認してください。
-
Identity Center のセットアップ: アカウントには、ユーザー ID と適切なアプリケーション割り当てで IAM Identity Center が設定されている必要があります。セットアップの手順については、「IAM アイデンティティセンターの設定」を参照してください。
重要
Redshift に接続する場合、redshift:connect スコープを使用する必要があります。
-
ID 拡張認証情報: アプリケーションは、埋め込みユーザー ID 情報を含む ID 拡張認証情報を使用する必要があります。詳細については、「ID 拡張 IAM ロールセッションの使用」を参照してください。
-
IAM アクセス許可: IAM ロールまたはユーザーには、
GetIdentityCenterAuthTokenAPI を呼び出し、指定したクラスターまたはワークグループにアクセスするためのアクセス許可が必要です。必要なアクセス許可:-
プロビジョニングされたクラスターの場合: クラスター 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 のインストールと設定」を参照してください。
-
ODBC ドライバー: 「Amazon Redshift ODBC ドライバーバージョン 2.0 のインストールと設定」を参照してください。
-
Identity Center 認証の仕組み
Amazon Redshift の Identity Center 認証では、次のワークフローを使用します。
-
アプリケーションは、埋め込みユーザー ID 情報を含む ID 拡張認証情報を使用して
GetIdentityCenterAuthTokenAPI を呼び出します。 -
Amazon Redshift は Identity Center ID を検証し、特定のクラスターまたはワークグループを対象とする暗号化された認証トークンを生成します。IAM ポリシーの例を参照してください。
-
アプリケーションはこのトークンを使用して、指定された Amazon Redshift クラスターまたはワークグループに接続します。
-
Amazon Redshift データプレーンはトークンを検証し、Identity Center アプリケーション内の Identity Center ユーザーのアクセス許可に基づいてアクセスを許可します。
重要
この API には、アイデンティティが強化された認証情報が必要です。詳細については、「ID 拡張 IAM ロールセッションの使用」を参照してください。
ID 拡張認証情報なしで API を呼び出すと、UnsupportedOperationFault エラーを受け取ります。
GetIdentityCenterAuthToken API オペレーション
Amazon Redshift は 2 つの異なる GetIdentityCenterAuthToken API オペレーションを提供します。1 つはプロビジョニングされたクラスター用、もう 1 つはサーバーレスワークグループ用です。両方のオペレーションは同じ名前ですが、ターゲットリソースタイプに応じて異なるパラメータを受け入れます。
プロビジョニングされたクラスターの GetIdentityCenterAuthToken
プロビジョニングされた Amazon Redshift クラスターの場合、Amazon Redshift サービスの GetIdentityCenterAuthToken API を使用して、承認されたトークンを生成します。
リクエスト構文
{ "ClusterIds": [ "string" ] }
パラメータのリクエスト
- ClusterIds
-
トークンがアクセスを許可される Amazon Redshift クラスター識別子のリスト。トークンは、このリストで指定されたクラスターでの認証にのみ使用できます。
型: 文字列の配列
長さの制限: 最小は 1 項目です。最大 20 項目。
必須: はい
CLI の例
例: 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
Amazon Redshift Serverless ワークグループの場合、Amazon Redshift Serverless サービスの GetIdentityCenterAuthToken API を使用して、承認されたトークンを生成します。
リクエスト構文
{ "WorkgroupNames": [ "string" ] }
パラメータのリクエスト
- WorkgroupNames
-
トークンがアクセスを許可される Amazon Redshift Serverless ワークグループ名のリスト。トークンは、このリストで指定されたワークグループでの認証にのみ使用できます。
型: 文字列の配列
長さの制限: 最小は 1 項目です。最大 20 項目。
必須: はい
CLI の例
例: 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
レスポンスの構文
両方の API は、同じレスポンス構造を返します。
{ "AuthorizedToken": "string", "ExpirationTime": "timestamp" }
レスポンスパラメータ
- AuthorizedToken
-
ユーザー ID 情報と、承認されたクラスターまたはワークグループのリストを含む、暗号化された承認されたトークン。このトークンは機密データとして扱う必要があります。
タイプ: 文字列
- ExpirationTime
-
トークンの有効期限が切れる UTC 形式の日時。トークンは、生成時から 1 時間有効です。
タイプ: タイムスタンプ
レスポンスの例
{ "AuthorizedToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwiaWF0IjoxNjQwOTk1MjAwLCJleHAiOjE2NDA5OTg4MDAsImNsdXN0ZXJzIjpbIm15LWNsdXN0ZXIiXX0...", "ExpirationTime": "2024-01-01T12:00:00Z" }
ドライバーの統合
Amazon Redshift ドライバーは、トークンを直接使用して Identity Center 認証をサポートします。
トークンの直接使用
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 クラスターへの接続」を参照してください。
Java コード例
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 ポリシーの要件
Amazon Redshift で Identity Center 認証を使用するには、Amazon Redshift クラスターとワークグループへの接続に必要な標準のアクセス許可を超えて、特定の IAM アクセス許可が必要です。
API アクセス許可
プロビジョニングされたクラスターの場合、拡張 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 ポリシーの例
プロビジョニングされたクラスターのポリシーの例:
{ "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/*" ] } ] }
リージョナルな可用性
Identity Center 認証は、以下の AWS リージョンで使用できます。
-
商用リージョン: サポートされているすべての Amazon Redshift リージョン
-
AWS GovCloud: us-gov-east-1 および us-gov-west-1 で利用可能
-
中国リージョン: cn-north-1 および cn-northwest-1 で利用可能
注記
機能の高可用性は、最初のロールアウト中は異なる場合があります。