

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Habilite a Amazon GuardDuty condicionalmente usando modelos AWS CloudFormation
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates"></a>

*Ram Kandaswamy, Amazon Web Services*

## Resumo
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-summary"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html), uma ferramenta de infraestrutura como código (IaC), ajuda você a gerenciar AWS recursos por meio de implantações baseadas em modelos. CloudFormation normalmente é usado para gerenciar AWS recursos. Usá-lo para habilitar Serviços da AWS, como a [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html), pode apresentar desafios únicos. GuardDuty é um serviço de detecção de ameaças que monitora continuamente suas Contas da AWS atividades maliciosas e comportamentos não autorizados. Ao contrário dos recursos típicos que podem ser criados várias vezes, GuardDuty é um serviço que precisa ser ativado uma vez por conta Região da AWS e. CloudFormation As condições tradicionais oferecem suporte apenas a comparações de valores estáticos, o que dificulta a verificação do estado atual de serviços como o. GuardDuty Se você tentar fazer a ativação GuardDuty CloudFormation em uma conta em que ela já está ativa, a implantação da pilha falhará. Isso pode criar desafios operacionais para DevOps equipes que gerenciam ambientes com várias contas.

Esse padrão apresenta uma solução para esse desafio. Ele usa recursos CloudFormation personalizados que são apoiados por [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)funções para realizar verificações dinâmicas de estado. A lógica condicional é ativada GuardDuty somente se ainda não estiver ativada. Ele usa as saídas da pilha para registrar o GuardDuty status para referência futura.

Seguindo esse padrão, você pode automatizar as GuardDuty implantações em toda a sua AWS infraestrutura e, ao mesmo tempo, manter as operações de CloudFormation pilha limpas e previsíveis. Essa abordagem é particularmente valiosa para organizações que são:
+ Gerenciando vários Contas da AWS por meio do IaC
+ Implementando serviços de segurança em grande escala
+ Exigindo implantações de infraestrutura idempotentes
+ Automatizando implantações de serviços de segurança

## Pré-requisitos e limitações
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma função AWS Identity and Access Management (IAM) que tem permissões para criar, atualizar e excluir CloudFormation pilhas
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Limitações**

Se GuardDuty tiver sido desativado manualmente para um Conta da AWS ou Região da AWS, esse padrão não é ativado GuardDuty para essa conta ou região de destino.

## Arquitetura
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-architecture"></a>

**Pilha de tecnologias de destino**

O padrão é usado CloudFormation para infraestrutura como código (IaC). Você usa um recurso CloudFormation personalizado apoiado por uma função Lambda para obter a capacidade dinâmica de habilitação de serviços.

**Arquitetura de destino**

O diagrama de arquitetura de alto nível a seguir mostra o processo de habilitação GuardDuty por meio da implantação de um CloudFormation modelo:

![\[Usando uma CloudFormation pilha para habilitar GuardDuty em uma conta da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/3abd7cb7-0937-41fe-8eaa-79aedb182732/images/71624052-eebc-474a-9aa3-8606d87fc51d.png)


1. Você implanta um CloudFormation modelo para criar uma CloudFormation pilha.

1. A pilha cria um perfil do IAM e uma função do Lambda.

1. A função do Lambda assume o perfil do IAM.

1. Se ainda não GuardDuty estiver habilitado no destino Conta da AWS, a função Lambda o habilita.

**Automação e escala**

Você pode usar o AWS CloudFormation StackSet recurso para estender essa solução para vários Contas da AWS Regiões da AWS e. Para obter mais informações, consulte [Trabalhando com AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) na CloudFormation documentação.

## Ferramentas
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida em todas Contas da AWS as regiões.
+  GuardDutyA [Amazon](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html) é um serviço contínuo de monitoramento de segurança que analisa e processa registros para identificar atividades inesperadas e potencialmente não autorizadas em seu AWS ambiente.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

## Épicos
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-epics"></a>

### Crie o CloudFormation modelo e implante a pilha
<a name="create-the-cfnshort-template-and-deploy-the-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Armazene o código no Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Crie o CloudFormation modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Crie a CloudFormation pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Valide se GuardDuty está habilitado para o. Conta da AWS | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | Administrador de nuvem, administrador da AWS | 
| Configure contas ou regiões adicionais. | Conforme necessário para seu caso de uso, use o CloudFormation StackSet recurso para estender essa solução para vários Contas da AWS Regiões da AWS e. Para obter mais informações, consulte [Trabalhando com AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) na CloudFormation documentação. | Administrador de nuvem, administrador da AWS | 

## Recursos relacionados
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-resources"></a>

**Referências**
+ [AWS CloudFormation documentação](https://docs.aws.amazon.com/cloudformation/index.html)
+ [AWS Lambda referência de tipo de recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Lambda.html)
+ [CloudFormation tipo de recurso: AWS: :IAM: :Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)
+ [CloudFormation tipo de recurso: AWS:GuardDuty: :Detector](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-detector.html)
+ [Quatro maneiras de recuperar qualquer propriedade AWS de serviço usando AWS CloudFormation](https://aws.amazon.com/blogs/mt/four-ways-to-retrieve-any-aws-service-property-using-aws-cloudformation-part-1/) (postagem do blog)

**Tutoriais e vídeos**
+ [Simplify Your Infrastructure Management Using AWS CloudFormation](https://www.youtube.com/watch?v=1h-GPXQrLZw) (Tutorial)
+ [Use AWS Security Hub CSPM a Amazon GuardDuty e proteja várias contas](https://www.youtube.com/watch?v=Rg2ZzAAi1nY) (AWS re:Invent 2020)
+ [Práticas recomendadas para criação AWS CloudFormation(AWS re:Invent](https://www.youtube.com/watch?v=bJHHQM7GGro) 2019)
+ [Detecção de ameaças em AWS: uma introdução à Amazon GuardDuty](https://www.youtube.com/watch?v=czsuZXQvD8E) (AWS re:INFORCE 2019)

## Mais informações
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-additional"></a>

**Código Python**

```
import boto3
import os
import json
from botocore.exceptions import ClientError
import cfnresponse
guardduty=boto3.client('guardduty')
cfn=boto3.client('cloudformation')
def lambda_handler(event, context):
    print('Event: ', event)
    if 'RequestType' in event:    
      if event['RequestType'] in ["Create","Update"]:
          enabled=False
          try:  
            response=guardduty.list_detectors()
            if "DetectorIds" in response and len(response["DetectorIds"])>0:
              enabled="AlreadyEnabled"
            elif "DetectorIds" in response and len(response["DetectorIds"])==0:
              cfn_response=cfn.create_stack(
                StackName='guardduty-cfn-stack',
                TemplateBody='{ "AWSTemplateFormatVersion": "2010-09-09",    "Description": "Guard duty creation template",    "Resources": { "IRWorkshopGuardDutyDetector": {  "Type": "AWS::GuardDuty::Detector",    "Properties": {   "Enable": true  }   } } }'
                )
              enabled="True"
          except Exception as e:
              print("Exception: ",e)
          responseData = {}
          responseData['status'] = enabled
          cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, "CustomResourcePhysicalID" )
      elif event['RequestType'] == "Delete":
          cfn_response=cfn.delete_stack(
                  StackName='guardduty-cfn-stack')
          cfnresponse.send(event, context, cfnresponse.SUCCESS, {})
```

