Recursos e condições para ações do Lambda - AWS Lambda

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Recursos e condições para ações do Lambda

Você pode restringir o escopo das permissões de um usuário especificando recursos e condições em uma política do AWS Identity and Access Management (IAM). Cada ação de API oferece suporte a uma combinação de tipos de condição e recurso que varia de acordo com o comportamento da ação.

Cada instrução de política do IAM concede permissão a uma ação realizada em um recurso. Quando a ação não atua em um recurso indicado, ou quando você concede permissão para executar a ação em todos os recursos, o valor do recurso na política é um curinga (*). Para muitas ações, restrinja os recursos que um usuário pode modificar especificando o nome do recurso da Amazon (ARN) de um recurso ou um padrão de ARN correspondente a vários recursos.

Para restringir as permissões por recurso especifique o recurso por ARN.

Formato do ARN de recurso Lambda
  • Função: arn:aws:lambda:us-west-2:123456789012:function:my-function

  • Versão da função: arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • Alias da função: arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • Mapeamento da fonte do evento: arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

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

  • Versão da camada: arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

Por exemplo, a política a seguir permite que um usuário na Conta da AWS 123456789012 invoque uma função denominada my-function na região da AWS Oeste dos EUA (Oregon).

exemplo invocar política de função
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

Trata-se de um caso especial em que o identificador da ação (lambda:InvokeFunction) é diferente da operação da API (Invoke). Para outras ações, o identificador da ação é o nome da operação com o prefixo lambda:.

Condições de políticas

As condições são um elemento opcional da política que aplica lógica adicional para determinar se uma ação é permitida. Além de condições comuns compatíveis com todas as ações, o Lambda define os tipos de condição que você pode usar para restringir os valores de parâmetros adicionais em algumas ações.

Por exemplo, a condição lambda:Principal permite restringir o serviço ou a conta, para que um usuário possa conceder acesso de invocação em uma política baseada em recursos de uma função. A política a seguir permite que um usuário conceda permissão para que tópicos do Amazon Simple Notification Service (Amazon SNS) invoquem uma função chamada test.

exemplo gerenciar permissões de política de função
{ "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" } } } ] }

A condição requer que o principal seja o Amazon SNS e não outro serviço ou outra conta. O padrão do recurso exige que o nome da função seja test e inclua um número de versão ou alias. Por exemplo, test:v1.

Para obter mais informações sobre recursos e condições do Lambda e outros serviços da AWS, consulte Ações, recursos e chaves de condição para serviços da AWS. na Referência a autorizações de serviços.

Nomes de recursos de função

Você referencia uma função Lambda em uma instrução de política usando um nome do recurso da Amazon (ARN). O formato de um ARN de função depende se você estiver referenciando toda a função (não qualificado), a versão de uma função ou um alias (qualificado).

Ao fazer chamadas de API do Lambda, os usuários podem especificar uma versão ou alias passando um ARN de versão ou um ARN de alias no parâmtro GetFunction do FunctionName ou definindo um valor no parâmetro GetFunction do Qualifier. O Lambda toma decisões de autorização comparando o elemento de recurso na política do IAM com o FunctionName e Qualifier transmitido nas chamadas de API. Se houver incompatibilidade, o Lambda negará a solicitação.

Para permitir ou negar uma ação em sua função, é necessário usar os tipos de ARN de função corretos na declaração de política para obter os resultados esperados. Por exemplo, se sua política referenciar o ARN não qualificado, o Lambda aceitará solicitações que referenciam o ARN não qualificado, mas negará solicitações que referenciam um ARN qualificado.

nota

Você não pode usar um caractere curinga (*) para encontrar o valor correspondente ao ID da conta. Para obter mais informações sobre a sintaxe aceita, consulte Referência a políticas JSON do IAM, no Guia do usuário do IAM.

exemplo permitir invocação de um ARN não qualificado
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

Se sua política referenciar um ARN qualificado específico, o Lambda aceitará solicitações que referenciam esse ARN, mas negará solicitações que referenciam o ARN não qualificado ou outro ARN qualificado, por exemplo, myFunction:2.

exemplo permitir invocação de um ARN qualificado específico
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

Se sua política referenciar qualquer ARN qualificado usando :*, o Lambda aceitará qualquer ARN qualificado, mas negará solicitações que referenciem o ARN não qualificado.

exemplo permitir invocação de qualquer ARN qualificado
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

Se sua política referenciar qualquer ARN usando *, o Lambda aceitará qualquer ARN qualificado ou não qualificado.

exemplo permitir invocação de qualquer ARN qualificado ou não qualificado
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

Ações de função

As ações que operam em uma função podem ser restritas a uma função específica pelo ARN da função, da versão ou do alias, conforme descrito na tabela a seguir. Ações que não oferecem suporte a restrições de recursos apenas podem ser concedidas a todos os recursos (*).

Ações de função
Ação Recurso Condição

AddPermission

RemovePermission

Função

Versão da função

Alias da função

lambda:Principal

aws:ResourceTag/${TagKey}

lambda:FunctionUrlAuthType

Invoke

Permissão: lambda:InvokeFunction

Função

Versão da função

Alias da função

aws:ResourceTag/${TagKey}

lambda:EventSourceToken

CreateFunction

Função

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UpdateFunctionConfiguration

Função

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionCodeSigningConfig

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionCodeSigningConfig

GetFunctionConcurrency

GetFunctionConfiguration

GetPolicy

ListProvisionedConcurrencyConfigs

ListAliases

ListTags

ListVersionsByFunction

PublishVersion

PutFunctionCodeSigningConfig

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

Função

aws:ResourceTag/${TagKey}

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

Função

Alias da função

lambda:FunctionUrlAuthType

lambda:FunctionArn

aws:ResourceTag/${TagKey}

ListFunctionUrlConfigs

Função

lambda:FunctionUrlAuthType

DeleteFunctionEventInvokeConfig

GetFunctionEventInvokeConfig

ListFunctionEventInvokeConfigs

PutFunctionEventInvokeConfig

UpdateFunctionEventInvokeConfig

Função

aws:ResourceTag/${TagKey}

DeleteProvisionedConcurrencyConfig

GetProvisionedConcurrencyConfig

PutProvisionedConcurrencyConfig

Alias da função

Versão da função

aws:ResourceTag/${TagKey}

GetAccountSettings

ListFunctions

*

Nenhum

TagResource

Função

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UntagResource

Função

aws:ResourceTag/${TagKey}

aws:TagKeys

Ações de mapeamento da fonte de eventos

Para mapeamentos de origens de eventos, você pode restringir permissões para excluir e atualizar a uma origem de evento específica. A condição lambda:FunctionArn permite restringir quais funções um usuário pode configurar uma fonte de evento para invocar.

Para essas ações, o recurso é o mapeamento da fonte do evento, portanto, o Lambda fornece uma condição que permite restringir permissões com base na função que o mapeamento da fonte do evento invoca.

Ações de mapeamento da fonte de eventos
Ação Recurso Condição

DeleteEventSourceMapping

UpdateEventSourceMapping

Mapeamento de origem do evento

lambda:FunctionArn

CreateEventSourceMapping

GetEventSourceMapping

*

lambda:FunctionArn

ListEventSourceMappings

*

Nenhum

Ações de camada

Ações de camadas permitem restringir as camadas que um usuário pode gerenciar ou usar com uma função. Ações relacionadas a permissões e uso de camadas atuam em uma versão de uma camada, enquanto PublishLayerVersion atua no nome de uma camada. Use ambos com curingas para restringir as camadas com as quais um usuário pode trabalhar por nome.

nota

A ação GetLayerVersion também abrange GetLayerVersionByArn. O Lambda não oferece suporte paraGetLayerVersionByArncomo uma ação do IAM.