Utilisation d'Athéna avec CalledVia des touches contextuelles - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'Athéna avec CalledVia des touches contextuelles

Lorsqu'un principal fait une demande à AWS, AWS rassemble les informations de la demande dans un contexte de demande qui évalue et autorise la demande. Vous pouvez utiliser l'élément Condition d'une politique JSON pour comparer des clés dans le contexte de demande avec les valeurs de clé spécifiées dans votre politique. Les clés de condition générales sont des clés de condition avec un préfixe aws:.

Clés contextuelle aws:CalledVia

Vous pouvez utiliser la clé contextuelle de condition générale aws:CalledVia pour comparer les services de la politique avec les services qui ont fait des demandes au nom du principal IAM (utilisateur ou rôle). Lorsqu'un principal adresse une demande à un Service AWS, ce service peut utiliser les informations d'identification du principal pour faire des demandes ultérieures à d'autres services. La clé aws:CalledVia contient une liste ordonnée des services de la chaîne ayant effectué des demandes pour le compte du principal.

En spécifiant un nom principal de service pour la clé de aws:CalledVia contexte, vous pouvez la rendre Service AWS spécifique. Par exemple, vous pouvez utiliser la clé de condition aws:CalledVia pour limiter les demandes à celles effectuées à partir d'Athena. Pour utiliser la clé de condition aws:CalledVia dans une politique avec Athena, vous devez spécifier le athena.amazonaws.com du nom du principal du service Athena, comme dans l'exemple suivant.

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

Vous pouvez utiliser la clé contextuelle aws:CalledVia pour vous assurer que les appelants n'ont accès à une ressource (comme une fonction Lambda) que s'ils appellent la ressource à partir d'Athena.

Note

La clé de contexte aws:CalledVia n’est pas compatible avec la fonctionnalité de propagation d’identité approuvée.

Ajoutez une clé de CalledVia contexte facultative pour un accès détaillé à une fonction Lambda

Athena exige que l'appelant dispose d'autorisations lambda:InvokeFunction afin d'invoquer la fonction Lambda associée à la requête. L'instruction suivante permet un accès précis à une fonction Lambda afin que l'utilisateur puisse utiliser uniquement Athena pour invoquer la fonction Lambda.

{ "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" } } } ] }

L'exemple suivant montre l'ajout de l'instruction précédente à une politique qui permet à un utilisateur d'exécuter et de lire une requête fédérée. Les principals autorisés à effectuer ces actions peuvent exécuter des requêtes qui spécifient les catalogues Athena associés à une source de données fédérée. Cependant, le principal ne peut pas accéder à la fonction Lambda associée, à moins que la fonction ne soit invoquée par Athena.

{ "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" } } } ] }

Pour plus d'informations sur les clés de condition CalledVia, consultez la rubrique Clés contextuelles de condition générale AWS du Guide de l'utilisateur IAM.