Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configure los registros de flujo de VPC para la centralización en Cuentas de AWS
Benjamin Morris y Aman Kaur Gandhi, Amazon Web Services
Resumen
En una nube privada AWS virtual (VPC), la función de registros de flujo de la VPC puede proporcionar datos útiles para la resolución de problemas operativos y de seguridad. Sin embargo, existen limitaciones en cuanto al uso de los registros de VPC Flow en entornos multicuenta. En concreto, no se admiten los registros de flujos entre cuentas de Amazon CloudWatch Logs. En su lugar, puede centralizar los registros configurando un bucket de Amazon Simple Storage Service (Amazon S3) con la política de bucket adecuada.
nota
Este patrón describe los requisitos para enviar los registros de flujo a una ubicación centralizada. Sin embargo, si también desea que los registros estén disponibles localmente en las cuentas de los miembros, puede crear varios registros de flujo para cada VPC. Los usuarios que no tienen acceso a la cuenta de Log Archive pueden ver los registros de tráfico para solucionar problemas. Como alternativa, puede configurar un registro de flujo único para cada VPC que envíe registros a CloudWatch Logs. A continuación, puede utilizar un filtro de suscripción a Amazon Data Firehose para reenviar los registros a un bucket de S3. Para obtener más información, consulte la sección Recursos relacionados.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Una AWS Organizations organización con una cuenta que se usa para centralizar los registros (por ejemplo, Log Archive)
Limitaciones
Si utilizas la clave administrada AWS Key Management Service (AWS KMS) aws/s3 para cifrar tu depósito central, no recibirá los registros de otra cuenta. En su lugar, verás un código de Unsuccessful error 400 con un mensaje como "LogDestination: <bucketName> is undeliverable" el que has indicado. ResourceId Esto se debe a que las claves AWS gestionadas de una cuenta no se pueden compartir entre cuentas. La solución consiste en utilizar el cifrado gestionado de Amazon S3 (SSE-S3) o una clave gestionada por el AWS KMS cliente que pueda compartir con las cuentas de los miembros.
Arquitectura
Arquitectura de destino
En el siguiente diagrama se implementan dos registros de flujo para cada VPC. Una de ellas envía los registros a un grupo de CloudWatch registros local. El otro envía los registros a un bucket de S3 en una cuenta de registro centralizada. La política de bucket permite al servicio de entrega de registros escribir registros en el bucket.
nota
A partir de noviembre de 2023, AWS ahora es compatible con la clave de condición aws: SourceOrg ID

Automatizar y escalar
Cada VPC está configurada para enviar registros al bucket de S3 en la cuenta de registro central. Use una de las siguientes soluciones de automatización para asegurarse de que los registros de flujo estén configurados correctamente:
Herramientas
Herramientas
Amazon CloudWatch Logs le ayuda a centralizar los registros de todos sus sistemas y aplicaciones Servicios de AWS para que pueda supervisarlos y archivarlos de forma segura.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
Amazon Virtual Private Cloud (Amazon VPC) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS. Este patrón utiliza la característica Registros de flujo de la VPC para capturar información acerca del tráfico IP entrante y saliente de las interfaces de red de en su VPC.
Prácticas recomendadas
El uso de la infraestructura como código (IaC) puede simplificar en gran medida el proceso de implementación de los registros de VPC Flow. Al resumir las definiciones de implementación de la VPC para incluir una construcción de recursos de registro de flujo, se implementará VPCs automáticamente con los registros de flujo. Esto se demuestra en la siguiente sección.
Registros de flujo centralizados
Ejemplo de sintaxis para agregar registros de flujo centralizados a un módulo de VPC en HashiCorp Terraform: este código crea un registro de flujo que envía registros desde una VPC a un bucket S3 centralizado. Tenga en cuenta que este patrón no cubre la creación del bucket de S3. Para ver las instrucciones de política de bucket recomendadas, consulte la sección de Información adicional.
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 obtener más información sobre el formato de registro personalizado, consulte la documentación de Amazon VPC.
Registros de flujo locales
Ejemplo de sintaxis para agregar registros de flujo locales a un módulo de VPC en Terraform con los permisos necesarios: este código crea un registro de flujo que envía registros desde una VPC a un grupo de registros local. 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 }
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Determine la estrategia de cifrado y cree la política para el bucket de S3 central. | El depósito central no admite la AWS KMS | Conformidad |
Cree el bucket de registro de flujo central. | Cree el depósito central al que se enviarán los registros de flujo y aplique la estrategia de cifrado que eligió en el paso anterior. Debe estar en un archivo de registro o en una cuenta con un propósito similar. Obtenga la política de bucket en la sección de información adicional y aplíquela a su bucket central después de actualizar los marcadores de posición con los valores específicos de su entorno. | AWS general |
Configure los registros de VPC Flow para enviar los registros al bucket de registros de flujo central. | Agregue registros de flujo a cada VPC de la que desee recopilar datos. La forma más escalable de hacerlo es utilizar herramientas de IaC como AFT o. AWS Cloud Development Kit (AWS CDK) Por ejemplo, puede crear un módulo Terraform que despliegue una VPC junto con un registro de flujo. Si es necesario, añada los registros de flujo manualmente. | Administrador de red |
Configure los registros de flujo de VPC para enviarlos a los registros locales CloudWatch . | (Opcional) Si quieres que los registros de flujo estén visibles en las cuentas en las que se generan los registros, crea otro registro de flujo para enviar datos a los CloudWatch registros de la cuenta local. Como alternativa, puede enviar los datos a un bucket de S3 específico de la cuenta en la cuenta local. | AWS general |
Recursos relacionados
Información adicional
Política de bucket
Este ejemplo de política de bucket se puede aplicar a su bucket central de S3 para los registros de flujo después de añadir valores en los nombres de los marcadores de posición.
{ "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" } } } ] }