View a markdown version of this page

Utilizzo di policy 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 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. Deny La 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. 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 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
Console
Per creare una policy completa basata sulle risorse JSON
  1. Aprire la pagina Funzioni 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 dichiarazioni alla policy 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 policy basata sulle risorse della tua funzione direttamente nel riquadro Politica.

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 policy basata sulle risorse alla funzione utilizzando una policy definita in un file denominato policy.json nel 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, usa l'azione API. PutResourcePolicy Puoi anche eliminare la policy di una funzione utilizzando l'DeleteResourcePolicyazione o recuperare la policy attualmente associata a una funzione utilizzando l'azione. GetResourcePolicy

Per aggiungere autorizzazioni individuali alla policy di una funzione, utilizza l'azione AddPermission API.

Visualizzazione della politica basata sulle risorse di una funzione

Console
Per visualizzare le policy basate sulle risorse di una funzione
  1. Aprire la pagina Funzioni 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 visualizzare la politica.

AWS CLI

Per visualizzare una policy basata sulle risorse di una funzione, utilizzare il comando get-resource-policy. Puoi utilizzare 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 policy basata sulle risorse di una funzione, usa l'azione API. GetResourcePolicy Puoi utilizzare 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. Aprire la pagina Funzioni della console Lambda.

  2. Seleziona la funzione per cui 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 policy della funzione, usa il delete-resource-policy comando e specifica l'ARN della funzione, della versione o dell'alias da cui desideri eliminare la policy.

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

Per rimuovere singole dichiarazioni, usa. remove-permission

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

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

Per rimuovere singole dichiarazioni da una policy, usa l'azione API. RemovePermission

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 chiami add-permission dopoput-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-id a1b2c3d4-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 Deny dichiarazioni 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: