Zugriff auf Athena-UDFs zulassen: Beispielrichtlinien - Amazon Athena

Zugriff auf Athena-UDFs zulassen: Beispielrichtlinien

Die Beispiele für Berechtigungsrichtlinien in diesem Thema veranschaulichen die erforderlichen zulässigen Aktionen und die Ressourcen, für die sie zulässig sind. Untersuchen Sie diese Richtlinien sorgfältig und ändern Sie sie entsprechend Ihren Anforderungen, bevor Sie IAM-Identitäten ähnliche Berechtigungsrichtlinien anfügen.

Beispiel
– Erlauben Sie einem IAM-Prinzipal, Abfragen auszuführen und zurückzugeben, die eine Athena-UDF-Anweisung enthalten

Die folgende identitätsbasierte Berechtigungsrichtlinie erlaubt Aktionen, die ein Benutzer oder ein anderer IAM-Prinzipal benötigt, um Abfragen auszuführen, die Athena-UDF-Anweisungen verwenden.

{ "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": "*" } ] }
Erläuterung der Berechtigungen
Erlaubte Aktionen Erklärung
"athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution",

Athena-Berechtigungen, die zum Ausführen von Abfragen in der MyAthenaWorkGroup-Arbeitsgruppe erforderlich sind.

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

s3:PutObject und s3:AbortMultipartUpload erlauben das Schreiben von Abfrageergebnissen in alle Unterordner des Abfrageergebnis-Buckets, wie durch den arn:aws:s3:::MyQueryResultsBucket/*-Ressourcenbezeichner angegeben, wobei MyQueryResultsBucket der Athena-Abfrageergebnis-Bucket ist. Weitere Informationen finden Sie unter Arbeiten mit Abfrageergebnissen und aktuellen Abfragen.

s3:GetObject erlaubt das Lesen der Abfrageergebnisse und des Abfrageverlaufs für die als arn:aws:s3:::MyQueryResultsBucket angegebene Ressource, wobei MyQueryResultsBucket der Athena-Abfrageergebnis-Bucket ist. Weitere Informationen finden Sie unter Arbeiten mit Abfrageergebnissen und aktuellen Abfragen.

s3:GetObject erlaubt auch das Lesen von der als "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*" angegebenen Ressource, wobei MyLambdaSpillPrefix in der Konfiguration der aufgerufenen Lambda-Funktion oder -Funktionen angegeben wird.

"lambda:InvokeFunction"
Ermöglicht Abfragen zum Aufruf der im AWS Lambda-Block angegebenen Resource-Funktionen. Beispielsweise arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction, wobei MyAthenaLambdaFunction den Namen einer Lambda-Funktion angibt, die aufgerufen werden soll. Es können mehrere Funktionen angegeben werden, wie im Beispiel gezeigt.
Beispiel
– Erlauben Sie einem IAM-Prinzipal, eine Athena-UDF zu erstellen
{ "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/*" } ] }
Erläuterung der Berechtigungen
Erlaubte Aktionen Erklärung
"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",

Erlauben der Erstellung und Verwaltung von Lambda-Funktionen, die als Ressourcen aufgeführt sind. In diesem Beispiel wird ein Namenspräfix in der Ressourcenkennung arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix* verwendet, wobei MyAthenaLambdaFunctionsPrefix ein gemeinsames Präfix ist, das im Namen einer Gruppe von Lambda-Funktionen verwendet wird, sodass diese nicht einzeln als Ressourcen angegeben werden müssen. Sie können eine oder mehrere Lambda-Funktionsressourcen angeben.

"s3:GetObject"
Erlaubt das Lesen eines Buckets, der gemäß der Ressourcenbezeichnung AWS Serverless Application Repository für arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/* erforderlich ist.
"cloudformation:*"

Erlaubt die Erstellung und Verwaltung von CloudFormation-Stacks, die von der Ressource MyCFStackPrefixangegeben werden. Diese Stacks und Stacksets stellen die Art und Weise dar, wie AWS Serverless Application Repository-Connectors und UDFs bereitstellt.

"serverlessrepo:*"
Erlaubt das Suchen, Anzeigen, Veröffentlichen und Aktualisieren von Anwendungen in AWS Serverless Application Repository, die durch den Ressourcenbezeichner arn:aws:serverlessrepo:*:*:applications/* angegeben sind.