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.
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:
.
À propos de aws:CalledVia clé de contexte
Vous pouvez utiliser aws:CalledViaclé de contexte de condition globale pour comparer les services de la politique avec les services qui ont effectué 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.
Ajouter une clé de CalledVia contexte pour accéder aux fonctions 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 indique que l'utilisateur ne peut invoquer les fonctions Lambda qu'à partir d'Athena.
{
"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.