AWS Global Accelerator에서 흐름 로그 구성 및 사용 - AWS Global Accelerator

AWS Global Accelerator에서 흐름 로그 구성 및 사용

흐름 로그를 사용하면 AWS Global Accelerator에서 액셀러레이터의 네트워크 인터페이스에서 송수신되는 IP 주소 트래픽에 대한 정보를 캡처할 수 있습니다. 흐름 로그 데이터는 Amazon S3에 게시되며, 흐름 로그를 생성한 후 데이터를 검색하여 볼 수 있습니다.

참고

콘솔에서 또는 AWS CLI을(를) 사용할 때 모두, 미국 서부(오리건) 리전의 Global Accelerator에 대한 CloudWatch 지표 및 로그를 확인해야 합니다. AWS CLI을(를) 사용할 경우, --region us-west-2 파라미터를 포함하여 명령에 사용할 미국 서부(오리건) 리전을 지정하세요.

흐름 로그는 여러 가지 업무에 도움이 될 수 있습니다. 예를 들어, 특정 트래픽이 엔드포인트에 도달하지 못하는 이유를 해결하면 지나치게 제한적인 보안 그룹 규칙을 진단하는 데 도움이 됩니다. 또한 흐름 로그를 보안 도구로서 사용하여 엔드포인트에 도달하는 트래픽을 모니터링할 수도 있습니다.

흐름 로그 레코드는 흐름 로그에 네트워크 흐름을 나타냅니다. 각 레코드는 특정 캡처 기간 중 특정 5-튜플의 네트워크 흐름을 캡처합니다. 5-튜플은 IP 흐름의 소스, 대상 및 프로토콜을 지정하는 5가지 값으로 구성된 집합입니다. 캡처 기간은 흐름 로그 서비스가 흐름 로그 레코드를 게시하기 전에 데이터를 집계하는 시간의 기간입니다. 캡처 기간은 최대 1분입니다. 즉, 로그는 1분보다 더 자주 게시될 수 있지만 최소 1분마다 게시됩니다.

CloudWatch 로그 요금은 흐름 로그를 사용할 때 적용되며, 로그가 Amazon S3에 직접 게시될 때에도 적용됩니다. 자세한 내용은 Amazon CloudWatch 요금로그 탭에서 판매된 로그를 참조하세요.

작은 정보

Amazon Athena 및 Amazon QuickSight를 Global Accelerator 흐름 로그 데이터와 함께 사용하면 애플리케이션의 접근성 문제를 해결하고, 보안 취약성을 식별하고, 사용자가 애플리케이션에 액세스하는 방법에 대한 개요를 얻을 수 있습니다. 자세한 내용은 다음 Amazon Athena 및 Amazon QuickSight를 사용하여 AWS Global Accelerator 흐름 로그 분석 및 시각화라는 AWS 블로그 게시물을 참조하세요.

Amazon S3에 흐름 로그 게시 활성화

AWS Global Accelerator에서 흐름 로그를 활성화하려면 이 절차의 단계를 따릅니다. 이 장의 추가 섹션에서는 흐름 로그를 게시하고 액세스할 수 있도록 Amazon S3 버킷을 구성하고 권한을 설정하는 단계를 다룹니다.

AWS Global Accelerator에서 흐름 로그를 활성화하려면

  1. AWS 계정에서 흐름 로그에 대한 Amazon S3 버킷을 생성합니다.

  2. 흐름 로그를 활성화하는 AWS 사용자에게 필요한 IAM 정책을 추가합니다. 자세한 내용은 Amazon S3에 흐름 로그를 게시하는 IAM 역할 섹션을 참조하세요.

  3. 로그 파일에 사용할 Amazon S3 버킷 이름과 접두사로 다음의 AWS CLI 명령을 실행합니다.

    aws globalaccelerator update-accelerator-attributes --accelerator-arn arn:aws:globalaccelerator::012345678901:accelerator/1234abcd-abcd-1234-abcd-1234abcdefgh --region us-west-2 --flow-logs-enabled --flow-logs-s3-bucket s3-bucket-name --flow-logs-s3-prefix s3-bucket-prefix

Amazon S3에서 플로우 로그 레코드 처리

로그 파일은 압축된 상태입니다. Amazon S3 콘솔을 사용해 로그 파일을 열면 압축이 해제되고 흐름 로그 레코드가 표시됩니다. 파일을 다운로드하는 경우, 압축을 해제해야 흐름 로그 레코드를 볼 수 있습니다.

Amazon S3에 흐름 로그 게시

AWS Global Accelerator의 흐름 로그는 지정되는 기존 S3 버킷에 Amazon S3에 게시됩니다. 흐름 로그 레코드는 버킷에 저장되는 일련의 로그 파일 객체에 게시됩니다.

흐름 로그와 함께 사용할 Amazon S3 버킷을 생성하려면 Amazon Simple Storage Service 사용자 가이드첫 번째 S3 버킷 생성하기를 참조하세요.

흐름 로그 파일

흐름 로그는 흐름 로그 레코드를 수집하여 로그 파일로 통합한 다음 로그 파일을 5분 간격으로 Amazon S3 버킷에 게시합니다. 즉, 로그 파일은 5분마다 작성되며 각 로그 파일에는 이전 5분 동안 기록된 IP 주소 트래픽에 대한 흐름 로그 레코드가 포함됩니다.

로그 파일의 최대 크기는 75MB입니다. 로그 파일이 5분 이내에 파일 크기 한도에 도달하는 경우, 흐름 로그에 흐름 로그 레코드 추가를 중단하고 Amazon S3 버킷에 게시한 다음 새 로그 파일을 생성합니다.

로그 파일은 흐름 로그의 ID, 리전 및 생성된 날짜에 따라 결정된 폴더 구조를 사용하여 지정된 Amazon S3 버킷에 저장됩니다. 버킷 폴더 구조는 다음의 형식을 사용합니다.

s3-bucket_name/s3-bucket-prefix/AWSLogs/aws_account_id/globalaccelerator/region/yyyy/mm/dd/

마찬가지로 로그 파일 이름은 흐름 로그의 ID, 리전 및 생성되었던 날짜와 시간에 따라 결정됩니다. 파일 이름은 다음의 형식을 사용합니다.

aws_account_id_globalaccelerator_accelerator_id_flow_log_id_timestamp_hash.log.gz

로그 파일의 폴더 및 파일 이름 구조에 대한 다음 사항에 유의하세요.

  • 타임스탬프는 YYYYMMDDTHHmmZ 형식을 사용합니다.

  • S3 버킷 접두사에 슬래시(/)를 지정하면 로그 파일 버킷 폴더 구조에 다음과 같은 이중 슬래시(//)가 포함됩니다.

    s3-bucket_name//AWSLogs/aws_account_id

다음의 예제는 2018년 11월 23일 00:05 UTC, 1234abcd-abcd-1234-abcd-1234abcdefgh의 ID가 있는 액셀러레이터의 AWS 계정 123456789012에서 생성된 흐름 로그에 대한 로그 파일의 폴더 구조와 파일 이름을 보여줍니다.

amzn-s3-demo-bucket/prefix1/AWSLogs/123456789012/globalaccelerator/us-west-2/2018/11/23/123456789012_globalaccelerator_1234abcd-abcd-1234-abcd-1234abcdefgh_20181123T0005Z_1fb1234.log.gz

단일 흐름 로그 파일에는 client_ip, client_port, accelerator_ip, accelerator_port, protocol인 여러 개의 5-튜플 레코드가 있는 인터리브 항목이 포함됩니다. 액셀러레이터의 모든 흐름 로그 파일을 보려면 accelerator_idaccount_id에서 집계된 항목을 찾습니다.

Amazon S3에 흐름 로그를 게시하는 IAM 역할

IAM 역할이나 사용자와 같은 IAM 보안 주체는 Amazon S3 버킷에 흐름 로그를 게시할 수 있는 충분한 권한이 있어야 합니다. IAM 정책에는 다음의 권한이 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeliverLogs", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*" }, { "Sid": "AllowGlobalAcceleratorService", "Effect": "Allow", "Action": [ "globalaccelerator:*" ], "Resource": "*" }, { "Sid": "s3Perms", "Effect": "Allow", "Action": [ "s3:GetBucketPolicy", "s3:PutBucketPolicy" ], "Resource": "*" } ] }

흐름 로그에 대한 Amazon S3 버킷 권한

기본적으로 Amazon S3 버킷과 버킷에 포함된 객체는 비공개입니다. 버킷 소유자만이 버킷과 그 안에 저장된 객체에 액세스할 수 있습니다. 하지만 버킷 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스를 허용할 수 있습니다.

흐름 로그를 생성하는 사용자가 버킷을 소유한 경우, 서비스는 다음의 정책을 버킷에 자동으로 연결하여 버킷에 로그를 게시할 수 있는 권한을 흐름 로그에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*", "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket_name" } ] }

흐름 로그를 생성하는 사용자가 버킷을 소유하지 않거나 버킷에 대한 GetBucketPolicyPutBucketPolicy 권한이 없는 경우, 흐름 로그 생성은 실패합니다. 이 경우, 버킷 소유자는 버킷에 이전 정책을 수동으로 추가하고 흐름 로그 생성자의 AWS 계정 ID를 지정해야 합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서Amazon S3 콘솔을 사용하여 버킷 정책 추가를 참조하세요. 버킷이 여러 계정으로부터 흐름 로그를 수신하는 경우, Resource 요소 입력 내용을 각 계정의 AWSLogDeliveryWrite 정책 설명에 추가합니다.

예를 들어, 다음의 버킷 정책을 사용하면 AWS 계정 123123123123 및 456456456456은 log-bucket(으)로 명명된 버킷의 flow-logs(으)로 명명된 폴더에 흐름 로그를 게시할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/123123123123/*", "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/456456456456/*" ], "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::log-bucket" } ] }
참고

개별 AWS 계정 ARN 대신 로그 전송 서비스 보안 주체에 AWSLogDeliveryAclCheckAWSLogDeliveryWrite 권한을 부여하는 것이 좋습니다.

SSE-KMS 버킷과 함께 사용하려면 필요한 CMK 키 정책

고객 관리 CMK와 함께 AWS KMS 관리 키(SSE-KMS)를 사용하여 Amazon S3 버킷에 대한 서버 측 암호화를 활성화한 경우, 흐름 로그가 버킷에 로그 파일을 쓸 수 있도록 CMK의 키 정책에 다음을 추가해야 합니다:

{ "Sid": "Allow AWS Global Accelerator Flow Logs to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": "kms:GenerateDataKey*", "Resource": "*" }

Amazon S3 로그 파일 권한

필요한 버킷 정책 외에도, Amazon S3는 ACL(액세스 제어 목록)을 사용하여 흐름 로그에서 생성한 로그 파일에 대한 액세스를 관리합니다. 기본적으로 버킷 소유자는 각 로그 파일에 대한 FULL_CONTROL 권한을 보유합니다. 로그 전송 소유자가 버킷 소유자와 다른 경우에는 권한이 없습니다. 로그 전송 계정에는 READWRITE 권한이 부여됩니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서액세스 제어 목록(ACL) 개요를 참조하세요.

로그 파일 전송 타이밍

AWS Global Accelerator은(는) 구성된 액셀러레이터에 대한 로그 파일을 시간당 최대 여러 번 전달합니다. 일반적으로 로그 파일에는 지정된 기간 동안 액셀러레이터가 받았던 요청에 대한 정보가 포함되어 있습니다. Global Accelerator는 일반적으로 로그에 표시되는 이벤트로부터 1시간 이내에 해당 기간의 로그 파일을 Amazon S3 버킷으로 전달합니다. 일정 기간 동안 일부 또는 모든 로그 파일 항목은 때때로 최대 24시간까지 지연될 수도 있습니다. 로그 항목이 지연되면 Global Accelerator는 파일 이름에 파일이 전달된 날짜와 시간이 아닌 요청이 발생했던 기간의 날짜와 시간이 포함되는 로그 파일에 로그 항목을 저장합니다.

로그 파일을 생성할 때 Global Accelerator는 로그 파일에 포함되는 기간 동안 요청을 받았던 모든 엣지 로케이션에서 액셀러레이터에 대한 정보를 통합합니다.

Global Accelerator는 로깅을 활성화한 지 약 4시간 후에 로그 파일을 안정적으로 전송하기 시작합니다. 그 전에 일부 로그 파일을 가져올 수 있습니다.

참고

해당 기간 동안 액셀러레이터에 연결된 사용자가 없는 경우, 해당 기간 동안 로그 파일을 전혀 받지 못합니다.

흐름 로그 레코드 구문

흐름 로그 레코드는 공백으로 구분된 문자열로, 다음과 같은 형식입니다.

<version> <aws_account_id> <accelerator_id> <client_ip> <client_port> <accelerator_ip> <accelerator_port> <endpoint_ip> <endpoint_port> <protocol> <ip_address_type> <packets> <bytes> <start_time> <end_time> <action> <log-status> <globalaccelerator_source_ip> <globalaccelerator_source_port> <endpoint_region> <globalaccelerator_region> <direction> <vpc_id>

버전 1.0 형식에는 VPC 식별자인 vpc_id이(가) 포함되지 않습니다. vpc_id을(를) 포함하는 버전 2.0 형식은 Global Accelerator가 클라이언트 IP 주소 보존으로 엔드포인트로 트래픽을 전송할 때 생성됩니다.

다음의 표에서는 흐름 로그 레코드의 필드를 설명합니다.

필드 설명

version

흐름 로그 버전.

aws_account_id

흐름 로그의 AWS 계정 ID.

accelerator_id

트래픽이 기록되는 액셀러레이터의 ID.

client_ip

소스 IPv4 또는 IPv6 주소.

client_port

소스 포트.

accelerator_ip

액셀러레이터의 IP 주소.

accelerator_port

액셀러레이터의 포트.

endpoint_ip

트래픽의 대상 IP 주소.

endpoint_port

트래픽의 대상 포트.

protocol

트래픽의 IANA 프로토콜 번호. 자세한 정보는 할당된 인터넷 프로토콜 번호를 참조하세요.

ip_address_type

IPv4 또는 IPv6.

packets

캡처 기간 중 전송된 패킷 수. 패킷 수가 0(제로)인 경우, 흐름은 유지되지만 캡처 기간 동안 해당 방향으로 패킷이 표시되지 않았습니다.

bytes

캡처 기간 중 전송된 바이트 수.

start_time

캡처 기간의 시작 시간(단위: Unix 초)

end_time

캡처 기간의 종료 시간(단위: Unix 초)

action

트래픽과 연결된 작업:

  • ACCEPT: 기록된 트래픽은 보안 그룹 또는 네트워크 ACL에서 허용했습니다. 값은 현재 항상 ACCEPT입니다.

log-status

흐름 로그의 로깅 상태:

  • OK: 데이터는 선택된 대상에 정상적으로 로깅합니다.

  • SKIPDATA: 캡처 기간 중 일부 흐름 로그 레코드를 건너뛰었습니다. 이는 내부 용량 제한 또는 내부 오류가 원인일 수 있습니다.

globalaccelerator_source_ip

Global Accelerator 네트워크 인터페이스에서 사용하는 IP 주소. 클라이언트 IP 주소 보존이 활성화된 경우, 이 값은 -(하이픈)으로 설정됩니다.

자세한 내용은 AWS Global Accelerator에서 클라이언트 IP 주소 보존 섹션을 참조하세요.

globalaccelerator_source_port

Global Accelerator 네트워크 인터페이스가 사용하는 포트. 클라이언트 IP 주소 보존이 활성화된 경우, 이 값은 0(제로)으로 설정됩니다.

자세한 내용은 AWS Global Accelerator에서 클라이언트 IP 주소 보존 섹션을 참조하세요.

endpoint_region

엔드포인트가 위치한 AWS 리전.

globalaccelerator_region

요청을 처리했던 엣지 로케이션(존재 지점). 각 엣지 로케이션에는 3자 코드와 임의로 할당된 번호(예: DFW3)가 있습니다. 3자 코드는 일반적으로 엣지 로케이션 부근의 공항을 나타내는 국제 항공 운송 협회 공항 코드에 상응합니다. (이러한 약어는 향후에 변경될 수 있습니다.)

direction

트래픽 방향. Global Accelerator 네트워크(INGRESS)로 들어오거나 클라이언트(EGRESS)로 반환되는 트래픽을 나타냅니다.

vpc_id

DB 식별자. Global Accelerator가 클라이언트 IP 주소 보존으로 엔드포인트에 트래픽을 전송할 때 버전 2.0 흐름 로그에 포함됩니다.

필드가 특정 레코드에 적용되지 않는 경우, 레코드에는 해당 항목에 대한 '-' 기호가 표시됩니다.