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 を信頼します:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
accountID-of-account-A
:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }
最後に、アカウント A の IAM ロールでアカウント B の IAM ロールを引き受けることができなければなりません。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountID-of-account-B:role/someRoleB" } }
AWS アカウント 内のリソースを Amazon Redshift Serverless ワークグループおよび Amazon Redshift クラスターに制限する IAM ロールを指定します。
アイデンティティベースのポリシーでリソース ARN を指定して、AWS アカウントの Redshift Serverless ワークグループと Amazon Redshift クラスターへのアクセスを制御できます。この例では、指定した AWS アカウントのワークグループとクラスターのみに対して Data API へのアクセスを許可するポリシーを作成する方法を示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*" }, { "Effect": "Allow", "Action": "redshift-data:*", "Resource": [ "arn:
arn-partition
:redshift-serverless:*:AWS アカウント
:workgroup/*", "arn:arn-partition
:redshift:*:AWS アカウント
:cluster:*" ] } ] }
SQL ステートメント情報へのアクセスをステートメント所有者のみに制限する IAM ポリシーを設定する
デフォルトでは、Amazon Redshift Data API は、ExecuteStatement
および BatchExecuteStatement
を呼び出すときに使用される IAM ロールを SQL ステートメントの所有者として扱います。ロールを引き受けることが許可されているユーザーは、結果を含む SQL ステートメントに関する情報にアクセスできます。特定の所有者との IAM ロールセッションへの SQL ステートメント情報アクセスを制限するには、条件 redshift-data:statement-owner-iam-userid:
"${aws:userid}"
を追加します。次の IAM ポリシーは、アクセスを制限します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"redshift-data:CancelStatement",
"redshift-data:DescribeStatement",
"redshift-data:GetStatementResult",
"redshift-data:ListStatements"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"redshift-data:statement-owner-iam-userid": "${aws:userid}"
}
}
}
]
}
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
へのリソースアクセスを制限するために使用されます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:BatchExecuteStatement" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:session-owner-iam-userid": "${aws:userid}" } } } ] }
ExecuteStatement
および BatchExecuteStatement
で session-owner-iam-userid
条件を使用することができます。詳細については、「Amazon Redshift Data API で定義されるアクション」を参照してください。