Zugriff auf Athena Federated Query zulassen: Beispiel-Richtlinien - Amazon Athena

Zugriff auf Athena Federated Query zulassen: Beispiel-Richtlinien

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 diese an IAM-Identitäten anfügen.

Weitere Informationen zum Anfügen von Richtlinien an IAM-Identitäten finden Sie unter Hinzufügen und Entfernen von IAM-Identitätsberechtigungen im IAM-Benutzerhandbuch.

Beispiel
– Ausführen und Zurückgeben von Ergebnissen durch einen IAM-Prinzipal mithilfe von Athena Federated Query zulassen

Die folgende identitätsbasierte Berechtigungsrichtlinie ermöglicht Aktionen, die ein Benutzer oder ein anderer IAM-Prinzipal erfordert, um Athena Federated Query zu verwenden. Prinzipale, die diese Aktionen ausführen dürfen, können Abfragen ausführen, die Athena-Kataloge angeben, die einer Verbunddatenquelle zugeordnet sind.

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

Athena-Berechtigungen, die zum Ausführen von Verbundabfragen erforderlich sind.

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

Athena-Berechtigungen, die zum Ausführen von Verbundansichtsabfragen erforderlich sind. Die Aktion GetDataCatalog ist erforderlich für Ansichten.

"lambda:InvokeFunction"
Erlaubt Abfragen zum Aufruf der AWS Lambda-Funktionen für die AWS Lambda-Funktionen, die im Resource-Block angegeben sind- 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.
"s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject"

Die s3:ListBucket und s3:GetBucketLocation Berechtigungen sind erforderlich, um auf den Abfrageausgabe-Bucket für IAM-Prinzipale zuzugreifen, die StartQueryExecution ausführen.

s3:PutObject, s3:ListMultipartUploadParts 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.

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.

Beispiel
– Erlauben Sie einem IAM-Prinzipal, einen Datenquellen-Connector 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 -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. Dieser Bucket kann spezifisch für Ihr Konto sein.
"cloudformation:*"

Erlaubt die Erstellung und Verwaltung von CloudFormation-Stacks, die von der Ressource MyCFStackPrefix angegeben 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.
"ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"

Ermöglicht der erstellten Lambda-Funktion den Zugriff auf das ECR-Image des Verbund-Connectors.