本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定IAM許可
Amazon Redshift 會提供 AmazonRedshiftDataFullAccess
受管政策。此政策提供 Amazon Redshift Data API操作的完整存取權。此政策也允許對特定 Amazon Redshift 的存取 AWS Secrets Manager範圍,以及驗證和存取 Amazon Redshift 叢集或 Redshift Serverless 工作群組所需的IAMAPI操作。
您也可以建立自己的IAM政策,允許存取特定資源。若要建立您的政策,請使用 AmazonRedshiftDataFullAccess
政策作為起始範本。建立政策後,將其新增至需要存取資料 的每個使用者API。
請考慮與使用者相關聯的IAM政策的下列要求:
-
如果您使用 AWS Secrets Manager 進行身分驗證,請確認政策允許使用
secretsmanager:GetSecretValue
動作來擷取以金鑰 標記的秘密RedshiftDataFullAccess
。 -
如果您使用暫時憑證對叢集進行身分驗證,請確認政策允許對叢集中任何資料庫的資料庫使用者名稱
redshift_data_api_user
使用redshift:GetClusterCredentials
動作。此使用者名稱必須已建立在資料庫中。 -
如果您使用暫時憑證向無伺服器工作群組進行身分驗證,請確認政策允許使用
redshift-serverless:GetCredentials
動作來擷取以索引鍵RedshiftDataFullAccess
標記的工作群組。資料庫使用者會 1:1 對應至來源 AWS Identity and Access Management (IAM) 身分。例如,使用者 sample_user 會映射至資料庫使用者IAM:sample_user
,而IAM角色 sample_role 會映射至IAMR:sample_role
。如需IAM身分的詳細資訊,請參閱 IAM 使用者指南中的IAM身分 (使用者、使用者群組和角色)。
下列連結提供 IAM 使用者指南 AWS Identity and Access Management 中有關 的詳細資訊。
-
如需建立IAM角色的相關資訊,請參閱建立IAM角色。
-
如需建立IAM政策的相關資訊,請參閱建立IAM政策。
-
如需將IAM政策新增至使用者的資訊,請參閱新增和移除IAM身分許可 。
在另一個帳戶擁有的叢集上執行查詢
若要在另一個帳戶擁有的叢集上執行查詢,擁有的帳戶必須提供資料API在呼叫帳戶中可以擔任IAM的角色。例如,假設帳戶 B 擁有帳戶 A 需要存取的叢集。帳戶 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" } }
指定在 中將資源限制為 Redshift Serverless 工作群組和 Amazon Redshift 叢集IAM的角色 AWS 帳戶
您可以在身分型政策ARNs中指定資源,以控制對 中 Redshift Serverless 工作群組和 Amazon Redshift 叢集的存取 AWS 帳戶。此範例示範如何建立政策,僅允許存取指定 中工作群組和叢集API的資料 AWS 帳戶。
{ "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:*" ] } ] }
設定IAM政策,將對SQL陳述式資訊的存取限制為僅陳述式擁有者
依預設,Amazon Redshift Data API會將呼叫時所使用的IAM角色ExecuteStatemet
BatchExecuteStatement
視為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。
設定IAM政策,將SQL結果的存取限制為僅限工作階段擁有者
根據預設,Amazon Redshift Data 會將呼叫時所使用的IAM角色API,ExecuteStatement
以及 BatchExecuteStatement
視為執行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}" } } } ] }
您可以session-owner-iam-userid
搭配 ExecuteStatement
和 使用 條件BatchExecuteStatement
。如需詳細資訊,請參閱 Amazon Redshift Data 定義的動作API。