Controllo dell'accesso agli URL della funzione Lambda
Nota
A partire da ottobre 2025, gli URL delle nuove funzioni richiederanno entrambe lambda:InvokeFunctionUrl le lambda:InvokeFunction autorizzazioni.
Puoi controllare l'accesso agli URL della funzione Lambda utilizzando il parametro combinato con policy basate sulle risorse collegate alla funzione specifica. La configurazione di questi due componenti determina chi può richiamare o eseguire altre azioni amministrative sull'URL della funzione.
Il parametro AuthType determina il modo in cui Lambda autentica o autorizza le richieste all'URL della funzione. Quando configuri l'URL della funzione, è necessario specificare una delle seguenti opzioni AuthType:
-
AWS_IAM: Lambda utilizza AWS Identity and Access Management (IAM) per autenticare e autorizzare le richieste in base alla policy di identità dell'entità principale IAM e alla policy basata sulle risorse della funzione. Scegli questa opzione se desideri che solo utenti e ruoli autenticati richiamino la funzione tramite l'URL della funzione.
-
NONE: Lambda non esegue alcuna autenticazione prima di richiamare la funzione. Tuttavia, la policy basata sulle risorse della funzione è sempre valida e deve concedere l'accesso pubblico prima che l'URL della funzione possa ricevere richieste. Scegli questa opzione per consentire l'accesso pubblico e non autenticato all'URL della funzione.
Per ulteriori informazioni sulla sicurezza, puoi utilizzare AWS Identity and Access Management Access Analyzer per ottenere un'analisi completa dell'accesso esterno all'URL della funzione. IAM Access Analyzer controlla inoltre le autorizzazioni nuove o aggiornate sulle funzioni Lambda per aiutarti a identificare le autorizzazioni che garantiscono l'accesso pubblico e tra account. Puoi utilizzare IAM Access Analyzer gratuitamente. Per le nozioni di base su IAM Access Analyzer, consulta Utilizzo di AWS IAM Access Analyzer.
Questa pagina contiene esempi di policy basate sulle risorse per entrambi i tipi di autenticazione e spiega anche come creare queste policy utilizzando l'operazione API AddPermission o la console Lambda. Per informazioni su come richiamare l'URL della funzione dopo aver configurato le autorizzazioni, consulta Richiamo di URL di funzioni Lambda.
Argomenti
Utilizzo del tipo di autenticazione AWS_IAM
Se scegli il tipo di autenticazione AWS_IAM, gli utenti che hanno bisogno di richiamare l'URL della funzione Lambda devono avere l'autorizzazione . A seconda di chi effettua la richiesta di richiamo, potrebbe essere necessario concedere questa autorizzazione utilizzando una policy basata sulle risorse.
Se l'entità principale da cui proviene la richiesta corrisponde all'Account AWS dell'URL della funzione, l'entità principale deve avere le autorizzazioni lambda:InvokeFunctionUrl nella lambda:InvokeFunctionpolicy basata sull'identitàhttps://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.htmlo le autorizzazioni concesse nella policy basata sulle risorse della funzione. In altre parole, una policy basata sulle risorse è facoltativa se l'utente ha già autorizzazioni nella policy basata sull'identità. La valutazione delle politiche segue le regole delineate nella logica di valutazione delle politiche.
Se il principal che effettua la richiesta si trova in un account diverso, il principal deve avere sia una policy basata sull'identità che fornisce autorizzazioni lambda:InvokeFunctionUrl, lambda:InvokeFunctionsia autorizzazioni concesse in una policy basata sulle risorse nella funzione che si sta tentando di richiamare. La valutazione delle policy segue le regole delineate nella sezione Determinare se una richiesta è consentita o rifiutata in un account.
Per un'interazione tra account di esempio, la seguente policy basata sulle risorse consente al ruolo example in Account AWS 444455556666 di richiamare l'URL della funzione associato alla funzione my-function: La chiave di contesto lambda:InvokedViaFunctionUrl limita l'azione alle chiamate URL di funzione. lambda:InvokeFunction Ciò significa che il principale deve utilizzare l'URL della funzione per richiamare la funzione. Se non lo includilambda:InvokedViaFunctionUrl, il principale può richiamare la tua funzione tramite altri metodi di invocazione, oltre all'URL della funzione.
Esempio — Policy basata sulle risorse multi-account
È possibile creare questa dichiarazione di policy tramite la console seguendo questi passaggi:
Per concedere le autorizzazioni di richiamo URL a un altro account (console)
-
Aprire la pagina Funzioni
della console Lambda. -
Scegli il nome della funzione per la quale desideri concedere autorizzazioni di richiamo URL.
-
Quindi, seleziona la scheda Configuration (Configurazione) e poi Permissions (Autorizzazioni).
-
In Resource-based policy (Policy basata sulle risorse), scegli Add permissions (Aggiungi autorizzazioni).
-
Scegli Function URL (URL funzione).
-
Per Auth type (Tipo di autenticazione), scegli AWS_IAM.
-
Inserisci un ID di dichiarazione per la tua dichiarazione politica.
-
Per Principale, inserisci l'ID o il nome della risorsa Amazon (ARN) dell'utente o del ruolo a cui desideri concedere le autorizzazioni. Ad esempio:
444455556666. -
Selezionare Salva.
In alternativa, è possibile creare questa dichiarazione di policy utilizzando il seguente comando add-permissionlambda:InvokeFunction istruzioni lambda:InvokeFunctionUrl e separatamente. Ad esempio:
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeURL \ --actionlambda:InvokeFunctionUrl\ --principal 444455556666 \ --function-url-auth-type AWS_IAM
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeFunction \ --actionlambda:InvokeFunction\ --principal 444455556666 \ --invoked-via-function-url
Utilizzo del tipo di autenticazione NONE
Importante
Quando il tipo di autenticazione dell'URL della funzione è NONE e hai una policy basata sulle risorse che garantisce l'accesso pubblico, qualsiasi utente non autenticato con l'URL della funzione può richiamare la funzione.
In alcuni casi, potrebbe essere preferibile che l'URL della funzione sia pubblico. Ad esempio, potrebbe essere preferibile inviare le richieste effettuate direttamente da un browser Web. Per consentire l'accesso pubblico all'URL della funzione, scegli il tipo di autenticazione NONE.
Se scegli il tipo di autenticazione NONE, Lambda non utilizza IAM per autenticare le richieste all'URL della funzione. Tuttavia, la funzione deve disporre di una politica basata sulle risorse che consenta e. lambda:InvokeFunctionUrl lambda:InvokeFunction Quando crei una funzione URL con il tipo di autenticazione NONE tramite la console o AWS Serverless Application Model (AWS SAM), Lambda crea automaticamente la dichiarazione di policy basata sulle risorse precedente. Se usi la AWS CLI, AWS CloudFormation o direttamente l'API Lambda, è necessario aggiungere le autorizzazioni .
Ti consigliamo di includere la chiave di contesto lambda:InvokedViaFunctionURL nelle politiche basate sulle risorse quando usi il tipo di autenticazione. NONE Questa chiave di contesto garantisce che la funzione possa essere richiamata solo tramite l'URL della funzione e non tramite altri metodi di invocazione.
Tieni presente quanto segue riguardo a questa policy:
-
Tutte le entità possono chiamare and.
lambda:InvokeFunctionUrllambda:InvokeFunctionCiò significa che chiunque disponga dell'URL della tua funzione può richiamarla. -
Il valore della chiave della
lambda:FunctionUrlAuthTypecondizione èNONE. Questa dichiarazione di policy consente l'accesso solo quando anche il tipo di autenticazione dell'URL della funzione èNONE. -
La
lambda:InvokedViaFunctionUrlcondizione garantisce che la funzione possa essere richiamata solo tramite l'URL della funzione e non tramite altri metodi di chiamata.
Esempio — Politica predefinita basata sulle risorse per il tipo di autenticazione NONE
Creare la policy basata sulle risorse utilizzando AWS CLI
A meno che non utilizzi la console o AWS SAM crei un URL di funzione con tipo di autenticazioneNONE, devi aggiungere tu stesso la politica basata sulle risorse. Usa il comando lambda:InvokeFunctionUrl della per creare una policy con le seguenti autorizzazioni. Ogni istruzione deve essere aggiunta in un comando separato.
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeURL \ --actionlambda:InvokeFunctionUrl\ --principal * \ --function-url-auth-type NONE
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeFunction \ --actionlambda:InvokeFunction\ --principal * \ --invoked-via-function-url
Nota
Se elimini l'URL della funzione con il tipo di autenticazione NONE, Lambda non elimina automaticamente la policy basata sulle risorse associata. Se desideri eliminare questa policy, dovrai farlo manualmente.
Se la policy basata sulle risorse di una funzione non concede le autorizzazioni lambda:invokeFunctionUrl, gli utenti riceveranno un codice di errore 403 Non consentito quando tentano di richiamare l'URL della funzione, anche se l'URL della funzione utilizza il tipo di autenticazione lambda:InvokeFunction Ciò si verificherà anche se l'URL della funzione utilizza il tipo di NONE autenticazione.
Governance e controllo degli accessi
Oltre alle autorizzazioni di richiamo degli URL della funzione, puoi anche controllare l'accesso alle azioni utilizzate per configurare gli URL della funzione. Lambda supporta le seguenti azioni delle policy IAM per gli URL della funzione:
-
lambda:InvokeFunctionUrl: richiamo di una funzione Lambda utilizzando l'URL della funzione. -
lambda:CreateFunctionUrlConfig– creazione di un URL della funzione e impostazione del relativoAuthType. -
lambda:UpdateFunctionUrlConfig– aggiornamento della configurazione dell'URL della funzione e del relativoAuthType. -
lambda:GetFunctionUrlConfig: visualizzazione dei dettagli dell'URL della funzione. -
lambda:ListFunctionUrlConfigs: elenco delle configurazioni dell'URL della funzione. -
lambda:DeleteFunctionUrlConfig: eliminazione dell'URL della funzione.
Per consentire o negare l'accesso dell'URL della funzione ad altre entità AWS, includere queste azioni nelle policy IAM. Ad esempio, la seguente policy concede al ruolo example in Account AWS le autorizzazioni 444455556666per aggiornare l'URL di funzione per la funzione my-function nell'account 123456789012.
Esempio Policy dell'URL della funzione tra account
Chiavi di condizione
Per un controllo accurato degli accessi sugli URL della funzione, utilizzare una chiave di condizione. Lambda supporta le seguenti intestazioni CORS per gli URL della funzione.
-
La chiave definisce un valore enum che descrive il tipo di autenticazione utilizzato dall'URL della funzione. Il valore può essere
AWS_IAMoNONE. -
lambda:InvokedViaFunctionUrl— Limita l'lambda:InvokeFunctionazione alle chiamate effettuate tramite l'URL della funzione. Ciò garantisce che la funzione possa essere richiamata solo utilizzando l'URL della funzione e non tramite altri metodi di invocazione. Per esempi di politiche basate sulle risorse che utilizzano la chiave dilambda:InvokedViaFunctionUrlcontesto, consulta gli esempi in and. Utilizzo del tipo di autenticazione AWS_IAM Utilizzo del tipo di autenticazione NONE
È possibile utilizzare questa chiave di condizione in policy associate alla funzione. Ad esempio, è preferibile limitare chi può apportare modifiche alla configurazione degli URL della funzione. Per negare tutte le richieste UpdateFunctionUrlConfig a qualsiasi funzione con tipo di autenticazione URL NONE, è possibile definire la seguente policy:
Esempio Policy dell'URL della funzione con rifiuto esplicito
Per concedere al ruolo example in Account AWS autorizzazioni 444455556666 per effettuare richieste CreateFunctionUrlConfig e UpdateFunctionUrlConfig su funzioni con tipo di autenticazione URL AWS_IAM, è possibile definire la seguente policy:
Esempio Policy dell'URL della funzione con permesso esplicito
È inoltre possibile utilizzare questa chiave di condizione in una policy di controllo dei servizi (SCP). Utilizzare SCP per gestire le autorizzazioni di un'intera organizzazione in AWS Organizations. Ad esempio, per negare agli utenti di creare o aggiornare gli URL della funzione che utilizzano qualcosa di diverso dal tipo di autenticazione AWS_IAM, utilizzare i seguenti criteri di controllo dei servizi: