Regras personalizadas do Lambda (exemplo geral)
Efetue o procedimento a seguir para criar uma regra personalizada do Lambda. Para criar uma regra personalizada do Lambda, primeiro crie uma função doAWS Lambda, que contém a lógica de avaliação para a regra. Em seguida, associe a função a uma regra personalizada do Lambda criada no AWS Config.
Importante
Como prática recomendada de segurança ao autorizar a permissão do AWS Config para invocar sua função do Lambda, recomendamos muito que você restrinja o acesso à política baseada em recursos do Lambda com o sourceARN
e/ou sourceAccountId
na solicitação de invocação. Para ter mais informações, consulte Prática recomendada de segurança para a política baseada em recursos do AWS Lambda.
Sumário
Criar uma função AWS Lambda para uma regra de configuração personalizada
Uma Função do Lambda é um código personalizado carregado para o AWS Lambda que é invocado por eventos que nele são publicados por uma origem de evento. Se a função do Lambda estiver associada a uma regra do Config, o AWS Config a invocará quando ocorrer o gatilho da regra. A função do Lambda avalia as informações de configuração enviadas pelo AWS Config e retorna os resultados da avaliação. Para mais informações sobre as funções do Lambda, consulte Origens de eventos e funções no Guia do desenvolvedor do AWS Lambda.
Você pode usar uma linguagem de programação que tenha suporte no AWS Lambda para criar uma função do Lambda para uma regra personalizada. Para facilitar a tarefa, você pode personalizar um esquema do AWS Lambda ou reutilizar uma função de exemplo do repositório GitHub de regras do AWS Config.
Esquemas do AWS Lambda
O console do AWS Lambda fornece funções de exemplo, ou esquemas, que você pode personalizar ao adicionar sua própria avaliação lógica. Quando você cria uma função, você pode escolher um dos seguintes esquemas:
-
config-rule-change-triggered - acionado quando mudam suas configurações de recurso da AWS.
-
config-rule-periodic: acionado a uma frequência escolhida por você (por exemplo, a cada 24 horas).
Repositório GitHub de regras AWS Config
Um repositório público de funções de exemplo para regras personalizadas está disponível no GitHub, um serviço de hospedagem e compartilhamento de códigos baseado na web. As funções de exemplo são desenvolvidas e recebem colaborações da comunidade AWS. Se você quiser usar um exemplo, pode copiar o código em uma nova função AWS Lambda. Para exibir o repositório, consulte https://github.com/awslabs/aws-config-rules/
Para criar a função para sua regra personalizada
Faça login no AWS Management Console e abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/
. -
No menu do AWS Management Console, verifique se o seletor de região está definido para uma região que tem suporte a regras do AWS Config. Para obter a lista das regiões compatíveis, consulte Regiões e endpoints do AWS Config no Referência geral da Amazon Web Services.
-
Escolha Create a Lambda function.
-
Na página Usar um esquema, você pode escolher uma das funções de esquema para as regras do AWS Config como ponto de partida, ou pode avançar sem um esquema, escolhendo Ignorar.
-
Na página Configurar gatilhos, selecione Próximo.
-
Na página Informações básicas, digite um nome e uma descrição.
-
Em Runtime (Tempo de execução), escolha a linguagem de programação em que sua função foi criada.
-
Em Code entry type (Tipo de entrada de código), selecione o tipo de entrada desejada. Se você estiver usando um esquema, mantenha o código pré-configurado.
-
Forneça seu código usando o método exigido pelo tipo de entrada de código que você selecionou. Se estiver usando um esquema, o código da função é fornecido no editor de código, e você pode personalizá-lo para incluir sua própria avaliação lógica. Seu código pode avaliar os dados de eventos que o AWS Config fornece quando ele chama a sua função:
-
Para funções baseadas no esquema config-rule-change-triggered, ou para funções acionadas por mudanças de configuração, os dados do evento são o item de configuração ou um objeto de item de configuração superdimensionado para o recurso da AWS que foi alterado.
-
Para funções baseadas no esquema config-rule-periodic, ou para funções acionadas a um intervalo que você definiu, os dados do evento são um objeto JSON que inclui informações sobre quando a avaliação foi acionada.
-
Para ambos os tipos de funções, o AWS Config passa os parâmetros de regra no formato JSON. Você pode definir quais parâmetros de regra são informados ao criar a regra personalizada no AWS Config.
-
Para obter eventos de exemplo que o AWS Config publica quando chama sua função, consulte Eventos de exemplo para regras AWS Config.
-
-
Para Função de execução, escolha Criar uma nova função com base em modelos de política da AWS.
-
Para Role name, digite um nome.
-
Para Policy templates, selecione AWS Config Rules permission.
-
Verifique os detalhes e escolha Criar função.
Criar uma regra personalizada no AWS Config
Use o AWS Config para criar uma regra personalizada do Lambda e associá-la a uma função do Lambda.
Para criar uma regra personalizada
-
Abra o console do AWS Config em https://console.aws.amazon.com/config/
. -
No menu AWS Management Console, verifique se o seletor de região está definido para a mesma região em que você criou a função do AWS Lambda para a regra de lambda personalizada.
-
Na página Rules (Regras), selecione Add rule (Adicionar regra).
-
Na página Especificar tipo de regra, escolha Criar regra personalizada.
-
Na página Configure rule (Configurar regra), digite um nome e descrição.
-
Em AWS Lambda function ARN, especifique o ARN que o AWS Lambda atribuiu à sua função.
nota
O ARN que você especificou nesta etapa não deve incluir o qualifier
$LATEST
. Você pode especificar um ARN sem um qualificador de versão ou com qualquer qualificador, exceto$LATEST
. O AWS Lambda oferece suporte ao versionamento de funções, e a cada versão recebe um ARN com um qualificador. O AWS Lambda usa o qualificador$LATEST
para a versão mais recente. -
Para Tipo de gatilho, selecione uma ou ambas as opções abaixo:
-
Alterações da configuração: o AWS Config invoca sua função do Lambda quando detecta uma alteração na configuração.
-
Periódico: o AWS Config invoca sua função do Lambda no intervalo que você definiu (por exemplo, a cada 24 horas).
-
-
Se os tipos de gatilhos de sua regra incluem Alterações da configuração, especifique uma das seguintes opções para Escopo das alterações com o qual o AWS Config invoca a função do Lambda:
-
Todas as alterações: quando um recurso registrado pelo AWS Config é criado, alterado ou excluído.
-
Recursos: quando um recurso que corresponde ao tipo especificado, ou ao tipo mais o identificador, é criado, alterado ou excluído.
-
Tags: quando um recurso com a tag especificada é criado, alterado ou excluído
-
-
Se os tipos de gatilho de sua regra incluem Periódico, especifique a Frequência com a qual o AWS Config invoca a função do Lambda.
-
Na seção Parâmetros, especifique os parâmetros de regra que a função do AWS Lambda avalia e o valor desejado.
-
Escolha Próximo. Em Revisar página, verifique os detalhes da função e selecione Criar função. Sua nova regra aparece na página Regras.
Compliance (Compatibilidade) exibirá Evaluating... (Em avaliação) até que o AWS Config receba os resultados de avaliação da sua função do AWS Lambda. Se a regra e a função estiverem funcionando como esperado, um resumo dos resultados será exibido depois de alguns minutos. Você pode atualizar os resultados com o botão de atualizar.
Se a regra ou a função não funcionar como esperado, você pode consultar uma das opções abaixo para Compliance (Compatibilidade):
-
No results reported (Nenhum resultado relatado) – o AWS Config avaliou seus recursos em relação à regra. A regra não se aplicou aos recursos da AWS em seu escopo, os recursos especificados foram excluídos, ou os resultados da avaliação foram excluídos. Para obter resultados de avaliação, atualize a regra, mude seu escopo ou selecione Re-evaluate (Reavaliar).
Essa mensagem também podem aparecer se a regra não relatar resultados de avaliação.
-
No resources in scope (Nenhum recursos no escopo) – o AWS Config não pôde avaliar seus recursos da AWS registrados em relação à regra porque nenhum dos recursos estão dentro do escopo da regra. Você pode escolher na página AWS ConfigSettings quais recursos o registrará.
-
Evaluations failed (Falha nas avaliações) – para obter informações que possam ajudar a determinar o problema, selecione o nome da regra para abrir sua página de detalhes e ver a mensagem de erro.
-
nota
Quando você criar uma regra personalizada do Lambda com o console do AWS Config, as permissões apropriadas serão criadas automaticamente para você. Se você criar uma regra personalizada com a AWS CLI, precisará dar permissão ao AWS Config para invoca sua função do Lambda por meio do comando aws lambda add-permission
. Para obter mais informações, consulte Usar políticas baseadas em recursos para o AWS Lambda (Política da função do Lambda ) no Guia do desenvolvedor do AWS Lambda.
Antes de dar permissão do AWS Config para invocar a função do Lambda, consulte a seção a seguir Prática recomendada de segurança para a política baseada em recursos do AWS Lambda.
Prática recomendada de segurança para a política baseada em recursos do AWS Lambda
Como prática recomendada de segurança, para evitar dar permissão de invocação para que todo o nome da entidade principal do serviço (SPN) chame sua função do Lambda, recomendamos muito que você restrinja o acesso à política baseada em recursos do Lambda com sourceARN
e/ou sourceAccountId
na solicitação de invocação.
O sourceARN
é o ARN da regra do AWS Config que está invocando a função do Lambda.
O sourceAccountId
é o ID da conta do usuário que criou a regra.
Restringir o acesso na política baseada em recursos do Lambda ajuda a garantir que o AWS Lambda esteja acessando seus recursos somente em nome de usuários e cenários esperados.
Para adicionar permissão baseada em SPN, você precisa usar a seguinte CLI
aws lambda add-permission --function-name
rule lambda function name
--action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com
Para adicionar a permissão baseada em SourceAccountID
Antes de a regra ser criada, é possível adicionar permissão baseada no sourceAccountId
à política baseada em recursos com a CLI a seguir
aws lambda add-permission --function-name
rule lambda function name
--action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-accountyour account ID
Para adicionar permissões baseadas em SourceArn e SourceAccountID
Depois que a regra for criada, você poderá adicionar a permissão baseada em sourceARN
à política baseada em recursos com a seguinte CLI. Isso permite que somente um ARN de regra específico invoque a função do Lambda.
aws lambda add-permission --function-name
rule lambda function name
--action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-accountyour account ID
--source-arnARN of the created config rule
Avaliar tipos de recursos adicionais
Você pode criar regras personalizadas do Lambda para executar avaliações para tipos de recursos ainda não registrados pelo AWS Config. Isso será útil se você quiser avaliar a conformidade para tipos de recursos adicionais que o AWS Config não registra atualmente. Para obter uma lista de tipos de recursos adicionais que você pode avaliar com regras personalizadas, consulte AWS Resource Types Reference.
nota
Ao criar um Lambda Personalizado para um tipo de recurso que não é gravado pelo AWS Config, a regra deve ter o tipo de gatilho periódico. O tipo de gatilho de alterações de configuração não é suportado. Para ter mais informações, consulte Modo de avaliação e tipos de gatilho para regras do AWS Config.
Exemplo
-
Você deseja avaliar cofres do Amazon S3 Glacier em sua conta. Os recursos de cofre do Amazon S3 Glacier atualmente não são registrados pelo AWS Config.
-
Você cria uma função do AWS Lambda que avalia se os vaults do Amazon S3 Glacier estão em conformidade com os requisitos de sua conta.
-
Você cria uma regra personalizada do Lambda chamada evaluate-glacier-vaults e atribui a função do AWS Lambda à regra.
-
O AWS Config invoca sua função do Lambda function e depois avalia os cofres do Amazon S3 Glacier em relação à sua regra.
-
O AWS Config retorna as avaliações e você pode visualizar os resultados de compatibilidade para a sua regra.
nota
Você pode exibir os detalhes de configuração no cronograma do AWS Config e pesquisar no console do AWS Config os recursos que tenham AWS Configsuporte. Se você configurou o AWS Config para registrar todos os tipos de recursos, os recursos recentes com suporte serão automaticamente gravados. Para ter mais informações, consulte Tipos de recursos compatíveis.