Exécuter des requêtes en tant que rôle IAM dans Amazon QuickSight - Amazon QuickSight

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécuter des requêtes en tant que rôle IAM dans Amazon QuickSight

Vous pouvez renforcer la sécurité des données en utilisant des stratégies d'accès détaillées plutôt que des autorisations plus larges pour les sources de données connectées à Amazon Athena, Amazon Redshift ou Amazon S3. Vous commencez par créer un rôle AWS Identity and Access Management (IAM) avec des autorisations à activer lorsqu'une personne ou une API lance une requête. Ensuite, un QuickSight administrateur ou un développeur Amazon attribue le rôle IAM à une source de données Athena ou Amazon S3. Avec le rôle en place, toute personne ou API qui exécute la requête dispose des autorisations exactes nécessaires pour exécuter la requête.

Voici quelques éléments à prendre en compte avant de vous engager à mettre en œuvre des rôles run-as pour améliorer la sécurité des données :

  • Expliquez comment la sécurité supplémentaire vous avantage.

  • Consultez votre QuickSight administrateur pour savoir si l'ajout de rôles aux sources de données vous permet de mieux atteindre vos objectifs ou exigences en matière de sécurité.

  • Demandez-vous si ce type de sécurité, compte tenu du nombre de sources de données, de personnes et d'applications concernées, peut être documenté et maintenu par votre équipe ? Si ce n'est pas le cas, qui se chargera de cette partie du travail ?

  • Dans une organisation structurée, localisez les parties prenantes dans les équipes parallèles des opérations, du développement et de l'assistance informatique. Sollicitez leur expérience, leurs conseils et leur volonté de soutenir votre projet.

  • Avant de lancer votre projet, envisagez de faire une démonstration de faisabilité en impliquant les personnes qui ont besoin d'accéder aux données.

Les règles suivantes s'appliquent à l'utilisation des rôles run-as avec Athena, Amazon Redshift et Amazon S3 :

  • Chaque source de données ne peut être associée qu'à une seule source de données RoleArn. Les consommateurs de la source de données, qui accèdent généralement à des jeux de données et à des représentations visuelles, peuvent générer de nombreux types de requêtes différents. Le rôle impose des limites aux requêtes qui fonctionnent et à celles qui ne fonctionnent pas.

  • L'ARN doit correspondre à un rôle IAM Compte AWS identique à celui de l' QuickSight instance qui l'utilise.

  • Le rôle IAM doit avoir une relation de confiance lui permettant QuickSight d'assumer le rôle.

  • L'identité qui QuickSight appelle les API doit être autorisée à transmettre le rôle avant de pouvoir mettre à jour la RoleArn propriété. Vous ne devez transmettre le rôle que lors de la création ou de la mise à jour de l'ARN du rôle. Les autorisations ne sont pas réévaluées par la suite. De même, l'autorisation n'est pas requise lorsque l'ARN du rôle est omis.

  • Lorsque l'ARN de rôle est omis, la source de données Athena ou Amazon S3 utilise les politiques de rôle et de réduction d'étendue applicables à l'ensemble du compte.

  • Lorsque l'ARN du rôle est présent, le rôle de l'ensemble du compte et les politiques de réduction de l'étendue sont tous deux ignorés. Pour les sources de données Athena, les autorisations Lake Formation ne sont pas ignorées.

  • Pour les sources de données Amazon S3, le fichier manifeste et les données spécifiées par le fichier manifeste doivent être accessibles à l'aide du rôle IAM.

  • La chaîne ARN doit correspondre à un rôle IAM existant dans Compte AWS et Région AWS où les données sont localisées et interrogées.

Lorsqu'il QuickSight se connecte à un autre service en AWS, il utilise un rôle IAM. Par défaut, cette version moins détaillée du rôle est créée QuickSight pour chaque service utilisé, et le rôle est géré par des Compte AWS administrateurs. Lorsque vous ajoutez un ARN de rôle IAM avec une politique d'autorisations personnalisée, vous remplacez le rôle plus large pour vos sources de données qui ont besoin d'une protection supplémentaire. Pour plus d'informations sur les politiques, consultez Création d'une politique gérée par le client dans le Guide de l'utilisateur IAM.

Exécution de requêtes avec les sources de données Athena

Utilisez l'API pour attacher l'ARN à la source de données Athena. Pour ce faire, ajoutez l'ARN du rôle dans la RoleArnpropriété de AthenaParameters. Pour vérification, vous pouvez voir l'ARN du rôle dans la boîte de dialogue Modifier la source de données Athena. Toutefois, l'ARN du rôle est un champ en lecture seule.

La boîte de dialogue Modifier la source de données Athena qui affiche l'ARN du rôle.

Pour commencer, vous avez besoin d'un rôle IAM personnalisé, que nous démontrons dans l'exemple suivant.

Gardez à l'esprit que l'exemple de code suivant n'est donné qu'à des fins d'apprentissage. N'utilisez cet exemple que dans un environnement temporaire de développement et de test, et non dans un environnement de production. La politique de cet exemple ne sécurise aucune ressource spécifique, ce qui doit figurer dans une politique déployable. De plus, même pour le développement, vous devez ajouter vos propres informations de AWS compte.

Les commandes suivantes créent un nouveau rôle simple et associent quelques politiques qui accordent des autorisations à 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" } ] }'

Après avoir identifié ou créé un rôle IAM à utiliser avec chaque source de données, attachez les politiques à l'aide du 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

Après avoir vérifié vos autorisations, vous pouvez utiliser le rôle dans les sources de QuickSight données en créant un nouveau rôle ou en mettant à jour un rôle existant. Lorsque vous utilisez ces commandes, mettez à jour l' Compte AWS identifiant Région AWS pour qu'il corresponde au vôtre.

N'oubliez pas que ces exemples d'extraits de code ne sont pas destinés aux environnements de production. AWS vous recommande vivement d'identifier et d'utiliser un ensemble de politiques de moindre privilège pour vos scénarios de production.

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" } } }'

Exécution de requêtes avec les sources de données Amazon Redshift

Connectez vos données Amazon Redshift avec le rôle run-as pour renforcer la sécurité de vos données avec des stratégies détaillées d'accès. Vous pouvez créer un rôle run-as pour les sources de données Amazon Redshift qui utilisent un réseau public ou une connexion Amazon VPC. Vous spécifiez le type de connexion que vous voulez utiliser dans la boîte de dialogue Modifier la source de données Amazon Redshift. Le rôle run-as n'est pas pris en charge pour les sources de données Amazon Redshift Serverless.

L'image ci-dessous montre une source de données Amazon Redshift qui utilise le type de connexion Réseau public.

La boîte de dialogue Modifier la source de données Amazon S3 affiche le type de connexion.

Pour commencer, vous avez besoin d'un rôle IAM personnalisé, que nous démontrons dans l'exemple suivant. Les commandes suivantes créent un exemple de nouveau rôle et associent des politiques qui accordent des autorisations à 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" } ] }'

Après avoir identifié ou créé un rôle IAM à utiliser avec chaque source de données, attachez les politiques avec une attach-role-policy. Si l'redshift:GetClusterCredentialsWithIAMautorisation est attachée au rôle que vous souhaitez utiliser, les valeurs pour DatabaseUser et DatabaseGroups sont facultatives.

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": [ "*" ] } ] }

L'exemple ci-dessus crée une source de données qui utilise les paramètres RoleARNDatabaseUser,, et DatabaseGroups IAM. Si vous souhaitez établir la connexion uniquement via le RoleARN paramètre IAM, associez l'redshift:GetClusterCredentialsWithIAMautorisation à votre rôle, comme indiqué dans l'exemple ci-dessous.

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": [ "*" ] } ] }"

Après avoir vérifié vos autorisations, vous pouvez utiliser le rôle dans les sources de QuickSight données en créant un nouveau rôle ou en mettant à jour un rôle existant. Lorsque vous utilisez ces commandes, mettez à jour l'ID du AWS compte et AWS la région pour qu'ils correspondent aux vôtres.

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" ] } ] }

Si votre source de données utilise le type de connexion VPC, utilisez la configuration VPC suivante.

{ "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" ] } ] }

Si votre source de données utilise l'redshift:GetClusterCredentialsWithIAMautorisation mais pas les DatabaseGroups paramètres DatabaseUser ou, accordez au rôle l'accès à certaines ou à toutes les tables du schéma. Pour savoir si un rôle a reçu SELECT des autorisations pour accéder à une table spécifique, entrez la commande suivante dans l'éditeur de requêtes 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

Pour plus d'informations sur l'SELECTaction dans l'éditeur de requêtes Amazon Redshift, consultez SELECT.

Pour accorder SELECT des autorisations au rôle, entrez la commande suivante dans l'éditeur de requêtes Amazon Redshift.

GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:Rolename";

Pour plus d'informations sur l'GRANTaction dans l'éditeur de requêtes Amazon Redshift, consultez GRANT.

Exécution de requêtes avec des sources de données Amazon S3

Les sources de données Amazon S3 contiennent un fichier manifeste qui QuickSight permet de rechercher et d'analyser vos données. Vous pouvez télécharger un fichier manifeste JSON via la QuickSight console ou fournir une URL pointant vers un fichier JSON dans un compartiment S3. Si vous choisissez de fournir une URL, vous QuickSight devez être autorisé à accéder au fichier dans Amazon S3. Utilisez la console d' QuickSight administration pour contrôler l'accès au fichier manifeste et aux données auxquelles il fait référence.

Grâce à cette RoleArnpropriété, vous pouvez accorder l'accès au fichier manifeste et aux données auxquelles il fait référence par le biais d'un rôle IAM personnalisé qui remplace le rôle à l'échelle du compte. Utilisez l'API pour attacher l'ARN au fichier manifeste de la source de données Amazon S3. Pour ce faire, incluez le rôle ARN dans la RoleArnpropriété de S3Parameters. Pour vérification, vous pouvez voir l'ARN du rôle dans la boîte de dialogue Modifier la source de données S3. Cependant, ARN du rôle est un champ en lecture seule, comme le montre la capture d'écran suivante.

La boîte de dialogue Modifier la source de données Amazon S3 affiche l'ARN du rôle.

Pour commencer, créez un fichier manifeste Amazon S3. Vous pouvez ensuite le télécharger sur Amazon QuickSight lorsque vous créez un nouvel ensemble de données Amazon S3 ou le placer dans le compartiment Amazon S3 qui contient vos fichiers de données. Consultez l'exemple suivant pour voir à quoi peut ressembler un fichier manifeste :

{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }

Pour savoir comment créer un fichier manifeste, consultez la rubrique Formats pris en charge pour les fichiers manifestes Amazon S3.

Une fois que vous avez créé un fichier manifeste et que vous l'avez ajouté à votre compartiment Amazon S3 ou que vous l'avez chargé QuickSight, créez ou mettez à jour un rôle existant dans IAM qui accorde s3:GetObject l'accès. L'exemple suivant montre comment mettre à jour un rôle IAM existant avec l' 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/*" } ] }'

Après que votre stratégie accorde l'accès à s3:GetObject, vous pouvez commencer à créer des sources de données qui appliquent la put-role-policy mise à jour au fichier manifeste de la source de données Amazon S3.

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" } } } }'

Après avoir vérifié vos autorisations, vous pouvez utiliser le rôle dans les sources de QuickSight données, soit en créant un nouveau rôle, soit en mettant à jour un rôle existant. Lorsque vous utilisez ces commandes, veillez à mettre à jour l' Compte AWS identifiant et Région AWS à le faire correspondre au vôtre.