Ajustar as seções de Recursos e Condições das políticas
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.
Por tipo de recurso, o design geral de como restringir o escopo de uma ação é o seguinte:
Funções: as ações que operam em uma função podem ser restritas a uma função específica por ARN do alias, função, versão.
-
Mapeamentos da origem do evento: as ações podem ser restritas a recursos específicos de mapeamento da origem do evento pelo ARN. Os mapeamentos da origem do evento estão sempre associados a uma função. Você também pode usar a condição
lambda:FunctionArn
para restringir ações por função associada. Camadas: as ações relacionadas a permissões e uso de camadas atuam em uma versão de uma camada.
Configuração de assinatura de código: as ações podem ser restritas a recursos específicos de configuração de assinatura de código pelo ARN.
Tags: use condições de tag padrão. Para ter mais informações, consulte Usar controle de acesso baseado em atributos no Lambda.
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
-
Configuração de assinatura de código:
arn:aws:lambda:
us-west-2
:123456789012
:code-signing-config:my-csc
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:
.
Seções
Entender a seção Condição nas 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.
Referência a funções na seção Recursos das políticas
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*"
} ] }
Comportamentos de função e ações do IAM compatíveis
As ações definem o que pode ser permitido por meio das políticas do IAM. Para obter uma lista de ações compatíveis no Lambda, consulte Actions, resources, and condition keys for AWS Lambda na Referência de autorização do serviço. Na maioria dos casos, quando uma ação do IAM permite uma ação da API do Lambda, o nome da ação do IAM é igual ao nome da ação da API do Lambda, com as seguintes exceções:
Ação API | Ação do IAM |
---|---|
Invoke | lambda:InvokeFunction |
lambda:GetLayerVersion |
Além dos recursos e das condições definidos na Referência de autorização do serviço, o Lambda é compatível com os seguintes recursos e condições para determinadas ações: Muitos deles estão relacionados às funções de referência na seção de recursos das políticas. 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ção | Recurso | Condição |
---|---|---|
Invoke–Permission: |
Versão da função Alias da função |
N/D |
N/D |
|
|
Alias da função |
N/D |