Permiso de acceso a la consulta federada de Athena: políticas de ejemplo - Amazon Athena

Permiso de acceso a la consulta federada de Athena: políticas de ejemplo

Los ejemplos de políticas de permisos de este tema muestran las acciones permitidas necesarias y los recursos para las que están permitidas. Examine estas políticas detenidamente y modifíquelas de acuerdo con sus requisitos antes de adjuntarlas a las identidades de IAM.

Para obtener información sobre cómo adjuntar políticas a identidades de IAM, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

ejemplo
: permitir que una entidad principal de IAM ejecute y devuelva resultados mediante la consulta federada de Athena

La siguiente política de permisos basada en identidad permite acciones que un usuario u otra entidad principal de IAM necesita para utilizar la consulta federada de Athena. Las entidades principales a las que se les permite realizar estas acciones pueden ejecutar consultas que especifican catálogos de Athena asociados a un origen de datos federado.

{ "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/*" ] } ] }
Explicación de permisos
Acciones permitidas Explicación
"athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution"

Permisos de Athena necesarios para ejecutar consultas federadas.

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

Permisos de Athena necesarios para ejecutar consultas de vistas federadas. La acción GetDataCatalog es obligatoria para las vistas.

"lambda:InvokeFunction"
Permite que las consultas invoquen las funciones AWS Lambda para las funciones de AWS Lambda especificadas en el bloque Resource. Por ejemplo, arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction, donde MyAthenaLambdaFunction especifica el nombre de una función de Lambda que se va a invocar. Se pueden especificar varias funciones, como se muestra en el ejemplo.
"s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject"

Los permisos s3:ListBucket y s3:GetBucketLocation son necesarios para acceder al bucket de resultados de la consulta para las entidades principales de IAM que ejecutan StartQueryExecution.

s3:PutObject, s3:ListMultipartUploadParts y s3:AbortMultipartUpload permiten escribir los resultados de la consulta en todas las subcarpetas del bucket de resultados de la consulta según lo especificado por el identificador de recursos arn:aws:s3:::MyQueryResultsBucket/*, donde MyQueryResultsBucket es el bucket de resultados de la consulta de Athena. Para obtener más información, consulte Trabajo con resultados de la consulta y consultas recientes.

s3:GetObject permite leer los resultados de la consulta y el historial de consultas para el recurso especificado como arn:aws:s3:::MyQueryResultsBucket, donde MyQueryResultsBucket es el bucket de resultados de la consulta de Athena.

s3:GetObject también permite leer desde el recurso especificado como "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*", donde MyLambdaSpillPrefix se especifica en la configuración de la función o funciones de Lambda invocadas.

ejemplo
: permitir que una entidad principal de IAM cree un conector de origen de datos
{ "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/*" } ] }
Explicación de permisos
Acciones permitidas Explicación
"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",

Permita la creación y administración de las funciones de Lambda enumeradas como recursos. En el ejemplo, se utiliza un prefijo de nombre en el identificador de recurso arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*, donde MyAthenaLambdaFunctionsPrefix es un prefijo compartido utilizado en el nombre de un grupo de funciones de Lambda para que no sea necesario especificarlas individualmente como recursos. Puede especificar uno o más recursos de funciones de Lambda.

"s3:GetObject"
Permite la lectura de un bucket que AWS Serverless Application Repository requiere según lo especificado por el identificador de recurso arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*. Este bucket puede ser específico de su cuenta.
"cloudformation:*"

Permite la creación y administración de las pilas de AWS CloudFormation especificadas por el recurso MyCFStackPrefix. Estas pilas y conjuntos de pilas indican la forma en la que AWS Serverless Application Repository implementa los conectores y las UDF.

"serverlessrepo:*"
Permite buscar, ver, publicar y actualizar aplicaciones en AWS Serverless Application Repository, especificado por el identificador de recurso arn:aws:serverlessrepo:*:*:applications/*.
"ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"

Permite que la función de Lambda creada obtenga acceso a la imagen ECR del conector de federación.