Definir permissões de uma função do Lambda com um perfil de execução
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) 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.
Tópicos
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. 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
-
Insira um nome de perfil na seção Detalhes do perfil.
-
Na seção Política, selecione Usar política existente.
-
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.
-
Selecione Criar perfil.
Como alternativa, 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 Atualizar o perfil de execução de uma função.
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
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, 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.
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.