Controlar o acesso aos URLs de função do Lambda
nota
A partir de outubro de 2025, os novos URLs da função exigirão as permissões lambda:InvokeFunctionUrl e lambda:InvokeFunction.
É possível controlar o acesso aos URLs da função do Lambda usando o parâmetro AuthType combino com as políticas baseadas em recursos anexadas a sua função específica. A configuração desses dois componentes determina quem pode invocar ou executar outras ações administrativas no URL de função.
O parâmetro AuthType determina como o Lambda autentica ou autoriza solicitações ao URL de função. Ao configurar o URL de função, você deve especificar uma das seguintes opções de AuthType:
-
AWS_IAM: o Lambda usa o AWS Identity and Access Management (IAM) para autenticar e autorizar solicitações com base na política de identidade da entidade principal do IAM e na política baseada em recursos da função. Escolha essa opção se quiser que apenas usuários e perfis autenticados para invocar a função usando o URL da função.
-
NONE: o Lambda não realiza nenhuma autenticação antes de invocar a função. Porém, a política baseada em recursos da função está sempre em vigor e deve conceder acesso público antes que o URL de função possa receber solicitações. Escolha essa opção para permitir acesso público e não autenticado ao URL de função.
Para obter informações adicionais sobre segurança, você pode usar AWS Identity and Access Management Access Analyzer para obter uma análise abrangente do acesso externo ao URL de função. O IAM Access Analyzer também monitora permissões novas ou atualizadas nas funções do Lambda para ajudá-lo a identificar as permissões que concedem acesso público e acesso entre contas. Você pode usar o analisador de acesso do IAM sem custo. Para começar a usar o IAM Access Analyzer, consulte Usando o AWS IAM Access Analyzer.
Esta página contém exemplos de políticas baseadas em recursos para ambos os tipos de autenticação e como criar essas políticas usando a operação da API AddPermission ou o console do Lambda. Para obter informações sobre como invocar o URL da função depois de configurar as permissões, consulte Invocar URLs de função do Lambda.
Tópicos
Usar o tipo de autenticação AWS_IAM
Se você escolher o tipo de autenticação AWS_IAM, os usuários que precisarem invocar o URL da função do Lambda deverão ter as permissões lambda:InvokeFunctionUrl e lambda:InvokeFunction. Dependendo de quem faz a solicitação de invocação, pode ser necessário conceder essa permissão usando uma política baseada em recursos.
Se a entidade principal fazendo a solicitação estiver na mesma Conta da AWS que o URL da função, a entidade principal deve ou ter permissões lambda:InvokeFunctionUrl na lambda:InvokeFunction política baseada em identidade, ou ter permissões concedidas na política baseada em recursos da função. Em outras palavras, uma política baseada em recursos será opcional se o usuário já tiver permissões lambda:InvokeFunctionUrl e lambda:InvokeFunction em sua política baseada em identidade. A avaliação de políticas segue as regras descritas na Lógica de avaliação de políticas.
Se a entidade principal fazendo a solicitação estiver em uma conta diferente, a entidade principal deverá ter ambas, uma política baseada em identidade que forneça a ela as permissões lambda:InvokeFunctionUrl e lambda:InvokeFunction e permissões concedidas em uma política baseada em recursos para a função que ela está tentando invocar. A avaliação da política segue as regras descritas em Determinar se uma solicitação entre contas é permitida.
A política baseada em recursos a seguir permite que a função example na Conta da AWS 444455556666 invoque o URL da função associado à função my-function. A chave de contexto lambda:invokedViaFunctionUrl restringe a ação lambda:InvokeFunction para as chamadas do URL da função. Isso significa que a entidade principal deve usar o URL da função para invocar a função. Se você não incluir lambda:InvokedViaFunctionUrl, a entidade principal poderá invocar sua função por meio de outros métodos de invocação, além do URL da função.
exemplo — Política baseada em recursos entre contas
Você pode criar essa política baseada em recursos por meio do console, seguindo as seguintes etapas:
Como conceder permissões de invocação de URL a outra conta (console)
-
Abra a página Funções
do console do Lambda. -
Escolha o nome da função para a qual deseja conceder permissões de invocação de URL.
-
Escolha a guia Configuration (Configuração) e, depois, Permissions (Permissões).
-
Em Resource-based policy (Política baseada em recursos), escolha Add permissions (Adicionar permissões).
-
Escolha Function URL (URL de função).
-
Para Auth type (Tipo de autenticação), escolha AWS_IAM.
-
Insira um ID de declaração para sua declaração de política.
-
Em Entidade principal, insira o ID da conta ou o nome do recurso da Amazon (ARN) do usuário ou da função para a qual você deseja conceder permissões. Por exemplo:
444455556666. -
Escolha Salvar.
Como alternativa, você pode criar essa política usando os seguintes comandos add-permissionlambda:InvokeFunctionUrl e lambda:InvokeFunction separadamente. Por exemplo:
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
Usar o tipo de autenticação NONE
Importante
Quando o tipo de autenticação do URL dA função for NONE e você tiver uma política baseada em recursos que concede acesso público, qualquer usuário não autenticado com o URL da função poderá invocar a função.
Em alguns casos, você pode querer que o URL da função seja público. Por exemplo, você pode querer atender a solicitações feitas diretamente de um navegador da Web. Para permitir acesso público ao URL de função, escolha o tipo de autenticação NONE.
Se você escolher o tipo de autenticação NONE, o Lambda não usará o IAM para autenticar solicitações ao URL de função. No entanto, sua função deve ter uma política baseada em recursos que permita lambda:InvokeFunctionUrl e lambda:InvokeFunction. Quando você cria um URL da função com o tipo de autenticação NONE usando o console ou o AWS Serverless Application Model (AWS SAM), o Lambda cria automaticamente a política baseada em recursos para você. Se estiver usando a AWS CLI, o AWS CloudFormation ou a API do Lambda diretamente, deverá adicionar as políticas você mesmo.
Recomendamos que você inclua a chave de contexto lambda:InvokedViaFunctionUrl em suas políticas baseadas em recursos ao usar o tipo de autenticação NONE. Essa chave de contexto garante que a função só possa ser invocada por meio do URL da função e não por meio de outros métodos de invocação.
Observe o seguinte sobre essa política:
-
Todas as entidades podem chamar
lambda:InvokeFunctionUrlelambda:InvokeFunction. Isso significa que qualquer pessoa que tenha o URL da sua função pode invocá-la. -
O valor da chave de condição
lambda:FunctionUrlAuthTypeéNONE. Isso significa que a instrução da política só permite acesso quando o tipo de autenticação do URL da função também éNONE. -
A condição
lambda:InvokedViaFunctionUrlgarante que a função só possa ser invocada por meio do URL da função e não por meio de outros métodos de invocação.
exemplo — Política baseada em recursos padrão para o tipo de autenticação NONE
Crie a política baseada em recursos usando o AWS CLI
A menos que você use o console ou AWS SAM crie um URL da função com tipo de autenticação NONE, você mesmo deve adicionar a política baseada em recursos. Use os seguintes comandos para criar instruções com as permissões lambda:InvokeFunctionUrl e lambda:InvokeFunction. Cada instrução deve ser adicionada em um comando separado.
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 você excluir um URL da função com o tipo de autenticação NONE, o Lambda não excluirá a política baseada em recursos associada a ela. Se quiser excluir essa política, deverá excluí-la manualmente.
Se a política baseada em recursos para uma função não conceder as permissões lambda:invokeFunctionUrl e lambda:InvokeFunction, os usuários receberão um código de erro 403 Forbidden (Proibido) quando tentarem invocar o URL da função. Isso ocorrerá mesmo se o URL da função usar o tipo de autenticação NONE.
Governança e controle de acesso
Além das permissões de invocação de URL de função, você também pode controlar o acesso nas ações usadas para configurar URLs de função. O Lambda é compatível com as seguintes ações da política do IAM para URLs de função:
-
lambda:InvokeFunctionUrl: chamar uma função do Lambda usando o URL de função. -
lambda:CreateFunctionUrlConfig– criar um URL de função e definir seuAuthType. -
lambda:UpdateFunctionUrlConfig– atualizar a configuração de um URL de função e seuAuthType. -
lambda:GetFunctionUrlConfig: visualizar os detalhes de um URL de função. -
lambda:ListFunctionUrlConfigs: listar as configurações de URL de função. -
lambda:DeleteFunctionUrlConfig: excluir um URL de função.
Para permitir ou negar acesso a URLs de função a outras entidades da AWS, inclua essas ações nas políticas do IAM. Por exemplo, a política a seguir concede à função example na Conta da AWS 444455556666 permissões para atualizar o URL de função para a função my-function na conta 123456789012.
exemplo política de URL de função entre contas
Chaves de condição
Para ter um controle de acesso refinado sobre os URLs da função, use chaves de contexto de condição. O Lambda é compatível com as seguintes chaves de condição para URLs da função:
-
lambda:FunctionUrlAuthType: define um valor de enumerador descrevendo o tipo de autenticação que o URL da função usa. O valor pode serAWS_IAMouNONE. -
lambda:InvokedViaFunctionUrl: restringe a açãolambda:InvokeFunctionàs chamadas feitas por meio do URL da função. Isso garante que a função só possa ser invocada por meio do URL da função e não por meio de outros métodos de invocação. Para exemplos de políticas baseadas em recursos que usam a chave de contextolambda:InvokedViaFunctionUrl, consulte os exemplos em Usar o tipo de autenticação AWS_IAM e Usar o tipo de autenticação NONE.
É possível usar essas chaves de contexto em políticas associadas à sua função. Por exemplo, você pode restringir quem pode fazer alterações nas configurações dos URLs de função. Para negar todas as solicitações UpdateFunctionUrlConfig a qualquer função com o tipo de autenticação de URL NONE, você pode definir a seguinte política:
exemplo política de URL de função com negação explícita
Para conceder à função example na Conta da AWS 444455556666 permissões para fazer solicitações CreateFunctionUrlConfig e UpdateFunctionUrlConfig em funções com o tipo de autenticação de URL AWS_IAM, você pode definir a seguinte política:
exemplo política de URL de função com permissão explícita
Você também pode usar essa chave de condição em uma política de controle de serviço (SCP). Use SCPs para gerenciar permissões em toda a organização em AWS Organizations. Por exemplo, para não permitir que usuários criem ou atualizem URLs de função que usem qualquer tipo de autenticação, exceto AWS_IAM, use a seguinte política de controle de serviço: