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à.
Utilizzo di policy basate sulle risorse in Lambda
Con le politiche di autorizzazione basate sulle risorse, puoi concedere ad altri Account AWS utenti, organizzazioni e l'accesso alle tue funzioni Lambda. Servizi AWS Una policy basata sulle risorse è un documento JSON che contiene una o più dichiarazioni. Ogni dichiarazione definisce quanto segue:
-
Principal: l'entità a cui vuoi concedere le autorizzazioni (un'altra Servizio AWS, un ruolo o un utente IAM o un altro Account AWS) -
Action: un elenco delle azioni API che desideri consentire o negare per il principale specificato -
Effect: se desideri consentire o negare al principale la possibilità di utilizzare le azioni API scelte -
Resource: la funzione, la versione o l'alias Lambda a cui vuoi applicare l'istruzione (puoi anche usare un carattere jolly per specificare tutte le versioni e gli alias della tua funzione)
Puoi anche utilizzare elementi opzionali come Sid (un identificatore di dichiarazione) e Condition (condizioni logiche per un controllo granulare degli accessi). Per un elenco completo degli elementi di policy supportati, consulta il riferimento agli elementi di policy JSON di IAM nella Guida per l'utente. AWS Identity and Access Management
Aggiungere autorizzazioni basate sulle risorse a una funzione Lambda
Puoi aggiungere autorizzazioni basate sulle risorse alla tua funzione Lambda utilizzando due metodi:
-
Policy JSON completa: utilizza la console Lambda o l'azione PutResourcePolicy API per AWS CLI aggiungere un documento completo sulla policy JSON. Con una policy JSON completa, puoi utilizzare la gamma completa di chiavi di condizione globali IAM, aggiungere più istruzioni con più principali e creare istruzioni esplicite.
DenyLa dimensione massima per una policy basata su risorse JSON è di 20 KB. -
Autorizzazioni individuali: utilizza la console o l'azione AddPermission API per aggiungere singole istruzioni.
AllowLe autorizzazioni individuali supportano solo un set limitato di chiavi di condizione (aws:SourceArnaws:SourceAccount, eaws:PrincipalOrgID).
Ti consigliamo di definire policy JSON complete per aggiungere autorizzazioni basate sulle risorse alla tua funzione. La creazione di una policy JSON completa ti offre maggiore flessibilità e un controllo dettagliato sulle tue autorizzazioni.
Importante
L'utilizzo put-resource-policy sostituisce qualsiasi politica basata sulle risorse esistente sulla risorsa. Se la risorsa dispone già delle autorizzazioni definite con, le sovrascrive. add-permission put-resource-policy get-resource-policyDa utilizzare per recuperare la policy esistente prima di apportare modifiche.
Autorizzazioni richieste
Per utilizzare le azioni PutResourcePolicyGetResourcePolicy, e DeleteResourcePolicy API, sono necessarie le seguenti autorizzazioni IAM:
| Azione API | Autorizzazioni richieste |
|---|---|
| PutResourcePolicy | lambda:PutResourcePolicy, lambda:AddPermission e lambda:RemovePermission |
| GetResourcePolicy | lambda:GetResourcePolicy e lambda:GetPolicy |
| DeleteResourcePolicy | lambda:DeleteResourcePolicy e lambda:RemovePermission |
Visualizzazione della politica basata sulle risorse di una funzione
Eliminazione della politica basata sulle risorse di una funzione
Aggiornamento delle politiche esistenti
Quando si aggiornano le autorizzazioni basate sulle risorse esistenti di una funzione, il comportamento dipende dal metodo utilizzato:
-
put-resource-policy/PutResourcePolicy— Sostituisce l'intera policy esistente. Tutte le autorizzazioni individuali aggiunte in precedenza vengono sovrascritte. -
add-permission/AddPermission— Aggiunge una dichiarazione alla policy esistente senza sovrascriverla. Se chiamiadd-permissiondopoput-resource-policy, la nuova istruzione viene aggiunta alla policy JSON esistente.
Per evitare di sovrascrivere involontariamente le autorizzazioni esistenti durante l'utilizzoput-resource-policy, recupera prima la policy esistente della funzione. L'get-resource-policyoutput include un campo. RevisionId
aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function
Quando alleghi una nuova policy, fornisci al RevisionId valore il --revision-id parametro per assicurarti di aggiornare la versione più recente. Se fornisci un ID di revisione precedente, Lambda non aggiorna la policy della tua funzione.
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json \ --revision-ida1b2c3d4-5678-90ab-cdef-EXAMPLE11111
Nota
Le policy esistenti basate sulle risorse create con AddPermission continuano a funzionare senza modifiche. Non è necessaria alcuna modifica al codice della funzione per utilizzare la nuova API. PutResourcePolicy
Best practice di sicurezza
Con le policy basate sulle risorse JSON, puoi seguire i modelli di accesso con privilegi minimi. Puoi anche soddisfare i requisiti normativi per i dinieghi espliciti. Con le politiche JSON complete, puoi:
-
Crea
Denydichiarazioni esplicite per bloccare principi o condizioni specifici. -
Utilizza le condizioni organizzative (
aws:PrincipalOrgID,aws:PrincipalOrgPaths) per limitare l'accesso alle tue organizzazioni senza enumerare i singoli account. -
Ambita le autorizzazioni per account di origine o ARN specifici utilizzando l'intera gamma di chiavi di condizione globali IAM.
Esempi di politiche basate sulle risorse
Esempio Concessione dell'autorizzazione ad Amazon S3 con una dichiarazione di rifiuto
La seguente politica concede a tutti i bucket Amazon S3 in un account il permesso di richiamare una funzione, ad eccezione di un bucket che viene esplicitamente negato.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } }, { "Sid": "deny-s3-bucket", "Effect": "Deny", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:111122223333:function:my-function", "arn:aws:lambda:us-east-2:111122223333:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
Esempio Concessione dell'autorizzazione agli account di un'organizzazione
Le seguenti concessioni basate su criteri richiamano l'accesso a tutti i membri di un'organizzazione Account AWS .
{ "Version": "2012-10-17", "Statement": [ { "Sid": "org-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } } ] }
Esempio Concessione dell'autorizzazione a più ruoli IAM con condizioni
La seguente policy concede l'autorizzazione a due ruoli IAM di utilizzare l' CreateAlias azione da un indirizzo IP specificato.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-roles", "Effect": "Allow", "Action": "lambda:CreateAlias", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/role-name", "arn:aws:iam::444455556666:role/role-name2" ] }, "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "IpAddress": { "aws:SourceIp": "192.0.2.0" } } } ] }
Esempio Negare l'accesso a meno che il chiamante non faccia parte di un'organizzazione specificata
{ "Version": "2012-10-17", "Statement": [ { "Sid": "deny-access", "Effect": "Deny", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAllValues:StringNotLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } }, { "Sid": "allow-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } } ] }
Operazioni API supportate
Le seguenti operazioni dell'API Lambda supportano le policy basate sulle risorse:
-
InvokeFunctionUrl(solo autorizzazione)