

# Ajustar as seções de Recursos e Condições das políticas
<a name="lambda-api-permissions-ref"></a>

É possível 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. Também é possível 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 obter mais informações, consulte [Usar controle de acesso baseado em atributos no Lambda](attribute-based-access-control.md).

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 de origem de 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).

**Example 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](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)). Para outras ações, o identificador da ação é o nome da operação com o prefixo `lambda:`.

**Topics**
+ [Entender a seção Condição nas políticas](#authorization-conditions)
+ [Referência a funções na seção Recursos das políticas](#function-resources)
+ [Comportamentos de função e ações do IAM compatíveis](#permissions-resources)

## Entender a seção Condição nas políticas
<a name="authorization-conditions"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) 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](access-control-resource-based.md) 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`.

**Example 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](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). na *Referência a autorizações de serviços*.

## Referência a funções na seção Recursos das políticas
<a name="function-resources"></a>

Você referencia uma função do 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](configuration-versions.md) de uma função ou um [alias](configuration-aliases.md) (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](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html) do `FunctionName` ou definindo um valor no parâmetro [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html) 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**  
Não é possível 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html), no *Guia do usuário do IAM*.

**Example 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`.

**Example 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.

**Example 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.

**Example 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
<a name="permissions-resources"></a>

 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](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awslambda.html) 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 da API | Ação do IAM | 
| --- | --- | 
| [Invocar](https://docs.aws.amazon.com//lambda/latest/api/API_Invoke.html) | lambda:InvokeFunction | 
| [GetLayerVersion](https://docs.aws.amazon.com//lambda/latest/api/API_GetLayerVersion.html)<br />[GetLayerVersionByArn](https://docs.aws.amazon.com//lambda/latest/api/API_GetLayerVersionByArn.html) | lambda:GetLayerVersion | 

Além dos recursos e das condições definidos na [Referência de autorização do serviço](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html), 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 | 
| --- | --- | --- | 
| [AddPermission](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html)<br />[RemovePermission](https://docs.aws.amazon.com/lambda/latest/api/API_RemovePermission.html)<br />[Invocar](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) (**Permissões:** `lambda:InvokeFunction`) | Versão da função<br />Alias da função | N/D | 
| [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html) | N/D | `lambda:CodeSigningConfigArn` | 
| [CreateFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunctionUrlConfig.html)<br />[DeleteFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteFunctionUrlConfig.html)<br />[GetFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionUrlConfig.html)<br />[UpdateFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionUrlConfig.html) | Alias da função | N/D | 