View a markdown version of this page

Utilizzo di politiche basate sulle risorse in Lambda - AWS Lambda

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. Deny La 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. Allow Le 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
Console
Per creare una policy completa basata sulle risorse JSON
  1. Apri la pagina Event Functions della console Lambda.

  2. Seleziona la funzione a cui desideri concedere l'accesso, quindi seleziona la scheda Configurazione.

  3. Seleziona Autorizzazioni.

  4. Nel riquadro delle dichiarazioni Resource-based politiche, scegli Modifica. Questa azione apre l'editor delle politiche JSON.

  5. Aggiungi istruzioni alla politica della tua funzione. Puoi selezionare azioni API, aggiungere principali di diversi tipi (servizi, account, ruoli IAM) e aggiungere chiavi di condizione per controllare l'accesso.

  6. Selezionare Salva.

Puoi anche modificare la politica basata sulle risorse della tua funzione direttamente nel riquadro Policy.

AWS CLI
Per aggiungere una policy completa basata sulle risorse JSON

Per aggiungere una policy JSON completa alla tua funzione, usa il comando. put-resource-policy AWS CLI

Il comando di esempio seguente aggiunge una politica basata sulle risorse alla funzione utilizzando una politica definita in un file denominato policy.json sul computer locale. Esegui il comando dalla directory che contiene il file. resource-arnÈ possibile specificare una versione o un alias della funzione oppure è possibile utilizzare la funzione non qualificata ARN per applicare la politica all'intera funzione.

aws lambda put-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json
Lambda APIs

Per aggiungere una politica di autorizzazioni JSON completa alla tua funzione, utilizza l'azione API. PutResourcePolicy Puoi anche eliminare la politica di una funzione utilizzando l'DeleteResourcePolicyazione o recuperare la politica attualmente associata a una funzione utilizzando l'azione. GetResourcePolicy

Per aggiungere autorizzazioni individuali alla politica di una funzione, utilizza l'azione AddPermissionAPI.

Visualizzazione della politica basata sulle risorse di una funzione

Console
Per visualizzare le policy basate sulle risorse di una funzione
  1. Apri la pagina Event Functions della console Lambda.

  2. Scegliere una funzione.

  3. Scegliere Configuration (Configurazione), quindi Permissions (Autorizzazioni).

  4. Scorri verso il basso fino alle dichiarazioni Resource-based politiche per visualizzarle.

AWS CLI

Per visualizzare una policy basata sulle risorse di una funzione, utilizzare il comando get-resource-policy. Puoi usare l'ARN non qualificato della tua funzione o specificare una versione o un alias.

aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Puoi anche usare il comando: get-policy

aws lambda get-policy \ --function-name my-function \ --output text
Lambda APIs

Per recuperare la politica basata sulle risorse di una funzione, utilizza l'azione API. GetResourcePolicy Puoi usare l'ARN non qualificato della tua funzione o specificare una versione o un alias ARN.

Puoi anche utilizzare l'azione API. GetPolicy

Eliminazione della politica basata sulle risorse di una funzione

Console
Per eliminare la politica basata sulle risorse di una funzione
  1. Apri la pagina Event Functions della console Lambda.

  2. Seleziona la funzione per la quale desideri eliminare la politica delle autorizzazioni.

  3. Seleziona la scheda Configurazione, quindi Autorizzazioni.

  4. Nel riquadro delle dichiarazioni Resource-based politiche, scegli Elimina.

AWS CLI

Per eliminare la politica della funzione, utilizza il delete-resource-policy comando e specifica l'ARN della funzione, della versione o dell'alias da cui desideri eliminare la politica.

aws lambda delete-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Per rimuovere singole istruzioni, usa. remove-permission

aws lambda remove-permission \ --function-name example \ --statement-id sns
Lambda APIs

Per eliminare la politica basata sulle risorse associata a una funzione, una versione della funzione o un alias della funzione, utilizza l'azione API. DeleteResourcePolicy

Per rimuovere singole istruzioni da una policy, utilizzate l'azione API. RemovePermission

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 chiama add-permission dopoput-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-id a1b2c3d4-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 Deny istruzioni 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: