Verwenden Sie CalledVia Kontexttasten für Athena - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie CalledVia Kontexttasten für Athena

Wenn ein Principal eine Anfrage stellt an AWS, AWS fasst die Anforderungsinformationen in einem Anforderungskontext zusammen, der die Anfrage auswertet und autorisiert. Sie können das Condition Element einer JSON Richtlinie verwenden, um Schlüssel im Anforderungskontext mit Schlüsselwerten zu vergleichen, die Sie in Ihrer Richtlinie angeben. Globale Bedingungskontextschlüssel sind Bedingungsschlüssel mit einem aws:-Präfix.

Über die aws:CalledVia Kontextschlüssel

Sie können den verwenden aws:CalledViaGlobaler Bedingungskontextschlüssel, um die Dienste in der Richtlinie mit den Diensten zu vergleichen, die Anfragen im Namen des IAM Prinzipals (Benutzer oder Rolle) gestellt haben. Wenn ein Principal eine Anfrage an einen stellt AWS-Service, dieser Dienst verwendet möglicherweise die Anmeldeinformationen des Prinzipals, um nachfolgende Anfragen an andere Dienste zu stellen. Der Schlüssel aws:CalledVia enthält eine geordnete Liste aller Services in der Kette, die im Auftrag des Auftraggebers Anforderungen ausgegeben haben.

Indem Sie einen Dienstprinzipalnamen für den aws:CalledVia Kontextschlüssel angeben, können Sie den Kontextschlüssel erstellen AWS-Service-spezifisch. Sie können beispielsweise den Bedingungsschlüssel aws:CalledVia verwenden, um Anfragen auf die von Athena gestellten zu beschränken. Um den Bedingungsschlüssel aws:CalledVia in einer Richtlinie mit Athena zu verwenden, geben Sie den Athena-Serviceprinzipalnamen athena.amazonaws.com wie im folgenden Beispiel an.

... "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } ...

Sie können den aws:CalledVia-Kontextschlüssel verwenden, um sicherzustellen, dass Aufrufer nur dann Zugriff auf eine Ressource (wie eine Lambda-Funktion) haben, wenn sie die Ressource von Athena aus aufrufen.

Anmerkung

Der Kontextschlüssel aws:CalledVia ist nicht mit dem Feature zur Weitergabe vertrauenswürdiger Identitäten kompatibel.

Fügen Sie einen CalledVia Kontextschlüssel für den Zugriff auf Lambda-Funktionen hinzu

Athena erfordert, dass der Aufrufer über lambda:InvokeFunction-Berechtigungen verfügt, um die mit der Abfrage verknüpfte Lambda-Funktion aufzurufen. Die folgende Anweisung gibt an, dass der Benutzer Lambda-Funktionen nur von Athena aus aufrufen kann.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:OneAthenaLambdaFunction", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }

Das folgende Beispiel zeigt das Hinzufügen der vorherigen Anweisung zu einer Richtlinie, die es einem Benutzer ermöglicht, eine Verbundabfrage auszuführen und zu lesen. Prinzipale, die diese Aktionen ausführen dürfen, können Abfragen ausführen, die Athena-Kataloge angeben, die einer Verbunddatenquelle zugeordnet sind. Der Prinzipal kann jedoch nicht auf die zugeordnete Lambda-Funktion zugreifen, es sei denn, die Funktion wird über Athena aufgerufen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:GetWorkGroup", "s3:PutObject", "s3:GetObject", "athena:StartQueryExecution", "s3:AbortMultipartUpload", "athena:StopQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:athena:*:111122223333:workgroup/WorkGroupName", "arn:aws:s3:::MyQueryResultsBucket/*", "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::MyLambdaSpillBucket" }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction" ], "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }

Weitere Hinweise zu CalledVia Bedingungsschlüsseln finden Sie unter AWS Kontexttasten für globale Bedingungen im IAMBenutzerhandbuch.