Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Habilite a Amazon GuardDuty condicionalmente usando modelos AWS CloudFormation - Recomendações da AWS

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

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

Criado por Ram Kandaswamy (AWS)

Resumo

Você pode habilitar a Amazon GuardDuty em uma conta da Amazon Web Services (AWS) usando um AWS CloudFormation modelo. Por padrão, se já GuardDuty estiver habilitado quando você tentar usá-lo CloudFormation para ativá-lo, a implantação da pilha falhará. No entanto, você pode usar condições em seu CloudFormation modelo para verificar se já GuardDuty está habilitado. CloudFormation suporta o uso de condições que comparam valores estáticos; ele não suporta o uso da saída de outra propriedade de recurso dentro do mesmo modelo. Para obter mais informações, consulte Condições na CloudFormation documentação.

Nesse padrão, você usa um recurso CloudFormation personalizado apoiado por uma AWS Lambda função para habilitar condicionalmente, GuardDuty caso ainda não esteja habilitado. Se GuardDuty estiver habilitada, a pilha captura o status e o registra na seção de saída da pilha. Se não GuardDuty estiver habilitado, a pilha o habilita.

Pré-requisitos e limitações

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 e configurado

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

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:

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

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

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

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

O processo de habilitação GuardDuty por meio da implantação de um modelo CloudFormation

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 na CloudFormation documentação.

Ferramentas

  • AWS Command Line Interface (AWS CLI) é 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 CloudFormationajuda 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 é 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) 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 é 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

TarefaDescriçãoHabilidades necessárias

Crie o CloudFormation modelo.

  1. Copie o código no CloudFormation modelo na seção Informações adicionais.

  2. Cole o código em um editor de textos.

  3. Salve o arquivo como sample.yaml na sua estação de trabalho.

AWS DevOps

Crie a CloudFormation pilha.

  1. No AWS CLI, insira o seguinte comando. Isso cria uma nova CloudFormation pilha usando o sample.yaml arquivo. Para obter mais informações, consulte Criação de uma pilha na CloudFormation documentação.

    aws cloudformation create-stack \ --stack-name guardduty-cf-stack \ --template-body file://sample.yaml
  2. Confirme se o valor a seguir aparece no AWS CLI, indicando que a pilha foi criada com sucesso. A quantidade de tempo necessária para criar a pilha pode variar.

    "StackStatus": "CREATE_COMPLETE",
AWS DevOps

Valide se GuardDuty está habilitado para o. Conta da AWS

  1. Faça login no AWS Management Console e abra o GuardDuty console.

  2. Verifique se o GuardDuty serviço está ativado.

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 na CloudFormation documentação.

Administrador de nuvem, administrador da AWS

Crie o CloudFormation modelo e implante a pilha

TarefaDescriçãoHabilidades necessárias

Crie o CloudFormation modelo.

  1. Copie o código no CloudFormation modelo na seção Informações adicionais.

  2. Cole o código em um editor de textos.

  3. Salve o arquivo como sample.yaml na sua estação de trabalho.

AWS DevOps

Crie a CloudFormation pilha.

  1. No AWS CLI, insira o seguinte comando. Isso cria uma nova CloudFormation pilha usando o sample.yaml arquivo. Para obter mais informações, consulte Criação de uma pilha na CloudFormation documentação.

    aws cloudformation create-stack \ --stack-name guardduty-cf-stack \ --template-body file://sample.yaml
  2. Confirme se o valor a seguir aparece no AWS CLI, indicando que a pilha foi criada com sucesso. A quantidade de tempo necessária para criar a pilha pode variar.

    "StackStatus": "CREATE_COMPLETE",
AWS DevOps

Valide se GuardDuty está habilitado para o. Conta da AWS

  1. Faça login no AWS Management Console e abra o GuardDuty console.

  2. Verifique se o GuardDuty serviço está ativado.

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 na CloudFormation documentação.

Administrador de nuvem, administrador da AWS

Recursos relacionados

Referências

Tutoriais e vídeos

Mais informações

CloudFormation modelo

AWSTemplateFormatVersion: 2010-09-09 Resources: rLambdaLogGroup: Type: 'AWS::Logs::LogGroup' DeletionPolicy: Delete Properties: RetentionInDays: 7 LogGroupName: /aws/lambda/resource-checker rLambdaCheckerLambdaRole: Type: 'AWS::IAM::Role' Properties: RoleName: !Sub 'resource-checker-lambda-role-${AWS::Region}' AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: 'sts:AssumeRole' Path: / Policies: - PolicyName: !Sub 'resource-checker-lambda-policy-${AWS::Region}' PolicyDocument: Version: 2012-10-17 Statement: - Sid: CreateLogGroup Effect: Allow Action: - 'logs:CreateLogGroup' - 'logs:CreateLogStream' - 'logs:PutLogEvents' - 'iam:CreateServiceLinkedRole' - 'cloudformation:CreateStack' - 'cloudformation:DeleteStack' - 'cloudformation:Desc*' - 'guardduty:CreateDetector' - 'guardduty:ListDetectors' - 'guardduty:DeleteDetector' Resource: '*' resourceCheckerLambda: Type: 'AWS::Lambda::Function' Properties: Description: Checks for resource type enabled and possibly name to exist FunctionName: resource-checker Handler: index.lambda_handler Role: !GetAtt - rLambdaCheckerLambdaRole - Arn Runtime: python3.13 MemorySize: 128 Timeout: 180 Code: ZipFile: | 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": "A sample 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, {}) CheckResourceExist: Type: 'Custom::LambdaCustomResource' Properties: ServiceToken: !GetAtt - resourceCheckerLambda - Arn Outputs: status: Value: !GetAtt - CheckResourceExist - status

Opção de código alternativa para o recurso do Lambda

O CloudFormation modelo fornecido usa código embutido para referenciar o recurso Lambda, para facilitar a referência e a orientação. Como alternativa, você pode colocar o código Lambda em um bucket do Amazon Simple Storage Service (Amazon S3) e referenciá-lo no modelo. CloudFormation O código embutido não oferece suporte a dependências ou bibliotecas de pacotes. Você pode apoiá-los colocando o código Lambda em um bucket do Amazon S3 e referenciando-o no modelo. CloudFormation

Substitua as linhas de código a seguir:

Code: ZipFile: |

com as linhas de código a seguir:

Code: S3Bucket: <bucket name> S3Key: <python file name> S3ObjectVersion: <version>

A S3ObjectVersion propriedade pode ser omitida se você não estiver usando o versionamento em seu bucket do Amazon S3. Para obter mais informações, consulte Uso de versionamento em buckets do Amazon S3 na documentação do Amazon S3.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.