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
およびGetStatementResultV2
API オペレーションの両方へのアクセスを許可します。
次のリンクから、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 で定義されるアクション」を参照してください。