Definir permissões de uma função do Lambda com um perfil de execução - AWS Lambda

Definir permissões de uma função do Lambda com um perfil de execução

A função de execução de uma função do Lambda é uma perfil do AWS Identity and Access Management (IAM) que concede à função permissão para acessar serviços e recursos 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) 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 do perfil deve especificar a entidade principal de serviço do Lambda (lambda.amazonaws.com) como um serviço confiável.

Criar uma função de execução no console do IAM

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. Especificamente, esse perfil de execução inclui a política gerenciada AWSLambdaBasicExecutionRole, que concede à sua função permissões básicas para registrar eventos no Amazon CloudWatch Logs.

Normalmente, suas funções precisam de permissões adicionais para realizar tarefas mais significativas. Por exemplo, você pode ter uma função do Lambda que responda a um evento ao atualizar as entradas do banco de dados do Amazon DynamoDB. É possível criar um perfil de execução com as permissões necessárias usando o console do IAM.

Como criar uma função de execução no console do IAM
  1. Abra a página Roles (Funções) no console do IAM.

  2. Selecione Create role (Criar função).

  3. Em Tipo de entidade confiável, selecione Serviço da AWS.

  4. Em Use case (Caso de uso), escolha Lambda.

  5. Escolha Próximo.

  6. 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.

  7. Escolha Próximo.

  8. Digite um Role name e escolha Create role.

Para obter instruções, consulte Criar uma função para um serviço da AWS (console) no Guia do usuário do IAM.

Depois de criar o perfil de execução, anexe-o à sua função. Ao criar uma função no console do Lambda, 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 .

Criar e gerenciar perfis com a AWS CLI

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.

exemplo 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

A seguinte saída deverá ser mostrada:

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

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, 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 .

Conceda acesso de menor privilégio à sua função de execução do Lambda

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, 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 (Gerar políticas com base na atividade de acesso), no Guia do usuário do IAM.