Autorisation d’accès aux requêtes fédérées Athena – Exemples de politiques - Amazon Athena

Autorisation d’accès aux requêtes fédérées Athena – Exemples de politiques

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.

JSON
{ "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:us-east-1: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’action GetDataCatalog est requise pour les vues.

"lambda:InvokeFunction"
Permet aux requêtes d'invoquer les fonctions AWS Lambda pour les fonctions AWS Lambda spécifiées dans le bloc Resource. Par exemple, arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction, où MyAthenaLambdaFunction spécifie le nom d'une fonction Lambda à invoquer. Comme illustré dans l’exemple, il est possible de spécifier plusieurs fonctions.
"s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject"

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

s3:PutObject, s3:ListMultipartUploadParts et s3:AbortMultipartUpload autorisent l’écriture des résultats des requêtes dans tous les sous-dossiers du compartiment de résultats des requêtes spécifié par l’identificateur de ressource arn:aws:s3:::MyQueryResultsBucket/*, où MyQueryResultsBucket correspond au compartiment de résultats des requêtes Athena. Pour de plus amples informations, consultez Utilisation des résultats des requêtes et des requêtes récentes.

s3:GetObject permet de lire les résultats de requête et l'historique des requêtes pour la ressource spécifiée comme arn:aws:s3:::MyQueryResultsBucket, où MyQueryResultsBucket est le compartiment de résultats de requête Athena.

s3:GetObject permet également de lire à partir de la ressource spécifiée comme "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*", où MyLambdaSpillPrefix est spécifié 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/*" }, { "Sid": "ECR", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "arn:aws:ecr:*:*:repository/*" } ] }
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’identificateur de ressource arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*, où MyAthenaLambdaFunctionsPrefix est un préfixe partagé utilisé dans le nom d’un groupe de fonctions Lambda afin qu’il ne soit pas nécessaire de les spécifier individuellement en tant que ressources. Vous pouvez spécifier une ou plusieurs ressources de fonction Lambda.

"s3:GetObject"
Permet la lecture d'un compartiment qui est requis par AWS Serverless Application Repository tel que spécifié par l'identificateur de ressource arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*. Ce compartiment peut être spécifique à votre compte.
"cloudformation:*"

Permet de créer et de gérer des piles CloudFormation spécifiées par la ressource MyCFStackPrefix. Ces piles et ensembles de piles représentent la façon dont AWS Serverless Application Repository déploie les connecteurs et les fonctions définies par l'utilisateur.

"serverlessrepo:*"
Permet la recherche, l'affichage, la publication et la mise à jour des applications dans AWS Serverless Application Repository, spécifié par l'identificateur de ressource arn:aws:serverlessrepo:*:*:applications/*.
"ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"

Permet à la fonction Lambda créée d’accéder à l’image ECR du connecteur de fédération.