Permiso de acceso a las UDF 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 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": "*" } ] }
Acciones permitidas | Explicación |
---|---|
|
Permisos de Athena necesarios para ejecutar consultas en el grupo de trabajo de |
|
|
|
Permite que las consultas invoquen las funciones AWS Lambda especificadas en el bloque Resource . Por ejemplo, arn:aws:lambda:*: , 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. |
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/*" }, { "Sid": "ECR", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "arn:aws:ecr:*:*:repository/*" } ] }
Acciones permitidas | Explicación |
---|---|
|
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 |
|
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- . |
|
Permite la creación y administración de las pilas de AWS CloudFormation especificadas por el recurso |
|
Permite buscar, ver, publicar y actualizar aplicaciones en AWS Serverless Application Repository, especificado por el identificador de recurso arn:aws:serverlessrepo:*:*:applications/* . |