View a markdown version of this page

Fine-tuning le sezioni Risorse e condizioni delle politiche - 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à.

Fine-tuning le sezioni Risorse e condizioni delle politiche

Puoi limitare l'ambito delle autorizzazioni di un utente specificando le risorse e le condizioni in una policy AWS Identity and Access Management (IAM). Ogni operazione in una policy supporta una combinazione di tipi di risorse e condizioni che varia a seconda del comportamento dell'operazione.

Ogni dichiarazione di policy IAM concede l'autorizzazione a un'operazione eseguita su una risorsa. Quando l'operazione non agisce su una risorsa designata oppure quando concedi l'autorizzazione per eseguire l'operazione su tutte le risorse, il valore della risorsa nella policy è un carattere jolly (*). Per molte operazioni, puoi limitare le risorse che un utente può modificare specificando il nome della risorsa Amazon (ARN) di una risorsa o uno schema ARN che corrisponde a più risorse.

Per tipo di risorsa, la struttura generale di come limitare l'ambito di un'azione è la seguente:

  • Funzioni: le operazioni alla base di una funzione possono essere limitate a una funzione specifica in base alla funzione, alla versione o all'ARN dell'alias.

  • Strumenti di mappatura dell'origine degli eventi: le azioni possono essere limitate a risorse specifiche dello strumento di mappatura dell'origine degli eventi tramite ARN. Gli strumenti di mappatura dell'origine degli eventi sono sempre associati a una funzione. È inoltre possibile utilizzare la condizione lambda:FunctionArn per limitare le operazioni in base alla funzione associata.

  • Livelli: le operazioni che riguardano l'utilizzo e le autorizzazioni relative ai livelli agiscono su una versione di un livello.

  • Configurazione della firma del codice: le azioni possono essere limitate a risorse di configurazione di firma del codice specifiche tramite ARN.

  • Tag: utilizza condizioni standard per i tag. Per ulteriori informazioni, consulta Utilizzo del controllo degli accessi basato sugli attributi in Lambda.

Per limitare le autorizzazioni in base alla risorsa, specifica la risorsa in base all'ARN.

Formato ARN della risorsa Lambda
  • Funzione – arn:aws:lambda:us-west-2:123456789012:function:my-function

  • Versione funzione – arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • Alias funzione – arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • Esecuzione duratura — arn:aws:lambda:us-west-2:123456789012:function:my-function:1/durable-execution/execution-name/execution-id

  • Mappatura delle origini eventi – arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • Livello – arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • Versione livello – arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

  • Configurazione della firma del codice: arn:aws:lambda:us-west-2:123456789012:code-signing-config:my-csc

Ad esempio, la seguente politica consente a un utente di Account AWS 123456789012 richiamare una funzione denominata my-function nella regione Stati Uniti occidentali (Oregon) AWS .

Esempio Invocare la policy di una funzione
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

Questo è un caso speciale in cui l'identificatore dell'operazione (lambda:InvokeFunction) differisce dall'operazione API (Invoke). Per altre operazioni, l'identificatore dell'operazione è il nome dell'operazione preceduto dal prefisso lambda:.

Informazioni sulla sezione Condizione nelle policy

Le condizioni sono un elemento opzionale della policy che applica una logica aggiuntiva per stabilire se è consentita un'operazione. Oltre alle condizioni comuni supportate da tutte le operazioni, Lambda definisce i tipi di condizione che è possibile utilizzare per limitare i valori dei parametri aggiuntivi su alcune operazioni.

Ad esempio, la condizione lambda:Principal consente di limitare il servizio o un account al quale un utente può concedere l'accesso a una chiamata su una policy basata sulle risorse della funzione. La policy seguente consente a un utente di concedere l'autorizzazione agli argomenti di Amazon Simple Notification Service (Amazon SNS) per richiamare una funzione denominata test.

Esempio Gestione delle autorizzazioni di una policy della funzione
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

La condizione richiede che il principale sia Amazon SNS e non un altro servizio o account. Il modello di risorsa richiede che il nome della funzione sia test e includa un numero di versione o un alias. Ad esempio, test:v1.

Per ulteriori informazioni su risorse e condizioni per Lambda e altri AWS servizi, consulta Azioni, risorse e chiavi di condizione per AWS i servizi nel Service Authorization Reference.

Funzioni di riferimento nella sezione Risorse delle policy

Puoi fare riferimento a una funzione Lambda in un rendiconto sulla policy utilizzando un Amazon Resource Name (ARN). Il formato dell'ARN di una funzione dipende dal fatto che si stia facendo riferimento all'intera funzione (non qualificato) o a una versione di funzione o a un alias (qualificato).

Quando effettuano chiamate all'API Lambda, gli utenti possono specificare una versione o un alias passando un ARN di versione o un alias ARN nel GetFunction FunctionName parametro o impostando un valore nel parametro. GetFunction Qualifier Lambda prende decisioni di autorizzazione confrontando l'elemento risorsa nella policy IAM con FunctionName e Qualifier passati nelle chiamate API. Se c'è un errore, Lambda nega la richiesta.

Sia che si stia consentendo o negando un'operazione sulla funzione, è necessario utilizzare i tipi ARN della funzione corretti nell'istruzione di policy per ottenere i risultati previsti. Ad esempio, se la policy fa riferimento all'ARN non qualificato, Lambda accetta le richieste che fanno riferimento all'ARN non qualificato ma nega le richieste che fanno riferimento a un ARN qualificato.

Nota

Non puoi utilizzare un carattere jolly (*) per la corrispondenza con l'ID account. Per informazioni sulla sintassi accettata, consulta Documentazione di riferimento sulle policy JSON per IAM nella Guida per l'utente di IAM.

Esempio permettere la chiamata di un ARN non qualificato
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

Se la policy fa riferimento a uno specifico ARN qualificato, Lambda accetta le richieste che fanno riferimento a quell'ARN ma nega le richieste che fanno riferimento all'ARN non qualificato o a un ARN qualificato diverso, ad esempio myFunction:2.

Esempio permettere la chiamata di un ARN qualificato specifico
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

Se tua policy fa riferimento a un ARN qualificato utilizzando :*, Lambda accetta qualsiasi ARN qualificato ma nega le richieste che fanno riferimento all'ARN non qualificato.

Esempio permettere la chiamata di un ARN qualificato
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

Se la tua policy fa riferimento a qualsiasi ARN che utilizza *, Lambda accetta qualsiasi ARN qualificato o non qualificato.

Esempio permettere la chiamata di un ARN qualificato o non qualificato
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

Riferimento alle esecuzioni durevoli nella sezione Risorse delle policy

Un'esecuzione durevole è una risorsa secondaria della versione di una funzione. Per la struttura dell'ARN a esecuzione durevole e le linee guida politiche, vedere. Autorizzazioni IAM per funzioni durevoli

È possibile richiamare funzioni durevoli solo con un nome di funzione qualificato o ARN, pertanto le politiche che consentono l'invocazione di funzioni durevoli devono corrispondere agli ARN qualificati. Per ulteriori informazioni, consulta ARNs Requisito qualificato.

Se la tua policy fa riferimento alla funzione non qualificata ARN, Lambda nega le richieste di azioni di esecuzione durature. L'ARN non qualificato non corrisponde mai a un ARN di esecuzione duraturo.

Esempio Politica che non garantisce l'accesso a esecuzioni durature
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:GetDurableExecution", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myDurableFunction" } ] }

Se la tua policy fa riferimento alla funzione ARN with:*, Lambda accetta richieste di esecuzioni durevoli di ogni versione.

Esempio Consentire l'accesso a esecuzioni durevoli di qualsiasi versione
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:GetDurableExecution", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myDurableFunction:*" } ] }

Se la tua policy fa riferimento alla funzione ARN with:1/durable-execution/*, Lambda accetta richieste di esecuzioni durevoli solo della versione 1.

Esempio Consentire l'accesso a esecuzioni durature di una versione specifica
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:GetDurableExecution", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myDurableFunction:1/durable-execution/*" } ] }
I pattern di alias non corrispondono mai agli ARN di esecuzione duratura

I nomi alias non compaiono mai negli ARN a esecuzione durevole. Un modello di risorse come my-function:prod/durable-execution/* non corrisponde mai a un'esecuzione duratura perché Lambda risolve l'alias in un numero di versione quando la funzione viene eseguita.

Lambda autorizza l'lambda:ListDurableExecutionsByFunctionazione contro la funzione ARN dalla richiesta, non un ARN di esecuzione durevole. Le seguenti regole si applicano alla corrispondenza degli ARN:

  • Una politica che concede la funzione non qualificata ARN soddisfa solo le richieste che utilizzano il nome della funzione non qualificata.

  • Una policy che concede un ARN qualificato corrisponde solo alle richieste che utilizzano un nome di funzione qualificato.

Esempio Consente l'elenco delle esecuzioni durevoli con entrambe le forme di nome
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:ListDurableExecutionsByFunction", "Resource": [ "arn:aws:lambda:us-west-2:123456789012:function:myDurableFunction", "arn:aws:lambda:us-west-2:123456789012:function:myDurableFunction:*" ] } ] }

Comportamenti di azioni e funzioni IAM supportati

Le azioni definiscono cosa può essere consentito tramite le policy IAM. Per un elenco delle operazioni supportate in Lambda, consulta Operazioni, risorse e chiavi di condizione per AWS Lambda in Service Authorization Reference. Nella maggior parte dei casi, quando un'azione IAM consente un'operazione API Lambda, il nome dell'azione IAM è lo stesso dell'operazione API Lambda, con le seguenti eccezioni:

Azione API Azione IAM
Invoke lambda:InvokeFunction

GetLayerVersion

GetLayerVersionByArn

lambda:GetLayerVersion

Oltre alle risorse e alle condizioni definite in Service Authorization Reference, Lambda supporta le seguenti risorse e condizioni per determinate azioni. Molte di queste sono correlate alle funzioni di riferimento nella sezione delle risorse delle policy. Le operazioni alla base di una funzione possono essere limitate a una funzione specifica in base alla funzione, alla versione o all'ARN dell'alias, come descritto nella tabella riportata di seguito.

Azione Risorsa Condizione

AddPermission

RemovePermission

Invoca (Autorizzazione:) lambda:InvokeFunction

Versione funzione

Alias funzione

N/A

ListDurableExecutionsByFunction

Versione funzione

N/A

UpdateFunctionConfiguration

N/A

lambda:CodeSigningConfigArn

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

Alias funzione

N/A