Autoriser l'accès à Athena Federated Query : exemples de politiques - 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.

Autoriser l'accès à Athena Federated Query : 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 associer aux IAM identités.

Pour plus d'informations sur l'association de politiques aux IAM identités, consultez la section Ajouter et supprimer des autorisations IAM d'identité dans le Guide de IAM l'utilisateur.

Exemple
— Autorise un IAM principal à exécuter et à renvoyer des résultats à l'aide d'Athena Federated Query

La politique d'autorisation basée sur l'identité suivante autorise les actions requises par un utilisateur ou un autre IAM principal pour utiliser Athena Federated Query. 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ù MyAthenaLambdaFunction spécifie 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 IAM principaux qui s'exécutentStartQueryExecution.

s3:PutObjects3:ListMultipartUploadParts, et s3:AbortMultipartUpload autoriser l'écriture des résultats de la requête dans tous les sous-dossiers du bucket de résultats de requête, comme spécifié par l'identifiant de arn:aws:s3:::MyQueryResultsBucket/* ressource, où MyQueryResultsBucket est le bucket de résultats de requête Athena. Pour de plus amples informations, veuillez consulter Travailler avec les résultats des requêtes et les requêtes récentes.

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

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

Exemple
— Autoriser un IAM principal à 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'identifiant de ressourcearn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*, tandis qu'un préfixe partagé MyAthenaLambdaFunctionsPrefix est 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 ressourceMyCFStackPrefix. Ces piles et ensembles de piles permettent de AWS Serverless Application Repository déployer les connecteurs et. UDFs

"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/*.
"ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"

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