Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、ブログ記事
IAM 許可の設定
Amazon Redshift は、AmazonRedshiftDataFullAccessマネージドポリシーを提供します。このポリシーは、Amazon Redshift Data API オペレーションへのフルアクセスを提供します。このポリシーでは、Amazon Redshift クラスターまたは Redshift Serverless ワークグループの認証とアクセスに必要な特定の Amazon Redshift、AWS Secrets Manager、IAM API オペレーションへのスコープ付きアクセスも許可されます。
特定のリソースへのアクセスを許可する独自の IAM ポリシーを作成することもできます。ポリシーを作成するには、AmazonRedshiftDataFullAccessポリシーを開始テンプレートとして使用します。作成したポリシーは、Data API にアクセスする必要がある各ユーザーに追加します。
ユーザーに関連付けられた IAM ポリシーの以下の要件を考慮してください。
-
AWS Secrets Manager を使用して認証する場合、ポリシーでは
secretsmanager:GetSecretValueアクションの使用が許可され、キーRedshiftDataFullAccessでタグ付けされたシークレットを取得できることを確認します。 -
一時的な認証情報を使用してクラスターに対して認証する場合、ポリシーでは、クラスター内の任意のデータベースのデータベースユーザー名
redshift_data_api_userに対するredshift:GetClusterCredentialsアクションの使用が許可されることを確認します。このユーザー名は、データベースにすでに作成されている必要があります。 -
一時的な認証情報を使用してサーバーレスワークグループへの認証を行う場合は、ポリシーで
redshift-serverless:GetCredentialsキーでタグ付けされたワークグループを取得するためのRedshiftDataFullAccessアクションの使用が許可されていることを確認します。データベースユーザーが、ソース AWS Identity and Access Management (IAM) ID に対して 1:1 にマップされています。例えば、ユーザー sample_user はデータベースユーザーIAM:sample_userにマップされ、IAM ロール sample_role はIAMR:sample_roleにマップされます。IAM ID の詳細については、「IAM ユーザーガイド」の「IAM ID (ユーザー、ユーザーグループ、ロール)」を参照してください。 -
IAM アクション
redshift-data:GetStatementResultは、GetStatementResultおよびGetStatementResultV2API オペレーションの両方へのアクセスを許可します。
次のリンクから、IAM ユーザーガイドで AWS Identity and Access Management についての詳細情報をご覧いただけます。
-
IAM ロールの作成については、「IAM ロールの作成」を参照してください。
-
IAM ポリシーの作成については、「IAM ポリシーの作成」を参照してください。
-
IAM ポリシーをユーザーに追加する方法については、「IAM ID のアクセス許可の追加および削除」を参照してください。
別のアカウントが所有するクラスターでクエリを実行する
別のアカウントが所有するクラスターでクエリを実行するには、呼び出すアカウントで Data API がロールを引き受けることができる IAM ロールを所有アカウントより提供してもらう必要があります。例えば、アカウント A がアクセスする必要のあるクラスターを、アカウント B が所有しているとします。アカウント B は、AWS マネージドポリシーの AmazonRedshiftDataFullAccess をアカウント B の IAM ロールにアタッチできます。次に、アカウント B は、次のような信頼ポリシーを使用してアカウント A を信頼します:
最後に、アカウント A の IAM ロールでアカウント B の IAM ロールを引き受けることができなければなりません。
AWS アカウント 内のリソースを Amazon Redshift Serverless ワークグループおよび Amazon Redshift クラスターに制限する IAM ロールを指定します。
アイデンティティベースのポリシーでリソース ARN を指定して、AWS アカウントの Redshift Serverless ワークグループと Amazon Redshift クラスターへのアクセスを制御できます。この例では、指定した AWS アカウントのワークグループとクラスターのみに対して Data API へのアクセスを許可するポリシーを作成する方法を示します。
SQL ステートメント情報へのアクセスをステートメント所有者のみに制限する IAM ポリシーを設定する
デフォルトでは、Amazon Redshift Data API は、ExecuteStatement および BatchExecuteStatement を呼び出すときに使用される IAM ロールを SQL ステートメントの所有者として扱います。ロールを引き受けることが許可されているユーザーは、結果を含む SQL ステートメントに関する情報にアクセスできます。特定の所有者との IAM ロールセッションへの SQL ステートメント情報アクセスを制限するには、条件 redshift-data:statement-owner-iam-userid:
"${aws:userid}" を追加します。次の IAM ポリシーは、アクセスを制限します。
statement-owner-iam-userid 条件は CancelStatement、DescribeStatement、GetStatementResult、および ListStatements で使用することができます。詳細については、「Amazon Redshift Data API で定義されるアクション」を参照してください。
SQL 結果へのアクセスをセッション所有者のみに制限する IAM ポリシーを設定する
デフォルトでは、Amazon Redshift Data API は、ExecuteStatement と BatchExecuteStatement を呼び出すときに使用される IAM ロールを、SQL ステートメントを実行するデータベースセッションの所有者として扱います。ロールを引き受けることが許可されているユーザーは、データベースセッションにクエリを送信できます。特定の所有者との IAM ロールセッションへのセッションアクセスを制限するには、条件 redshift-data:session-owner-iam-userid: "${aws:userid}" を追加します。次の IAM ポリシーは、アクセスを制限します。
次の IAM ポリシーでは、セッション所有者のみがステートメントの結果を取得できます。条件 session-owner-iam-userid は、指定された userid へのリソースアクセスを制限するために使用されます。
ExecuteStatement および BatchExecuteStatement で session-owner-iam-userid 条件を使用することができます。詳細については、「Amazon Redshift Data API で定義されるアクション」を参照してください。