Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura i log di flusso VPC per la centralizzazione su Account AWS
Benjamin Morris e Aman Kaur Gandhi, Amazon Web Services
Riepilogo
In un cloud privato AWS virtuale (VPC), la funzionalità VPC Flow Logs può fornire dati utili per la risoluzione dei problemi operativi e di sicurezza. Tuttavia, esistono limitazioni all'utilizzo dei log di flusso VPC in un ambiente con più account. In particolare, i log di flusso tra account di Amazon CloudWatch Logs non sono supportati. Puoi invece centralizzare i log configurando un bucket Amazon Simple Storage Service (Amazon S3) con la policy dei bucket appropriata.
Nota
Questo modello illustra i requisiti per l'invio dei log di flusso a una posizione centralizzata. Tuttavia, se desideri che i log siano disponibili anche localmente negli account dei membri, puoi creare più log di flusso per ogni VPC. Gli utenti che non hanno accesso all'account Log Archive possono visualizzare i registri del traffico per la risoluzione dei problemi. In alternativa, puoi configurare un singolo log di flusso per ogni VPC che invia i log a Logs. CloudWatch Puoi quindi utilizzare un filtro di abbonamento Amazon Data Firehose per inoltrare i log a un bucket S3. Per ulteriori informazioni, consulta la sezione Risorse correlate.
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
Un' AWS Organizations organizzazione con un account utilizzato per centralizzare i registri (ad esempio, Log Archive)
Limitazioni
Se utilizzi la chiave gestita AWS Key Management Service (AWS KMS) aws/s3 per crittografare il tuo bucket centrale, questo non riceverà i log da un altro account. Vedrai invece un codice di Unsuccessful errore 400 con un messaggio come quello "LogDestination: <bucketName> is undeliverable" che hai dato. ResourceId Questo perché le chiavi AWS gestite di un account non possono essere condivise tra account. La soluzione consiste nell'utilizzare la crittografia gestita di Amazon S3 (SSE-S3) o una chiave gestita AWS KMS dal cliente che puoi condividere con gli account dei membri.
Architettura
Architettura Target
Nel diagramma seguente, vengono distribuiti due log di flusso per ogni VPC. Uno invia i log a un gruppo di Logs locale. CloudWatch L'altro invia i log a un bucket S3 in un account di registrazione centralizzato. La policy del bucket consente al servizio di consegna dei log di scrivere i log nel bucket.
Nota
A partire da novembre 2023, AWS ora supporta la chiave di condizione aws: SourceOrg ID

Automazione e scalabilità
Ogni VPC è configurato per inviare i log al bucket S3 nell'account di registrazione centrale. Utilizza una delle seguenti soluzioni di automazione per garantire che i log di flusso siano configurati in modo appropriato:
Strumenti
Strumenti
Amazon CloudWatch Logs ti aiuta a centralizzare i log di tutti i tuoi sistemi e applicazioni, Servizi AWS così puoi monitorarli e archiviarli in modo sicuro.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
Amazon Virtual Private Cloud (Amazon VPC) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS. Questo modello utilizza la funzionalità VPC Flow Logs per acquisire informazioni sul traffico IP in entrata e in uscita dalle interfacce di rete del tuo VPC.
Best practice
L'utilizzo dell'infrastruttura come codice (IaC) può semplificare notevolmente il processo di implementazione dei VPC Flow Logs. L'astrazione delle definizioni di distribuzione VPC per includere un costrutto di risorse per i log di flusso consentirà di implementare automaticamente VPCs i log di flusso. Questo è dimostrato nella prossima sezione.
Registri di flusso centralizzati
Sintassi di esempio per aggiungere log di flusso centralizzati a un modulo VPC in HashiCorp Terraform: questo codice crea un log di flusso che invia i log da un VPC a un bucket S3 centralizzato. Nota che questo modello non copre la creazione del bucket S3. Per le istruzioni sulle politiche relative ai bucket consigliate, consulta la sezione Informazioni aggiuntive.
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. }
Per ulteriori informazioni sul formato di log personalizzato, consulta la documentazione di Amazon VPC.
Registri di flusso locali
Sintassi di esempio per aggiungere registri di flusso locali a un modulo VPC in Terraform con le autorizzazioni richieste: questo codice crea un log di flusso che invia i log da un VPC a un gruppo di log locale. 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 }
Epiche
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Determina la strategia di crittografia e crea la policy per il bucket S3 centrale. | Il bucket centrale non supporta la AWS KMS | Conformità |
Crea il bucket centrale per i log di flusso. | Crea il bucket centrale a cui verranno inviati i log di flusso e applica la strategia di crittografia scelta nel passaggio precedente. Dovrebbe trovarsi in un Log Archive o in un account con scopi simili. Ottieni la policy sui bucket dalla sezione Informazioni aggiuntive e applicala al tuo bucket centrale dopo aver aggiornato i segnaposto con i valori specifici dell'ambiente. | Informazioni generali su AWS |
Configura VPC Flow Logs per inviare i log al bucket di log di flusso centrale. | Aggiungi i log di flusso a ogni VPC da cui desideri raccogliere dati. Il modo più scalabile per farlo è utilizzare strumenti IAc come AFT o. AWS Cloud Development Kit (AWS CDK) Ad esempio, puoi creare un modulo Terraform che distribuisce un VPC insieme a un log di flusso. Se necessario, aggiungi i log di flusso manualmente. | Amministratore di rete |
Configura i log di flusso VPC per l'invio ai log locali. CloudWatch | (Facoltativo) Se desideri che i log di flusso siano visibili negli account in cui vengono generati, crea un altro log di flusso per inviare i dati ai CloudWatch log nell'account locale. In alternativa, puoi inviare i dati a un bucket S3 specifico dell'account nell'account locale. | Informazioni generali su AWS |
Risorse correlate
Informazioni aggiuntive
Politica Bucket
Questo esempio di policy sui bucket può essere applicato al bucket S3 centrale per i log di flusso, dopo aver aggiunto i valori per i nomi dei segnaposto.
{ "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" } } } ] }