Amazon で IAM ロールとしてクエリを実行する QuickSight - Amazon QuickSight

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon で IAM ロールとしてクエリを実行する QuickSight

Amazon Athena、Amazon Redshift または Amazon S3 に接続されたデータソースに対してより広範な許可を与えるのではなく、きめ細かなアクセスポリシーを使用することで、データセキュリティを強化できます。まず、ユーザーまたは API がクエリを開始したときにアクティブになる権限を持つ AWS Identity and Access Management (IAM) ロールを作成します。次に、Amazon QuickSight 管理者または開発者が IAM ロールを Athena または Amazon S3 データソースに割り当てます。ロールを設定すると、クエリを実行するすべてのユーザーまたは API に、クエリを実行するのに必要な正確な権限が付与されます。

データセキュリティを強化するために run-as ロールの実装に取り掛かる前に、考慮すべき点がいくつかあります。

  • 追加のセキュリティがどのように役立つかを明確にします。

  • QuickSight 管理者と協力して、データソースにロールを追加すると、セキュリティの目標や要件をより適切に満たすことができるかどうかを確認してください。

  • データソース、関係する人、アプリケーションの数を考慮して、この種のセキュリティをチームで適切に文書化して管理できるかどうか尋ねてみてください。そうでない場合、その作業は誰が引き受けるのでしょうか?

  • 構造化された組織では、運用、開発、IT サポートといった並列チームに関係者を配置します。彼らの経験、アドバイス、そしてあなたの計画をサポートしたいという意欲を求めてください。

  • プロジェクトを開始する前に、データへのアクセスを必要とする人を対象とした概念実証を行うことを検討してください。

Athena、Amazon Redshift または Amazon S3 での run-as ロールの使用には、次のルールが適用されます。

  • 各データソースには、 を 1 つだけ関連付けることができます RoleArn。通常、データセットやビジュアルにアクセスするデータソースの使用者は、さまざまな種類のクエリを生成できます。このロールは、どのクエリが機能するか、どのクエリが機能しないかについての境界を設定します。

  • ARN は、それを使用する QuickSight インスタンス AWS アカウント と同じ の IAM ロールに対応する必要があります。

  • IAM ロールには、 がロールを引き受け QuickSight ることができる信頼関係が必要です。

  • QuickSightの APIs を呼び出す ID には、 RoleArn プロパティを更新する前にロールを渡すアクセス許可が必要です。ロール ARN を作成または更新する場合にのみ、ロールを渡す必要があります。権限は後で再評価されません。同様に、ロール ARN を省略しても権限は不要です。

  • ロール ARN を省略すると、Athena または Amazon S3 データソースはアカウント全体のロールとスコープダウンポリシーを使用します。

  • ロール ARN が存在する場合、アカウント全体のロールとスコープダウンポリシーの両方が無視されます。Athena データソースの場合、Lake Formation 許可は無視されません。

  • Amazon S3 データソースの場合、マニフェストファイルとマニフェストファイルによって指定されたデータの両方に、IAM ロールを使用してアクセスできる必要があります。

  • ARN 文字列は、 AWS リージョン データが配置およびクエリされる AWS アカウント および 内の既存の IAM ロールと一致する必要があります。

QuickSight が の別のサービスに接続すると AWS、IAM ロールが使用されます。デフォルトでは、この詳細度の低いバージョンのロールは、使用するサービス QuickSight ごとに によって作成され、ロールは AWS アカウント 管理者によって管理されます。カスタムのアクセス権限ポリシーを含む IAM ロール ARN を追加すると、追加の保護が必要なデータソースのより広範なロールがオーバーライドされます。ポリシーの詳細については、「IAM ユーザーガイド」の「カスタマー管理ポリシーの作成」を参照してください。

Athena データソースを使用してクエリを実行する

API を使用して ARN を Athena データソースにアタッチします。そのためには、 の RoleArnプロパティにロール ARN を追加しますAthenaParameters。確認のために、[Athena データソースを編集] ダイアログボックスでロール ARN を表示できます。ただし、ロール ARN は読み取り専用フィールドです。

ロール ARN を表示する [Athena データソースを編集] のポップアップ。

開始するには、カスタム 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 リージョン して独自のものと一致します。

これらのサンプルコードスニペットは本番環境用ではないことに注意してください。 では、本番稼働用の一連の最小特権ポリシーを特定して使用することを 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 データを run-as ロールと接続して、きめ細かいアクセスポリシーでデータセキュリティを強化します。パブリックネットワークまたは VPC 接続を使用する Amazon Redshift データソース用の run-as ロールを作成できます。[Amazon Redshift データソースの編集] ダイアログボックスで使用する接続タイプを指定します。run-as ロールは、Amazon Redshift Serverless データソースではサポートされていません。

以下の画像は、[パブリックネットワーク] 接続タイプを使用する Amazon Redshift データソースを示しています。

接続タイプを表示する [Amazon S3 データソースの編集] ポップアップ。

開始するには、カスタム 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および DatabaseGroupsIAM パラメータを使用するデータソースを作成します。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 と 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 を指定する場合は、Amazon S3 のファイルにアクセスするためのアクセス許可を付与 QuickSight する必要があります。 QuickSight 管理コンソールを使用して、マニフェストファイルとそれが参照するデータへのアクセスを制御します。

RoleArn プロパティを使用すると、アカウント全体のロールを上書きするカスタム IAM ロールを介して、マニフェストファイルとそれが参照するデータへのアクセスを許可できます。API を使用して、ARN を Amazon S3 データソースのマニフェストファイルにアタッチします。そのためには、S3ParametersRoleArnプロパティにロール ARN を含めます。確認のために、[S3 データソースを編集] ダイアログボックスでロール ARN を表示できます。ただし、次のスクリーンショットに示すように、[Role ARN] (ロール ARN) は読み取り専用フィールドです。

ロール ARN を表示する [Amazon S3 データソースを編集] のポップアップ。

開始するには、Amazon S3 マニフェストファイルを作成します。次に、新しい Amazon S3 データセットを作成する QuickSight ときに Amazon にアップロードするか、データファイルを含む Amazon S3 バケットにファイルを配置できます。 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 で作成または更新します。次の例は、 AWS API を使用して既存の IAM ロールを更新する方法を示しています。

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 アクセスが付与されたら、Amazon S3 データソースのマニフェストファイルに更新された put-role-policy を適用するデータソースの作成を開始できます。

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://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 データソースで ロールを使用できます。これらのコマンドを使用する場合は、ID と を自分の AWS アカウント ID と一致する AWS リージョン ように更新してください。