일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- On-Premise
- Service
- Proxy Resource
- 구조분해 할당
- DynamoDB
- Endpoints
- null 병합 연산자
- Custom Resource
- elasticsearch
- 비구조화 할당
- Await
- 자바스크립트
- cognito
- docker
- JavaScript
- docker swarm
- transit gateway
- VPC
- optional chaining
- prometheus
- AWS
- Site-to-Site VPN
- vgw
- api gateway
- grafana
- Kubernetes
- 온프레미스
- 단축 평가
- 옵셔널 체이닝
- CloudFormation
- Today
- Total
만자의 개발일지
[AWS] VPC Flow Log로 IP 트래픽 로그 남기기 본문
VPC Flow Log
VPC Flow log는 VPC위에 생성된 ENI(Elastic Network Interface)에서 발생하는 IP 트래픽 로그를 수집해주는 기능입니다.
ENI가 할당되는 대표적인 AWS 리소스는 다음과 같습니다.
- ELB(Elastic Load Balancer)
- EC2
- RDS
- ElasticCache
- Redshift
이 외에도 다양한 서비스들이 ENI를 할당할 수 있습니다.
VPC Flow Log를 통해 확인할 수 있는 정보
VPC Flog Log에서 확인할 수 있는 정보는 다음과 같습니다.
- 보안 그룹이나 NACL에 의해 허용(Accept)또는 차단(Reject)된 정보
- Source IP, Destination IP, 포트, 프로토콜, 패킷 등등
아래는 VPC Flow Log에서 지정할 수 있는 파라미터입니다.
- account-id
- action
- az-id
- bytes
- dstaddr
- dstport
- end
- flow-direction
- instance-id
- interface-id
- log-status
- packets
- pkt-dst-aws-service
- pkt-dstaddr
- pkt-src-aws-service
- pkt-scraddr
- protocol
- region
- scraddr
- scrport
- start
- sublocation-id
- sublocation-type
- subnet-id
- tcp-flags
- traffic-path
- type
- version
- vpc-id
각 파라미터에 대한 정보는 아래 공식문서에 자세히 나와있으니 참고 바랍니다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/flow-logs.html
VPC Flow Log 실습
VPC Flow Log를 생성하는 방법은 두가지가 있습니다.
- CloudWatch Logs
- S3
CloudWatch Logs는 VPC Flow Log를 즉각적으로 확인할 수 있다는 장점이 있고 S3는 VPC Flow Log를 gz형식으로 저장하기 때문에 Athena나 Glue를 통해 해당 로그 데이터에 접근하여 분석할 수 있습니다.
CloudWatch Logs
VPC Flow Log를 CloudWatch Logs로 전송하기 위해서는 CloudWatch Logs에 Log Event를 생성할 수 있는 IAM Role이 필요합니다.
먼저 다음과 같이 IAM Policy를 생성해 줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccessCloudWatchLogGroup",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}
위에서 생성한 Policy를 갖는 IAM Role을 생성합니다.
위에서 생성한 IAM Role을 선택한 후 Trust relationships 메뉴를 클릭합니다.
그다음 trust policy를 다음과 같이 수정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "vpc-flow-logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
VPC Flow Log를 생성할 VPC를 선택한 후 Flow logs 메뉴를 클릭하고 Create flow log 버튼을 클릭합니다.
Destination을 CloudWatch Logs로 설정한 후 Log Group을 선택해 줍니다. Log Group은 미리 생성된 Log Group을 지정할 수도 있고, 직접 타이핑하면 해당 이름을 가진 Log Group이 자동으로 생성됩니다.
마지막으로 위에서 생성한 IAM Role을 지정해줍니다.
위에서 Aggregation interval을 1분으로 주었기 때문에 1분 주기로 로그를 수집하게 됩니다. 1분뒤 CloudWatch Logs를 확인해보면 다음과 같이 Log Group이 생성된것을 보실 수 있습니다.
S3
S3는 CloudWatch Logs와는 달리 별도의 IAM Role을 필요로 하지 않습니다. 단순히 S3버킷을 생성한 후 경로만 지정해주면 됩니다.
로그 파일 형식과 로그 분리 주기도 지정해줄 수 있습니다.
1분후 버킷을 확인해보면 다음과 같이 로그파일이 gz형식으로 업로드된것을 확인하실 수 있습니다.
참고
'AWS' 카테고리의 다른 글
[AWS] API Gateway Stage Variables + Lambda Alias로 서버리스 개발 환경 관리하기 (2) | 2022.08.11 |
---|---|
[AWS] Client VPN Endpoints로 Private하게 접근하기 (0) | 2022.08.04 |
[AWS] CloudFormation이란 (2) | 2022.07.11 |
[AWS] Cognito 회원 가입 및 로그인 기능 구현하기(feat. amazon-cognito-identity-js, TypeScript) (0) | 2022.06.11 |
[AWS] Cognito User Pool 생성하기 (0) | 2022.06.10 |