Konfigurasikan Log Aliran VPC untuk sentralisasi di seluruh Akun AWS - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan Log Aliran VPC untuk sentralisasi di seluruh Akun AWS

Benjamin Morris dan Aman Kaur Gandhi, Amazon Web Services

Ringkasan

Dalam AWS virtual private cloud (VPC), fitur VPC Flow Logs dapat menyediakan data yang berguna untuk pemecahan masalah operasional dan keamanan. Namun, ada batasan dalam menggunakan VPC Flow Logs di lingkungan multi-akun. Secara khusus, log aliran lintas akun dari Amazon CloudWatch Logs tidak didukung. Sebagai gantinya, Anda dapat memusatkan log dengan mengonfigurasi bucket Amazon Simple Storage Service (Amazon S3) dengan kebijakan bucket yang sesuai.

catatan

Pola ini membahas persyaratan untuk mengirim log aliran ke lokasi terpusat. Namun, jika Anda juga ingin log tersedia secara lokal di akun anggota, Anda dapat membuat beberapa log aliran untuk setiap VPC. Pengguna yang tidak memiliki akses ke akun Arsip Log dapat melihat log lalu lintas untuk pemecahan masalah. Atau, Anda dapat mengonfigurasi log aliran tunggal untuk setiap VPC yang mengirimkan log ke CloudWatch Log. Anda kemudian dapat menggunakan filter langganan Amazon Data Firehose untuk meneruskan log ke bucket S3. Untuk informasi selengkapnya, lihat bagian Sumber daya terkait.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS

  • AWS Organizations Organisasi dengan akun yang digunakan untuk memusatkan log (misalnya, Arsip Log)

Keterbatasan

Jika Anda menggunakan kunci terkelola AWS Key Management Service (AWS KMS) aws/s3 untuk mengenkripsi bucket pusat, bucket pusat tidak akan menerima log dari akun lain. Sebagai gantinya, Anda akan melihat kode Unsuccessful kesalahan 400 dengan pesan seperti "LogDestination: <bucketName> is undeliverable" untuk yang Anda berikanResourceId. Ini karena kunci AWS terkelola akun tidak dapat dibagikan di seluruh akun. Solusinya adalah dengan menggunakan enkripsi terkelola Amazon S3 (SSE-S3) atau kunci yang dikelola AWS KMS pelanggan yang dapat Anda bagikan dengan akun anggota.

Arsitektur

Arsitektur target

Dalam diagram berikut, dua log aliran digunakan untuk setiap VPC. Satu mengirim log ke grup CloudWatch Log lokal. Yang lain mengirim log ke bucket S3 di akun logging terpusat. Kebijakan bucket mengizinkan layanan pengiriman log untuk menulis log ke bucket.

catatan

Mulai November 2023, AWS sekarang mendukung aws: SourceOrg ID condition key. Kondisi ini memungkinkan Anda untuk menolak menulis ke bucket terpusat untuk akun di luar AWS Organizations organisasi Anda.

Dari setiap VPC, satu log aliran mengirim log ke CloudWatch dan yang lain mengirim log ke bucket S3.

Otomatisasi dan skala

Setiap VPC dikonfigurasi untuk mengirim log ke bucket S3 di akun logging pusat. Gunakan salah satu solusi otomatisasi berikut untuk membantu memastikan bahwa log aliran dikonfigurasi dengan tepat:

Alat

Alat

  • Amazon CloudWatch Logs membantu Anda memusatkan log dari semua sistem, aplikasi, Layanan AWS sehingga Anda dapat memantau dan mengarsipkannya dengan aman.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

  • Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS Pola ini menggunakan fitur VPC Flow Logs untuk menangkap informasi tentang lalu lintas IP yang menuju dan dari antarmuka jaringan di VPC Anda.

Praktik terbaik

Menggunakan infrastruktur sebagai kode (IAc) dapat sangat menyederhanakan proses penyebaran VPC Flow Logs. Mengabstraksi definisi penerapan VPC Anda untuk menyertakan konstruksi sumber daya log aliran akan menerapkan VPCs log aliran Anda secara otomatis. Ini ditunjukkan di bagian selanjutnya.

Log aliran terpusat

Contoh sintaks untuk menambahkan log aliran terpusat ke modul VPC di HashiCorp Terraform: Kode ini membuat log aliran yang mengirim log dari VPC ke bucket S3 terpusat. Perhatikan bahwa pola ini tidak mencakup pembuatan bucket S3. Untuk pernyataan kebijakan bucket yang direkomendasikan, lihat bagian Informasi tambahan.

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

Untuk informasi selengkapnya tentang format log kustom, lihat dokumentasi Amazon VPC.

Log aliran lokal

Contoh sintaks untuk menambahkan log aliran lokal ke modul VPC di Terraform dengan izin yang diperlukan: Kode ini membuat log aliran yang mengirimkan log dari VPC ke grup Log lokal. 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 }

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Tentukan strategi enkripsi dan buat kebijakan untuk bucket S3 pusat.

Bucket pusat tidak mendukung AWS KMS aws/s3 kunci, jadi Anda harus menggunakan SSE-S3 atau kunci yang dikelola AWS KMS pelanggan. Jika Anda menggunakan AWS KMS kunci, kebijakan kunci harus mengizinkan akun anggota untuk menggunakan kunci tersebut.

Kepatuhan

Buat bucket log aliran pusat.

Buat bucket pusat tempat flow log akan dikirim, dan terapkan strategi enkripsi yang Anda pilih pada langkah sebelumnya. Ini harus dalam Arsip Log atau akun yang bertujuan serupa.

Dapatkan kebijakan bucket dari bagian Informasi tambahan, dan terapkan ke bucket pusat setelah memperbarui placeholder dengan nilai spesifik lingkungan Anda.

AWS Umum

Konfigurasikan Log Aliran VPC untuk mengirim log ke bucket log aliran pusat.

Tambahkan log aliran ke setiap VPC yang ingin Anda kumpulkan datanya. Cara yang paling skalabel untuk melakukan ini adalah dengan menggunakan alat IAc seperti AFT atau. AWS Cloud Development Kit (AWS CDK) Misalnya, Anda dapat membuat modul Terraform yang menerapkan VPC di samping log aliran. Jika perlu, Anda menambahkan log aliran secara manual.

Administrator jaringan

Konfigurasikan Log Aliran VPC untuk dikirim ke Log lokal CloudWatch .

(Opsional) Jika Anda ingin log aliran terlihat di akun tempat log dibuat, buat log aliran lain untuk mengirim data ke CloudWatch Log di akun lokal. Atau, Anda dapat mengirim data ke bucket S3 khusus akun di akun lokal.

AWS Umum

Sumber daya terkait

Informasi tambahan

Kebijakan bucket

Contoh kebijakan bucket ini dapat diterapkan ke bucket S3 pusat untuk log aliran, setelah Anda menambahkan nilai untuk nama placeholder.

{ "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" } } } ] }