

# 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 (\$1) 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) [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) [RemovePermission](https://docs.aws.amazon.com/lambda/latest/api/API_RemovePermission.html) [Invocar](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) (**Permissões:** `lambda:InvokeFunction`)  |  Versão da função 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) [DeleteFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteFunctionUrlConfig.html) [GetFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionUrlConfig.html) [UpdateFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionUrlConfig.html)  |  Alias da função  |  N/D  | 