Usare Athena con CalledVia le chiavi di contesto - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usare Athena con CalledVia le chiavi di contesto

Quando un principale effettua una richiesta a AWS, AWS raccoglie le informazioni sulla richiesta in un contesto di richiesta che valuta e autorizza la richiesta. È possibile utilizzare l'elemento Condition di una policy JSON per confrontare le chiavi della richiesta con i valori chiave specificati nella policy. Le chiavi di condizione globali sono chiavi di condizione con un prefisso aws:.

La chiave di contesto aws:CalledVia

Puoi usare la chiave di contesto di condizione globale aws:CalledVia per confrontare i servizi nella policy con i servizi che hanno effettuato richieste per conto del principale IAM (utente o ruolo). Quando un principale effettua una richiesta a un Servizio AWS, tale servizio potrebbe utilizzare le credenziali del principale per effettuare richieste successive ad altri servizi. La chiave aws:CalledVia contiene un elenco ordinato di ciascun servizio nella catena che ha effettuato le richieste per conto dell'entità principale.

Specificando il nome principale del servizio per la chiave di aws:CalledVia contesto, è possibile rendere la chiave Servizio AWS di contesto specifica. Ad esempio, puoi utilizzare la chiave di condizione aws:CalledVia per limitare le richieste solo a quelle fatte da Athena. Per utilizzare la chiave di condizione aws:CalledVia in una policy con Athena, specifica il nome del principale del servizio Athena athena.amazonaws.com, come nell'esempio seguente.

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

Puoi utilizzare la chiave di contesto aws:CalledVia per garantire che i chiamanti abbiano accesso a una risorsa (come una funzione Lambda) solo se chiamano la risorsa da Athena.

Nota

La chiave di contesto aws:CalledVia non è compatibile con la funzionalità di propagazione delle identità attendibili.

Aggiungi una chiave di CalledVia contesto opzionale per un accesso granulare a una funzione Lambda

Athena richiede che il chiamante abbia le autorizzazioni lambda:InvokeFunction per chiamare la funzione Lambda associata alla query. La seguente istruzione consente l'accesso a grana fine a una funzione Lambda in modo che l'utente possa utilizzare solo Athena per richiamare la funzione 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'esempio seguente mostra l'aggiunta dell'istruzione precedente a una policy che consente a un utente di eseguire e leggere una query federata. I principali autorizzati a eseguire queste operazioni possono eseguire query che specificano i cataloghi Athena associati a un'origine dati federata. Tuttavia, il principale non può accedere alla funzione Lambda associata a meno che la funzione non venga richiamata tramite 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" } } } ] }

Per ulteriori informazioni sulle chiavi di contesto CalledVia, consulta Chiavi di contesto delle condizioni globali di AWS nella Guida per l'utente di IAM.