* 참조 사항
- 해당 게시물은 AWS 환경에서 대표적으로 사용되는 로그 유형인 VPC Flowlog와 Cloudtrail을 각각 CloudWatch와 연동, S3로의 저장을 위한 방법과 필요 개념들을 설명한 글
* 개념 정리
용어 | 개념 |
VPC Flowlog | * VPC에 생성된 네트워크 인터페이스(ENI - Elastic Network Interface)를 기준으로 송/수신되는 Traffic 로그를 수집하는 기능 |
Cloudtrail | * AWS Account 자체의 운영, 위험 감사, 거버넌스 및 규정 준수 관련 로그를 저장 - 순수하게 계정 자체의 활동에 대한 로그만을 기록 ex) EC2 내에서 ping 발생 = Cloudtrail 로그 x ex) Account가 S3 Bucket을 생성 = Cloudtrail 로그 o |
CloudWatch | * AWS 리소스 및 AWS에서 실행되는 애플리케이션을 모니터링하기 위해 지표를 수집, 추적 하는 서비스 - 쉽게 말해 VPC Flowlog, Cloudtrail 등의 로그를 대시보드에서 가시성 좋게 출력해주는 서비스 |
S3 | * 클라우드 객체 스토리지 - Bucket을 통해 무한한 데이터 저장을 지원 |
* 로그 저장 위치
위치 | 내용 |
CloudWatch | * 사용자 가시성 확보에 중점적 * 로그 저장 기한은 사용자 지정 기한으로 다양하게 설정 가능하며, 영구적 저장도 존재 * S3 대비 요금이 조금더 비싼편 |
S3 Bucket | * 가시성 보다는 저렴한 저장 비용에 중점 * 로그들이 각각 압축된 형태로 기간별로 분기하여 저장되어 별도로 읽으려면 공수가 많이듬 * 이를 지원하는 Athena라는 S3 저장 로그를 Query를 통해 조회, 가시성을 확보해 주는 AWS 서비스가 별도로 존재 |
* VPC Flowlog 생성 및 CloudWatch 연동
1) VPC 생성 후 CloudWatch 로그 그룹 생성
- 로그 그룹 이름 지정
- Log 보존 기간 설정
- KMS Key ARN (필수값 X)
2) IAM 설정
2-1) 정책 생성
- DescribeLogGroups
- DescribeLogStreams
- CreateLogGroup
- CreateLogStream
- PutLogEvents
- 이후 모든 리소스 선택, 정책의 이름을 사용자 임의 지정 후 정책 생성
2-2) 역할 설정
2-3) 신뢰 관계 수정
- 역할에 정책을 추가하여 연결 후, Cloudwatch가 vpcflow log resource를 수용할 수 있도록 신뢰 관계를 추가해야함
<수정 전 신뢰 정책>
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
<수정 후 신뢰 정책>
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "vpc-flow-logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
3) VPC Flowlog 생성
- FlowLogs 이름
- 필터
- 최대 집계 간격
- 대상 (여기서는 CloudWatch Logs)
- 대상 로그 그룹 (1번에서 생성했던 CloudWatch 로그 그룹 선택)
- IAM 역할 (2번에서 생성했던 vpc-flow-logs를 신뢰 관계로 설정한 IAM 역할 지정)
- 로그 레코드 형식
- AWS 기본 형식 (14가지 로그 확인 가능)
- 사용자 지정 형식 (최대 29가지 로그 확인 가능 - 추천)
5) VPC Flowlog 활성화 확인
6) CloudWatch에서 VPC Flowlog 수집 확인
* 로그 필드 값 참조 : https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/flow-logs.html
* VPC Flowlog 생성 및 S3로 저장
- CloudWatch와 별도의 VPC Flowlogs 생성 필요
- 완전히 설정이 되더라도 연동에 5분 가량 걸리는 것으로 보여서 안되더라도 조금 대기
- 만약 S3로만 전송한다면 위의 복잡한 IAM 설정 필요 없음 (AdministratorAccess 계정 기준)
- 단, S3 정책에서 vpcflow log를 수신하도록 Bucket 정책 설정 필요 (현 구성은 하나의 단일 계정의 Bucket 정책)
- ex) 버킷 ARN, SourceAccount 변경 필요
{
"Version": "2012-10-17",
"Id": "AWSLogDeliveryWrite20150319",
"Statement": [
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::본인의BucketName/AWSLogs/본인의 AccountID 12자리/*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "본인의 AccountID 12자리",
"s3:x-amz-acl": "bucket-owner-full-control"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:logs:사용하는 region name(ex-ap-northeast-2):본인의 AccountID 12자리:*"
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::본인의BucketName",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "본인의 AccountID 12자리"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:logs:사용하는 region name(ex-ap-northeast-2):본인의 AccountID 12자리:*"
}
}
}
]
}
* CloudTrail 로그 생성 및 S3로 저장
- CloudTrail은 별도 저장을 하지 않을 시, 기본 3개월의 저장만 지원 (이벤트 기록에서 확인 가능)
- S3로만 저장 시, 별도 IAM 생성이나 버킷의 정책 설정 없이 자동으로 정책이 생성된 버킷을 지정, 저장되는 서비스 제공
1) Trail(추적) 생성
2) CloudTrail <> S3 연동 확인
- 추적을 생성한 후, 대략 5분 내에 Bucket에 저장되는 것을 확인할 수 있음
* CloudTrail과 CloudWatch 연동
- S3보다는 연동이 복잡하나, VPCFlowlog를 위해 생성했던 CloudWatch IAM 정책을 사용 가능
- 단, 해당 정책을 역할에 연결 시, cloudtrail을 신뢰 관계로 설정하여야 함.
- Cloudwatch 정책 생성은 상단에 작성한 부분을 참조하여 생성
1) IAM 역할 생성 (신뢰 관계 설정)
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Principal": {
"Service": [
"cloudtrail.amazonaws.com"
]
}
}
]
}
2) Cloudtrail 추적에서 CloudWatch logs 편집 설정
- 설정 적용
- CloudWatch 로그 그룹은 신규/기본 상관 없으며, 로그 스트림 이름으로 지정되나 이상하게 생성 되더라도 자동으로 로그 그룹이 정상적으로 만들어짐
- IAM 역할의 경우 위에서 생성했던 cloudtrail 신뢰 관계를 설정한 IAM 역할 지정
3) CloudWatch의 로그 그룹에서 정상 생성 확인
- 생성 확인
- Cloudwatch 로그 그룹 → 로그 스트림에 지속적으로 적재 확인 가능
- 생성 및 연동에 5분 가량 소요되니 참조
* 게시글 요약
- CloudWatch와 연동 시, CloudWatch 로그 그룹 생성 및 IAM 역할을 적절한 신뢰 관계를 설정하여 생성 후, 할당하는 것이 중요
- S3와 연동 시, 특별한 설정은 거의 없으며, Bucket 정책을 잘 설정하는 것이 가장 중요
'AWS Cloud' 카테고리의 다른 글
[AWS - Terraform] Load Balancer (0) | 2023.03.29 |
---|---|
[AWS - Terraform] Auto Scaling (0) | 2023.03.29 |
[AWS - Terraform] Instance(EC2) 생성 (0) | 2023.03.29 |
[AWS - Terraform] RDS 구축 (Cluster 및 RDS Instance) (0) | 2023.03.29 |
[AWS - Terraform] Network Setting (VPC, Subnet, IGW, NGW, Routing table, Security Group) (2) | 2023.03.28 |