本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon 中以IAM角色執行查詢 QuickSight
您可以對連線至 Amazon Athena、Amazon Redshift 或 Amazon S3 的資料來源使用精細定義的存取政策,而不是更寬泛的許可,以提升資料安全性。首先建立 AWS Identity and Access Management (IAM) 角色,在人員或 API啟動查詢時,具有要啟用的許可。然後,Amazon QuickSight 管理員或開發人員會將IAM角色指派給 Athena 或 Amazon S3 資料來源。角色就位後,任何執行查詢的人員或 API 都有執行查詢所需的確切許可。
在您承諾實作執行者角色以提升資料安全性之前,需考慮下列事項:
-
說明額外的安全保護措施可如何為您帶來優勢。
-
與您的 QuickSight 管理員合作,了解將角色新增至資料來源是否有助於您更完善地滿足您的安全目標或需求。
-
對於所涉及資料來源、人員和應用程式的數量,詢問您的團隊能否可靠記錄和維護這種類型的安全性? 如果不行,這部分的工作由誰負責?
-
在結構化組織中,確定營運、開發和 IT 支援並行團隊中的利益相關者。詢問他們的經驗、建議以及是否願意支援您的計畫。
-
啟動專案之前,考慮執行概念驗證,讓需要存取資料的人員參與其中。
下列規則會套用於將執行者角色與 Athena、Amazon Redshift 和 Amazon S3 結合使用:
-
每個資料來源只能有一個相關聯的 RoleArn。經常存取資料集和視覺效果的資料來源取用者可以產生許多不同類型的查詢。該角色對哪些查詢有效、哪些無效放置了界限。
-
ARN 必須與使用 的 QuickSight 執行個體 AWS 帳戶 相同,對應至 中的IAM角色。
-
IAM 角色必須具有允許 QuickSight 擔任角色的信任關係。
-
呼叫 QuickSight的身分APIs必須具有傳遞角色的許可,才能更新
RoleArn
屬性。您只需在建立或更新角色 時傳遞角色ARN。之後不會重新評估許可。同樣地,ARN在省略角色時不需要 許可。 -
ARN 省略角色時,Athena 或 Amazon S3 資料來源會使用全帳戶角色和範圍縮減政策。
-
當角色ARN存在時,會忽略整個帳戶的角色和任何範圍縮減政策。對於 Athena 資料來源,不會忽略 Lake Formation 許可。
-
對於 Amazon S3 資料來源,必須使用 IAM角色存取資訊清單檔案和資訊清單檔案指定的資料。
-
ARN 字串必須與 中的現有IAM角色相符, AWS 帳戶 以及資料所在的位置和查詢 AWS 區域 位置。
當 QuickSight 連線到 中的另一項服務時 AWS,它會使用 IAM角色。根據預設,此較不精細的角色版本是由 QuickSight 為其使用的每個服務建立,而角色由 AWS 帳戶 管理員管理。當您ARN使用自訂許可政策新增IAM角色時,您可以覆寫需要額外保護之資料來源的更廣泛的角色。如需政策的詳細資訊,請參閱 IAM 使用者指南中的建立客戶受管政策。
使用 Athena 資料來源執行查詢
使用 API將 ARN 連接至 Athena 資料來源。若要這麼做,請在 的 RoleArn 屬性ARN中新增角色AthenaParameters。如需驗證,您可以在ARN編輯 Athena 資料來源對話方塊中查看角色。不過,角色ARN是唯讀欄位。

若要開始使用,您需要自訂IAM角色,我們會在下列範例中示範。
請記住,以下程式碼範例僅用於學習目的。此範例僅在臨時開發和測試環境中使用,不能在生產環境中使用。此範例中的政策不保護任何特定資源,這些資源必須位於可部署的政策中。此外,即使是為了開發,您也需要新增自己的 AWS 帳戶資訊。
下列命令會建立簡單的新角色,並附加一些將許可授予 的政策 QuickSight。
aws iam create-role \ --role-name TestAthenaRoleForQuickSight \ --description "Test Athena Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
識別或建立要與每個資料來源搭配使用IAM的角色後,請使用 連接政策 attach-role-policy。
aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1
驗證您的許可後,您可以透過建立新角色或更新現有角色,在 QuickSight 資料來源中使用角色。使用這些命令時,請更新 AWS 帳戶 ID 和 AWS 區域 以符合您自己的 ID。
請記住,這些範例程式碼片段不適用於生產環境。 AWS 強烈建議您為生產案例識別並使用一組最低權限政策。
aws quicksight create-data-source --aws-account-id 222222222222 \ --region us-east-1 \ --data-source-id "athena-with-custom-role" \ --cli-input-json '{ "Name": "Athena with a custom Role", "Type": "ATHENA", "data sourceParameters": { "AthenaParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight" } } }'
使用 Amazon Redshift 資料來源執行查詢
將 Amazon Redshift 資料與執行者角色關聯起來,以透過精細定義的存取政策來提升資料安全性。您可以為使用公有網路或VPC連線的 Amazon Redshift 資料來源建立執行身分角色。可以在編輯 Amazon Redshift 資料來源對話方塊中指定要使用的連線類型。Amazon Redshift Serverless 資料來源不支援執行身分角色。
下圖所示為使用公有網路連線類型的 Amazon Redshift 資料來源。

若要開始使用,您需要自訂IAM角色,我們會在下列範例中示範。下列命令會建立新的角色範例,並連接將許可授予 的政策 QuickSight。
aws iam create-role \ --role-name TestRedshiftRoleForQuickSight \ --description "Test Redshift Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
識別或建立要與每個資料來源搭配使用IAM的角色後,請將政策與 連接attach-role-policy
。如果redshift:GetClusterCredentialsWithIAM
許可已連接至您要使用的角色,則 DatabaseUser
和 的值DatabaseGroups
為選用。
aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \ --policy-document file://redshift-get-cluster-credentials-policy.json aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "*" ] } ] }
上述範例會建立使用 RoleARN
、 DatabaseUser
和 DatabaseGroups
IAM 參數的資料來源。如果您想要僅透過 IAM RoleARN
參數建立連線,請將redshift:GetClusterCredentialsWithIAM
許可連接至您的角色,如以下範例所示。
aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentialsWithIAM" ], "Resource": [ "*" ] } ] }"
驗證您的許可後,您可以透過建立新角色或更新現有角色,在 QuickSight 資料來源中使用角色。使用這些命令時,請更新 AWS 帳戶 ID 和區域以符合您自己的 ID 和 AWS 區域。
aws quicksight create-data-source \ --region us-west-2 \ --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --cli-input-json file://redshift-data-source-iam.json \ redshift-data-source-iam.json is shown as below { "AwsAccountId": "
AWSACCOUNTID
", "DataSourceId": "DATSOURCEID
", "Name": "Test redshift demo iam
", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "integ", "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com", "Port":8192
, "ClusterId": "redshiftdemocluster
", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222
:role/TestRedshiftRoleForQuickSight
", "DatabaseUser": "user", "DatabaseGroups": ["admin_group
", "guest_group
", "guest_group_1
"] } } }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID
:user/default/demoname
", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }
如果您的資料來源使用VPC連線類型,請使用下列VPC組態。
{ "AwsAccountId": "
AWSACCOUNTID
", "DataSourceId": "DATSOURCEID
", "Name": "Test redshift demo iam vpc
", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "mydb
", "Host": "vpcdemo.us-west-2.redshift.amazonaws.com
", "Port":8192
, "ClusterId": "vpcdemo
", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222
:role/TestRedshiftRoleForQuickSight
", "DatabaseUser": "user
", "AutoCreateDatabaseUser": true } } }, "VpcConnectionProperties": { "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222
:vpcConnection/VPC Name
" }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:222222222222
:user/default/demoname
", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }
如果您的資料來源使用 redshift:GetClusterCredentialsWithIAM
許可,但不使用 DatabaseUser
或 DatabaseGroups
參數,請授予角色對結構描述中部分或全部資料表的存取權。若要查看角色是否已授予特定資料表的SELECT
許可,請在 Amazon Redshift 查詢編輯器中輸入下列命令。
SELECT u.usename, t.schemaname||'.'||t.tablename, has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission FROM pg_user u CROSS JOIN pg_tables t WHERE u.usename = 'IAMR:
RoleName
' AND t.tablename =tableName
如需 Amazon Redshift 查詢編輯器中SELECT
動作的詳細資訊,請參閱 SELECT。
若要授予SELECT
權限給角色,請在 Amazon Redshift 查詢編輯器中輸入下列命令。
GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:
Rolename
";
如需 Amazon Redshift 查詢編輯器中GRANT
動作的詳細資訊,請參閱 GRANT。
使用 Amazon S3 資料來源執行查詢
Amazon S3 資料來源包含清單檔案, QuickSight 用於尋找和剖析您的資料。您可以透過 QuickSight 主控台上傳JSON資訊清單檔案,也可以提供指向 S3 儲存貯體中JSON檔案URL的 。如果您選擇提供 URL, QuickSight 則必須授予許可才能存取 Amazon S3 中的檔案。使用 QuickSight 管理主控台來控制資訊清單檔案及其參考資料的存取。
使用 RoleArn 屬性,您可以透過覆寫整個帳戶角色的自訂IAM角色,授予資訊清單檔案及其參考資料的存取權。使用 API將 ARN 連接至 Amazon S3 資料來源的清單檔案。若要這麼做,請在 S3Parameters的 RoleArn 屬性ARN中包含 角色。如需驗證,您可以在ARN編輯 S3 資料來源對話方塊中查看角色。不過,角色ARN是唯讀欄位,如下列螢幕擷取畫面所示。

若要開始使用,請建立 Amazon S3 清單檔案。然後,您可以在建立新的 Amazon S3 資料集 QuickSight 時將其上傳至 Amazon,或將檔案放入包含資料檔案的 Amazon S3 儲存貯體。檢視下列範例以了解清單檔案的外觀:
{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }
如需如何建立清單檔案的詳細資訊,請參閱 支援的 Amazon S3 清單檔案格式。
建立資訊清單檔案並將其新增至 Amazon S3 儲存貯體或將其上傳至 後 QuickSight,請在 中建立或更新授予s3:GetObject
存取權IAM的現有角色。下列範例說明如何使用 更新現有IAM角色 AWS API:
aws iam put-role-policy \ --role-name QuickSightAccessToS3RunAsRoleBucket \ --policy-name GrantS3RunAsRoleAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "
arn:aws:s3:::s3-bucket-name
" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json
" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/*
" } ] }'
政策授予 s3:GetObject
存取權限後,您可以開始建立資料來源,將更新的 put-role-policy
套用至 Amazon S3 資料來源的清單檔案。
aws quicksight create-data-source --aws-account-id
111222333444
--regionus-west-2
--endpointhttps://quicksight.us-west-2.quicksight.aws.com/
\ --data-source-id "s3-run-as-role-demo-source
" \ --cli-input-json '{ "Name": "S3 with a custom Role
", "Type": "S3", "DataSourceParameters": { "S3Parameters": { "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket
", "ManifestFileLocation": { "Bucket": "s3-bucket-name
", "Key": "manifest.json
" } } } }'
驗證許可後,您可以在 QuickSight 資料來源中使用角色,方法是建立新角色或更新現有角色。使用這些命令時,請務必更新 AWS 帳戶 ID 和 AWS 區域 以符合您自己的 ID。