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 politiche basate sulle risorse in Lambda
Con le politiche di autorizzazione basate sulle risorse, puoi concedere ad altri utenti Account AWS, organizzazioni e l'accesso Servizi AWS alle tue Lambda Event Functions. Una policy basata sulle risorse è un documento JSON che contiene una o più istruzioni. Ogni istruzione 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 si desidera consentire o negare al principale la possibilità di utilizzare le azioni API scelte -
Resource: la funzione, la versione o l'alias Lambda a cui desideri applicare l'istruzione (puoi anche usare un carattere jolly per specificare tutte le versioni e gli alias della 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 della policy IAM JSON nella Guida per l'utente.AWS Identity and Access Management
Aggiungere autorizzazioni basate sulle risorse a una funzione di evento
Puoi aggiungere autorizzazioni basate sulle risorse alla tua funzione Lambda utilizzando due metodi:
-
Policy JSON completa: utilizza la console AWS CLI Lambda o PutResourcePolicyl'azione API per aggiungere un documento di policy JSON completo. Con una policy JSON completa, puoi utilizzare la gamma completa di chiavi di condizione globali IAM, aggiungere più istruzioni con più principi e creare istruzioni esplicite.
DenyLa dimensione massima per una policy basata su risorse JSON è di 20 KB. -
Autorizzazioni individuali: utilizza l'azione della console o dell'AddPermissionAPI 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 offre maggiore flessibilità e un controllo preciso sulle 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 Utilizzare get-resource-policy per recuperare la politica 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 aggiorni le autorizzazioni esistenti basate sulle risorse di una funzione, il comportamento dipende dal metodo utilizzato:
-
put-resource-policy/PutResourcePolicy— Sostituisce l'intera politica esistente. Tutte le autorizzazioni individuali aggiunte in precedenza vengono sovrascritte. -
add-permission/AddPermission— Aggiunge una dichiarazione alla politica esistente senza sovrascriverla. Se si chiamaadd-permissiondopoput-resource-policy, la nuova istruzione viene aggiunta alla politica JSON esistente.
Per evitare di sovrascrivere involontariamente le autorizzazioni esistenti durante l'utilizzoput-resource-policy, recupera prima la politica 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 politica, fornisci il RevisionId valore con il --revision-id parametro per assicurarti di aggiornare la versione più recente. Se fornisci un ID di revisione precedente, Lambda non aggiorna la politica 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 politiche esistenti basate sulle risorse create con AddPermission continuano a funzionare senza modifiche. Non sono necessarie modifiche al codice della funzione per utilizzare la nuova API. PutResourcePolicy
Best practice di sicurezza
Con le politiche basate sulle risorse JSON, puoi seguire modelli di accesso con privilegi minimi. Puoi anche soddisfare i requisiti normativi per i dinieghi espliciti. Con le politiche JSON complete, puoi:
-
Crea
Denyistruzioni esplicite per bloccare principi o condizioni specifici. -
Utilizza le condizioni organizzative (
aws:PrincipalOrgID,aws:PrincipalOrgPaths) per limitare l'accesso alle tue Organizations 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 di un account l'autorizzazione a richiamare una funzione, ad eccezione di un bucket che viene negato esplicitamente.
{ "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
La seguente politica consente 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)