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écution de requêtes en tant que IAM rôle 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 un utilisateur API lance une requête. Ensuite, un QuickSight administrateur ou un développeur Amazon attribue le IAM rôle à une source de données Athena ou Amazon S3. Une fois le rôle en place, toute personne ou API personne exécutant 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.
-
Le ARN doit correspondre à un IAM rôle Compte AWS identique à celui de l' QuickSight instance qui l'utilise.
-
Le IAM rôle doit avoir une relation de confiance lui QuickSight permettant d'assumer le rôle.
-
L'identité de l' QuickSightappelant APIs doit être autorisée à transmettre le rôle avant de pouvoir mettre à jour la
RoleArn
propriété. Il vous suffit de transmettre le rôle lors de sa création ou de sa mise à jourARN. Les autorisations ne sont pas réévaluées par la suite. De même, l'autorisation n'est pas requise lorsque le rôle ARN est omis. -
Lorsque le rôle ARN est omis, la source de données Athena ou Amazon S3 utilise le rôle à l'échelle du compte et les politiques de portée réduite.
-
Lorsque le rôle ARN est présent, le rôle à l'échelle du compte et toute politique de délimitation sont 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 IAM rôle.
-
La ARN chaîne doit correspondre à un IAM rôle existant dans le Compte AWS et l' Région AWS endroit où les données sont localisées et interrogées.
Lorsqu'il QuickSight se connecte à un autre service dans AWS, il utilise un IAM rôle. 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 IAM rôle ARN doté d'une politique d'autorisation personnalisée, vous remplacez le rôle plus large accordé à vos sources de données qui nécessitent une protection supplémentaire. Pour plus d'informations sur les politiques, voir Création d'une politique gérée par le client dans le Guide de IAM l'utilisateur.
Exécution de requêtes avec les sources de données Athena
Utilisez le API pour joindre le ARN à la source de données Athena. Pour ce faire, ajoutez le rôle ARN dans la RoleArnpropriété de AthenaParameters. À des fins de vérification, vous pouvez voir le rôle dans ARN la boîte de dialogue Modifier la source de données Athena. Toutefois, le champ Rôle ARN est en lecture seule.
Pour commencer, vous avez besoin d'un IAM rôle personnalisé, comme nous le 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 IAM rôle à utiliser avec chaque source de données, associez 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 d'exécution pour les sources de données Amazon Redshift qui utilisent un réseau public ou une connexion. 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.
Pour commencer, vous avez besoin d'un IAM rôle personnalisé, comme nous le 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 IAM rôle à utiliser avec chaque source de données, associez les politiques à unattach-role-policy
. Si l'redshift:GetClusterCredentialsWithIAM
autorisation 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 DatabaseGroups
IAM paramètres RoleARN
DatabaseUser
,, et. Si vous souhaitez établir la connexion uniquement via le IAM RoleARN
paramètre, associez l'redshift:GetClusterCredentialsWithIAM
autorisation à 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 VPC connexion, utilisez la VPC configuration 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:GetClusterCredentialsWithIAM
autorisation 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'SELECT
action 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'GRANT
action 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 JSON manifeste via la QuickSight console ou fournir un fichier URL pointant vers un JSON fichier d'un compartiment S3. Si vous choisissez de fournir unURL, 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 IAM rôle personnalisé qui remplace le rôle à l'échelle du compte. Utilisez le API pour joindre le 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. À des fins de vérification, vous pouvez voir le rôle ARN dans la boîte de dialogue Modifier la source de données S3. Toutefois, le champ ARN Role est en lecture seule, comme le montre la capture d'écran ci-dessous.
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 lequel vous autorisez s3:GetObject
l'accès. L'exemple suivant montre comment mettre à jour un IAM rôle existant avec 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
--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
" } } } }'
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.