Ejemplos de políticas de permisos de IAM para permitir funciones definidas por el usuario (UDF) de Amazon Athena - Amazon Athena

Ejemplos de políticas de permisos de IAM para permitir funciones definidas por el usuario (UDF) de Amazon Athena

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 adjuntar políticas de permisos similares a las identidades de IAM.

ejemplo
: permitir que una entidad principal de IAM ejecute y devuelva consultas que contengan una instrucción UDF de Athena

La siguiente política de permisos basada en identidad permite acciones que un usuario u otra entidad principal de IAM necesitan para ejecutar consultas que usan instrucciones UDF de Athena.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "lambda:InvokeFunction", "athena:GetQueryResults", "s3:ListMultipartUploadParts", "athena:GetWorkGroup", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "athena:StopQueryExecution", "athena:GetQueryExecution", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:athena:*:MyAWSAcctId:workgroup/MyAthenaWorkGroup", "arn:aws:s3:::MyQueryResultsBucket/*", "arn:aws:lambda:*:MyAWSAcctId:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:MyAWSAcctId:function:AnotherAthenaLambdaFunction" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" } ] }
Explicación de permisos
Acciones permitidas Explicación
"athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution",

Permisos de Athena necesarios para ejecutar consultas en el grupo de trabajo de MyAthenaWorkGroup.

"s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload"

s3:PutObject 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 las consultas, consultas recientes y archivos de salida.

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. Para obtener más información, consulte Trabajo con resultados de las consultas, consultas recientes y archivos de salida.

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 Lambda invocadas.

"lambda:InvokeFunction"
Permite que las consultas invoquen las funciones AWS Lambda especificadas en el bloque Resource. Por ejemplo, arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction, donde MyAthenaLambdaFunction especifica el nombre de una función Lambda que se va a invocar. Se pueden especificar varias funciones como se muestra en el ejemplo.
ejemplo
: permitir que una entidad principal de IAM cree una UDF de Athena
{ "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/*" } ] }
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/*.
"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/*.