

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

# Configure os registros de fluxo da VPC para centralização em Contas da AWS
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts"></a>

*Benjamin Morris e Aman Kaur Gandhi, Amazon Web Services*

## Resumo
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-summary"></a>

Em uma nuvem privada AWS virtual (VPC), o recurso VPC Flow Logs pode fornecer dados úteis para solução de problemas operacionais e de segurança. No entanto, há limitações no uso de logs de fluxo de VPC em um ambiente com várias contas. Especificamente, os registros de fluxo entre contas do Amazon CloudWatch Logs não são suportados. Em vez disso, centralize os logs configurando um bucket do Amazon Simple Storage Service (Amazon S3) com a política de bucket apropriada.

**nota**  
Este padrão aborda os requisitos para enviar os logs de fluxo para um local centralizado. No entanto, se você também quiser que os logs estejam disponíveis localmente nas contas dos membros, você pode criar vários logs de fluxo para cada VPC. Usuários que não têm acesso à conta de arquivamento de logs podem visualizar os logs de tráfego para solução de problemas. Como alternativa, você pode configurar um único registro de fluxo para cada VPC que envia registros para CloudWatch o Logs. Em seguida, você pode usar um filtro de assinatura do Amazon Data Firehose para encaminhar os logs para um bucket do S3. Para obter mais informações, consulte a seção [Recursos relacionados](#configure-vpc-flow-logs-for-centralization-across-aws-accounts-resources).

## Pré-requisitos e limitações
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma AWS Organizations organização com uma conta usada para centralizar registros (por exemplo, Arquivo de registros)

**Limitações**

Se você usar a chave gerenciada AWS Key Management Service (AWS KMS) `aws/s3` para criptografar seu bucket central, ele não receberá registros de uma conta diferente. Em vez disso, será exibido um código de erro 400, nomeadamente `Unsuccessful`, com uma mensagem como `"LogDestination: <bucketName> is undeliverable"` para o `ResourceId` fornecido. Isso ocorre porque as chaves AWS gerenciadas de uma conta não podem ser compartilhadas entre contas. A solução é usar a criptografia gerenciada do Amazon S3 (SSE-S3) ou uma chave gerenciada pelo AWS KMS cliente que você possa compartilhar com as contas dos membros.

## Arquitetura
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-architecture"></a>

**Arquitetura de destino**

No diagrama a seguir, dois logs de fluxo são implantados para cada VPC. Um envia registros para um grupo local CloudWatch de registros. O outro envia logs para um bucket do S3 em uma conta de registro centralizada. A política de bucket permite que o serviço de entrega de logs grave registros no bucket.

**nota**  
A partir de novembro de 2023, AWS agora oferece suporte à [chave de condição aws: SourceOrg ID](https://aws.amazon.com/about-aws/whats-new/2023/11/organization-wide-iam-condition-keys-restrict-aws-service-to-service-requests/). Essa condição permite que você negue a gravação no bucket centralizado para contas fora da sua AWS Organizations organização.

![De cada VPC, um registro de fluxo envia registros para CloudWatch e outro envia registros para o bucket do S3.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/718c29f4-a035-47ab-9c58-bd7d5c1ca77e/images/0b502d82-a6ce-4832-b854-99181d2ed834.png)


**Automação e escala**

Cada VPC é configurada para enviar logs para o bucket do S3 na conta de registro central. Use uma das seguintes soluções de automação para ajudar a garantir que os logs de fluxo sejam configurados adequadamente:
+ [CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)
+ [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html)
+ [Uma AWS Config regra com remediação](https://aws.amazon.com/blogs/mt/how-to-enable-vpc-flow-logs-automatically-using-aws-config-rules/)

## Ferramentas
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-tools"></a>

**Ferramentas**
+ O [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) ajuda você a centralizar os registros de todos os seus sistemas e aplicativos, Serviços da AWS para que você possa monitorá-los e arquivá-los com segurança.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS. Este padrão usa o atributo [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) para capturar informações sobre o tráfego de IP de e para as interfaces de rede do em sua VPC.

## Práticas recomendadas
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-best-practices"></a>

Usar a infraestrutura como código (IaC) pode simplificar muito o processo de implantação do VPC Flow Logs. Abstrair suas definições de implantação de VPC para incluir uma construção de recurso de log de fluxo implantará VPCs sua com registros de fluxo automaticamente. Isso é demonstrado na próxima seção.

**Logs de fluxo centralizados**

Exemplo de sintaxe para adicionar registros de fluxo centralizados a um módulo VPC no HashiCorp Terraform: esse código cria um registro de fluxo que envia registros de uma VPC para um bucket S3 centralizado. Observe que esse padrão não abrange a criação do bucket do S3. Para obter declarações de política de bucket recomendadas, consulte a seção [Informações adicionais](#configure-vpc-flow-logs-for-centralization-across-aws-accounts-additional).

```
variable "vpc_id" { type = string }
locals { custom_log_format_v5 = "$${version} $${account-id} $${interface-id} $${srcaddr} $${dstaddr} $${srcport} $${dstport} $${protocol} $${packets} $${bytes} $${start} $${end} $${action} $${log-status} $${vpc-id} $${subnet-id} $${instance-id} $${tcp-flags} $${type} $${pkt-srcaddr} $${pkt-dstaddr} $${region} $${az-id} $${sublocation-type} $${sublocation-id} $${pkt-src-aws-service} $${pkt-dst-aws-service} $${flow-direction} $${traffic-path}" }
resource "aws_flow_log" "centralized_flow_log" {
  log_destination      = "arn:aws:s3:::centralized-vpc-flow-logs-<log_archive_account_id>" # Optionally, a prefix can be added after the ARN.
  log_destination_type = "s3"
  traffic_type         = "ALL"
  vpc_id               = var.vpc_id
  log_format           = local.custom_log_format_v5 # If you want fields from VPC Flow Logs v3+, you will need to create a custom log format.
}
```

Para obter mais informações sobre o formato de log personalizado, consulte a [documentação da Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-log-records.html#flow-logs-custom).

**Registros de fluxo locais**

Exemplo de sintaxe para adicionar registros de fluxo locais a um módulo VPC no Terraform com as permissões necessárias: esse código cria um registro de fluxo que envia registros de uma VPC para um grupo local de registros. CloudWatch 

```
data "aws_region" "current" {}
variable "vpc_id" { type = string }
resource "aws_iam_role" "local_flow_log_role" {
  name = "flow-logs-policy-${var.vpc_id}"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
      "Effect": "Allow",
      "Principal": {"Service": "vpc-flow-logs.amazonaws.com"},
      "Action": "sts:AssumeRole"
  }]
}
EOF
}
resource "aws_iam_role_policy" "logs_permissions" {
  name = "flow-logs-policy-${var.vpc_id}"
  role = aws_iam_role.local_flow_log_role.id
  policy = <<EOF
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
      "Action": ["logs:CreateLog*", "logs:PutLogEvents", "logs:DescribeLog*", "logs:DeleteLogDelivery"],
      "Effect": "Allow",
      "Resource": "arn:aws:logs:${data.aws_region.current.name}:*:log-group:vpc-flow-logs*"
  }]
}
EOF
}
resource "aws_cloudwatch_log_group" "local_flow_logs" {
  name              = "vpc-flow-logs/${var.vpc_id}"
  retention_in_days = 30
}
resource "aws_flow_log" "local_flow_log" {
  iam_role_arn    = aws_iam_role.local_flow_log_role.arn
  log_destination = aws_cloudwatch_log_group.local_flow_logs.arn
  traffic_type    = "ALL"
  vpc_id          = var.vpc_id
}
```

## Épicos
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-epics"></a>

### Implemente a infraestrutura da VPC Flow Logs
<a name="deploy-vpc-flow-logs-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Determine a estratégia de criptografia e crie a política para o bucket central do S3. | O bucket central não suporta a AWS KMS `aws/s3` chave, então você deve usar o SSE-S3 ou uma chave gerenciada pelo AWS KMS cliente. Se você usar uma AWS KMS chave, a política de chaves deve permitir que as contas dos membros usem a chave. | Compliance | 
| Crie o bucket de log de fluxo central. | Crie o bucket central para o qual os logs de fluxo serão enviados e aplique a estratégia de criptografia escolhida na etapa anterior. Isso deve estar em um arquivo de log ou em uma conta com finalidade semelhante.<br />Obtenha a política de bucket na seção [Informações adicionais](#configure-vpc-flow-logs-for-centralization-across-aws-accounts-additional) e aplique-a ao bucket central após atualizar os espaços reservados com os valores específicos do seu ambiente. | AWS geral | 
| Configure os logs de fluxo da VPC para enviar logs para o bucket central de logs de fluxo. | Adicione logs de fluxo a cada VPC da qual você deseja coletar dados. A maneira mais escalável de fazer isso é usar ferramentas de IaC, como AFT ou. AWS Cloud Development Kit (AWS CDK) Por exemplo, você pode criar um módulo do Terraform que implanta uma VPC junto com um log de fluxo. Se necessário, você adiciona os logs de fluxo manualmente. | Administrador de rede | 
| Configure os registros de fluxo da VPC para serem enviados aos registros locais CloudWatch . | (Opcional) Se você quiser que os registros de fluxo fiquem visíveis nas contas em que os registros estão sendo gerados, crie outro registro de fluxo para enviar dados para o CloudWatch Logs na conta local. Como alternativa, você pode enviar os dados para um bucket S3 específico da conta na conta local. | AWS geral | 

## Recursos relacionados
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-resources"></a>
+ [Como facilitar a análise de dados e atender aos requisitos de segurança usando dados de registro de fluxo centralizados](https://aws.amazon.com/blogs/security/how-to-facilitate-data-analysis-and-fulfill-security-requirements-by-using-centralized-flow-log-data/) (postagem AWS no blog)
+ [Como habilitar os registros de fluxo da VPC automaticamente usando AWS Config regras](https://aws.amazon.com/blogs/mt/how-to-enable-vpc-flow-logs-automatically-using-aws-config-rules/) (AWS postagem do blog)

## Mais informações
<a name="configure-vpc-flow-logs-for-centralization-across-aws-accounts-additional"></a>

**Política de bucket**

Esse exemplo de política de bucket pode ser aplicado ao bucket central do S3 para logs de fluxo, depois de adicionar valores para nomes de espaço reservado.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceOrgID": "<ORG_ID>"
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>",
            "Condition": {
                "StringEquals": {
                    "aws:SourceOrgID": "<ORG_ID>"
                }
            }
        },
        {
            "Sid": "DenyUnencryptedTraffic",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<BUCKET_NAME>/*",
                "arn:aws:s3:::<BUCKET_NAME>"
            ],
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}
```