ID が強化された IAM ロールセッションを使用して Redshift に接続する - Amazon Redshift

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 ロールまたはユーザーには、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 ドライバーを使用します。

Identity Center 認証の仕組み

Amazon Redshift の Identity Center 認証では、次のワークフローを使用します。

  1. アプリケーションは、埋め込みユーザー ID 情報を含む ID 拡張認証情報を使用して GetIdentityCenterAuthToken API を呼び出します。

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

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

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

注記

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