

# Definir permissões de uma função do Lambda com um perfil de execução
<a name="lambda-intro-execution-role"></a>

O perfil de execução de uma função do Lambda é um perfil do AWS Identity and Access Management (IAM) que concede à função permissão para acessar recursos e Serviços da AWS. Por exemplo, é possível criar uma função de execução que tenha permissão para enviar logs ao Amazon CloudWatch e carregar os dados de rastreamento no AWS X-Ray. Esta página fornece informações sobre como criar, visualizar e gerenciar o perfil de execução de uma função do Lambda.

O Lambda assume automaticamente seu perfil de execução quando você invoca sua função. Evite chamar `sts:AssumeRole` manualmente para assumir o perfil de execução no código da sua função. Se o caso de uso exigir que o perfil assuma a si mesmo, será necessário incluir o perfil em si como uma entidade principal confiável na política de confiança do perfil. Para obter mais informações sobre como modificar uma política de confiança de perfil, consulte [ Modificar a política de confiança de uma função (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy) no Guia do usuário do IAM.

Para que o Lambda assuma seu perfil de execução de forma adequada, a [política de confiança](#permissions-executionrole-api) do perfil deve especificar a entidade principal de serviço do Lambda (`lambda.amazonaws.com`) como um serviço confiável.

**Topics**
+ [Criar uma função de execução no console do IAM](#permissions-executionrole-console)
+ [Criar e gerenciar perfis com a AWS CLI](#permissions-executionrole-api)
+ [Conceda acesso de menor privilégio à sua função de execução do Lambda](#permissions-executionrole-least-privilege)
+ [Visualizar e atualizar permissões no perfil de execução](permissions-executionrole-update.md)
+ [Trabalhar com políticas gerenciadas pela AWS no perfil de execução](permissions-managed-policies.md)
+ [Usar o ARN da função de origem para controlar o comportamento de acesso da função](permissions-source-function-arn.md)

## Criar uma função de execução no console do IAM
<a name="permissions-executionrole-console"></a>

Por padrão, o Lambda cria uma função de execução com permissões mínimas quando você [cria uma função no console do Lambda](getting-started.md#getting-started-create-function). Especificamente, esse perfil de execução inclui a [política gerenciada `AWSLambdaBasicExecutionRole`](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html), que concede à sua função permissões básicas para registrar eventos no Amazon CloudWatch Logs. Você pode selecionar **Criar perfil padrão** na seção **Permissões**.

É possível escolher um perfil existente selecionando **Usar outro perfil** na seção **Permissões**. Se a sua função do Lambda precisar de permissões adicionais para realizar tarefas como atualizar entradas em um banco de dados Amazon DynamoDB em resposta a eventos, você pode criar um perfil de execução personalizado com as permissões necessárias. Para isso, selecione **Usar outro perfil** na seção **Permissões**, o que abrirá uma janela lateral onde você poderá personalizar suas permissões.

**Para configurar um perfil de execução a partir do Console**

1. Insira um **nome de perfil** na seção Detalhes do perfil.

1. Na seção **Política**, selecione **Usar política existente**.

1. Selecione as políticas gerenciadas pela AWS que deseja anexar ao seu perfil. Por exemplo, se sua função precisar acessar o DynamoDB, selecione a política gerenciada **AWSLambdaDynamoDBExecutionRole**.

1. Selecione **Criar perfil**.

Como alternativa, ao [criar uma função no console do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function), você poderá anexar qualquer perfil de execução criado anteriormente à função. Se você quiser anexar um novo perfil de execução a uma função existente, siga as etapas em [Atualizar o perfil de execução de uma função](permissions-executionrole-update.md).

## Criar e gerenciar perfis com a AWS CLI
<a name="permissions-executionrole-api"></a>

Para criar uma função de execução com a AWS Command Line Interface (AWS CLI), use o comando **create-role**. Ao usar esse comando, é possível especificar a política de confiança em linha. A política de confiança de um perfil concede a permissão de entidades principais especificadas para assumir o perfil. No exemplo a seguir, você concede à entidade principal do serviço Lambda permissão para assumir seu perfil. Os requisitos para escapar de aspas na string JSON podem variar dependendo do shell.

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
```

Também é possível definir a política de confiança para a função usando um arquivo JSON separado. No exemplo a seguir, `trust-policy.json` é um arquivo no diretório atual.

**Example trust-policy.json**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document file://trust-policy.json
```

Para adicionar permissões à função, use o comando **attach-policy-to-role**. Os comandos a seguir adicionam a política gerenciada `AWSLambdaBasicExecutionRole` ao perfil de execução `lambda-ex`.

```
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
```

Depois de criar o perfil de execução, anexe-o à sua função. Ao [criar uma função no console do Lambda](getting-started.md#getting-started-create-function), você poderá anexar qualquer perfil de execução criado anteriormente à função. Se você quiser anexar um novo perfil de execução a uma função existente, siga as etapas em [Atualizar o perfil de execução de uma função](permissions-executionrole-update.md#update-execution-role).

## Conceda acesso de menor privilégio à sua função de execução do Lambda
<a name="permissions-executionrole-least-privilege"></a>

Quando você cria um perfil do IAM pela primeira vez para sua função do Lambda durante a fase de desenvolvimento, às vezes você pode conceder permissões além do que é necessário. Antes de publicar sua função no ambiente de produção, como prática recomendada, ajuste a política para incluir somente as permissões necessárias. Para obter mais informações, consulte [Aplicar permissões de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), no *Guia do usuário do IAM*.

Use o IAM Access Analyzer para ajudar a identificar as permissões necessárias para a política de função de execução do IAM. O IAM Access Analyzer revisa seus logs do AWS CloudTrail para o intervalo de datas especificado e gera um modelo de política com apenas as permissões que a função utilizou durante esse período. Você pode usar o modelo para criar uma política gerenciada com permissões refinadas e anexá-la à função do IAM. Dessa forma, você concede apenas as permissões necessárias à interação com os recursos da AWS, de acordo com a especificidade do caso de uso.

Para obter mais informações, consulte [Generate policies based on access activity](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_generate-policy.html) (Gerar políticas com base na atividade de acesso), no *Guia do usuário do IAM*.