Exemple de politiques d'autorisation IAM pour autoriser la requête fédérée Athena - Amazon Athena

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.

Exemple de politiques d'autorisation IAM pour autoriser la requête fédérée Athena

Les exemples de politique d'autorisation présentés dans cette rubrique illustrent les actions autorisées requises et les ressources pour lesquelles elles sont autorisées. Examinez attentivement ces politiques et modifiez-les en fonction de vos besoins avant de les attacher aux identités IAM.

Pour plus d'informations sur l'ajout des politiques aux identités IAM, consultez la rubrique Ajout et suppression des autorisations d'identité IAM du Guide de l'utilisateur IAM.

Exemple
 – Autoriser un principal IAM à exécuter et à renvoyer des résultats à l'aide de la requête fédérée Athena

La politique d'autorisations basée sur l'identité suivante autorise les actions dont un utilisateur ou un autre principal IAM a besoin pour utiliser la requête fédérée Athena. Les principals autorisés à effectuer ces actions peuvent exécuter des requêtes spécifiant les catalogues Athena associés à une source de données fédérée.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Athena", "Effect": "Allow", "Action": [ "athena:GetDataCatalog", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "arn:aws:athena:*:111122223333:workgroup/WorkgroupName", "arn:aws:athena:aws_region:111122223333:datacatalog/DataCatalogName" ] }, { "Sid": "ListAthenaWorkGroups", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" }, { "Sid": "Lambda", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction" ] }, { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::MyLambdaSpillBucket", "arn:aws:s3:::MyLambdaSpillBucket/*", "arn:aws:s3:::MyQueryResultsBucket", "arn:aws:s3:::MyQueryResultsBucket/*" ] } ] }
Explication des autorisations
Actions autorisées Explication
"athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution"

Autorisations Athena nécessaires pour exécuter des requêtes fédérées.

"athena:GetDataCatalog", "athena:GetQueryExecution," "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution"

Autorisations Athena nécessaires pour exécuter des requêtes de vues fédérées. L'GetDataCatalogaction est requise pour les vues.

"lambda:InvokeFunction"
Permet aux requêtes d'invoquer les AWS Lambda fonctions pour les AWS Lambda fonctions spécifiées dans le Resource bloc. Par exemplearn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction, où MyAthenaLambdaFunctionindique le nom d'une fonction Lambda à invoquer. Comme le montre l'exemple, plusieurs fonctions peuvent être spécifiées.
"s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject"

Les s3:GetBucketLocation autorisations s3:ListBucket et sont requises pour accéder au compartiment de sortie des requêtes pour les principaux IAM qui s'exécutent. StartQueryExecution

s3:PutObjects3:ListMultipartUploadParts, et s3:AbortMultipartUpload autorisez l'écriture des résultats de la requête dans tous les sous-dossiers du bucket de résultats de requête tel que spécifié par l'identifiant de arn:aws:s3:::MyQueryResultsBucket/* ressource, où se MyQueryResultsBuckettrouve le bucket de résultats de requête Athena. Pour plus d’informations, consultez Travailler avec les résultats des requêtes et les requêtes récentes.

s3:GetObjectpermet de lire les résultats de la requête et l'historique des requêtes pour la ressource spécifiée sous la formearn:aws:s3:::MyQueryResultsBucket, où se MyQueryResultsBuckettrouve le bucket de résultats de requête Athena.

s3:GetObjectpermet également de lire à partir de la ressource spécifiée sous la forme"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*", où MyLambdaSpillPrefixest spécifiée dans la configuration de la ou des fonctions Lambda invoquées.

Exemple
 – Autoriser un principal IAM à créer un connecteur de source de données
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:ListVersionsByFunction", "iam:CreateRole", "lambda:GetFunctionConfiguration", "iam:AttachRolePolicy", "iam:PutRolePolicy", "lambda:PutFunctionConcurrency", "iam:PassRole", "iam:DetachRolePolicy", "lambda:ListTags", "iam:ListAttachedRolePolicies", "iam:DeleteRolePolicy", "lambda:DeleteFunction", "lambda:GetAlias", "iam:ListRolePolicies", "iam:GetRole", "iam:GetPolicy", "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ListAliases", "lambda:UpdateFunctionConfiguration", "iam:DeleteRole", "lambda:UpdateFunctionCode", "s3:GetObject", "lambda:AddPermission", "iam:UpdateRole", "lambda:DeleteFunctionConcurrency", "lambda:RemovePermission", "iam:GetRolePolicy", "lambda:GetPolicy" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*", "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*", "arn:aws:iam::*:role/RoleName", "arn:aws:iam::111122223333:policy/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "cloudformation:CreateUploadBucket", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:ListExports", "cloudformation:ListStacks", "cloudformation:ListImports", "lambda:ListFunctions", "iam:ListRoles", "lambda:GetAccountSettings", "ec2:DescribeSecurityGroups", "cloudformation:EstimateTemplateCost", "ec2:DescribeVpcs", "lambda:ListEventSourceMappings", "cloudformation:DescribeAccountLimits", "ec2:DescribeSubnets", "cloudformation:CreateStackSet", "cloudformation:ValidateTemplate" ], "Resource": "*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": "cloudformation:*", "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*", "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*", "arn:aws:cloudformation:*:*:transform/Serverless-*", "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*", "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*" ] }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "serverlessrepo:*", "Resource": "arn:aws:serverlessrepo:*:*:applications/*" } ] }
Explication des autorisations
Actions autorisées Explication
"lambda:CreateFunction", "lambda:ListVersionsByFunction", "lambda:GetFunctionConfiguration", "lambda:PutFunctionConcurrency", "lambda:ListTags", "lambda:DeleteFunction", "lambda:GetAlias", "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ListAliases", "lambda:UpdateFunctionConfiguration", "lambda:UpdateFunctionCode", "lambda:AddPermission", "lambda:DeleteFunctionConcurrency", "lambda:RemovePermission", "lambda:GetPolicy" "lambda:GetAccountSettings", "lambda:ListFunctions", "lambda:ListEventSourceMappings",

Autoriser la création et la gestion des fonctions Lambda répertoriées en tant que ressources. Dans l'exemple, un préfixe de nom est utilisé dans l'identifiant de ressourcearn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*, tandis qu'un préfixe partagé MyAthenaLambdaFunctionsPrefixest utilisé dans le nom d'un groupe de fonctions Lambda afin qu'elles n'aient pas besoin d'être spécifiées individuellement en tant que ressources. Vous pouvez spécifier une ou plusieurs ressources de fonction Lambda.

"s3:GetObject"
Permet la lecture d'un bucket qui AWS Serverless Application Repository nécessite les informations spécifiées par l'identifiant de ressourcearn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*. Ce compartiment peut être spécifique à votre compte.
"cloudformation:*"

Permet la création et la gestion des AWS CloudFormation piles spécifiées par la ressource StackPrefixMyCF. Ces piles et ensembles de piles permettent de AWS Serverless Application Repository déployer les connecteurs et les UDF.

"serverlessrepo:*"
Permet de rechercher, d'afficher, de publier et de mettre à jour des applications dans le AWS Serverless Application Repository, spécifié par l'identifiant de ressourcearn:aws:serverlessrepo:*:*:applications/*.