PF-03 · Tencent · IaC
Tencent Cloud 감사 대비 Terraform
CloudAudit 추적을 서비스별로 코드에 정의해 위험한 변경을 COS 버킷에 남기는 Tencent Cloud 모듈 모음입니다.
- 역할
- 설계 · 구현
- 기간
- 개인 프로젝트 · 2026.11 공개
- CSP
- Tencent
- 규모
- 모듈 18종 · 예제 3개
- 핵심 기술
- Terraform · Tencent Cloud · CloudAudit · COS · CAM · CLB
- 18
- 공개한 Terraform 모듈
- 4
- 서비스별 감사 트랙
- 19
- 코드로 추적하는 감사 이벤트
한눈에 보기
문제
Tencent Cloud에서 누가 무엇을 바꿨는지 서비스별로 남겨야 했습니다. 또 provider 릴리스 주기가 불규칙해 버전이 바뀌면 코드 변경 없이도 plan이 달라질 수 있었습니다.
접근
CloudAudit 추적을 CAM, CVM, CBS, VPC 서비스별로 코드에 정의하고 COS 버킷의 서비스별 prefix에 저장합니다. provider는 모든 모듈에서 = 1.81.163으로 고정합니다.
결과
권한, 서버, 디스크, 보안그룹 변경 이벤트가 코드로 정의한 추적에 따라 COS에 남습니다. CreateApiKey와 AttachUserPolicy 같은 위험 이벤트도 포함합니다.
자세히 보기
서비스별 감사 트랙
이 코드가 하는 일: CAM과 CVM 추적을 이벤트 이름 목록으로 정의합니다.
audit_tracks = [
{
name = "iam_trackingset"
resource_type = "CAM"
event_names = ["AddUser", "DeleteUser", "CreateApiKey", "DeleteApiKey", "AttachUserPolicy", "DetachUserPolicy"]
action_type = "*"
storage = {
storage_prefix = "cam"
storage_type = "cos"
}
},
{
name = "vm_trackingset"
resource_type = "CVM"
event_names = ["RunInstances", "TerminateInstances", "StopInstances", "StartInstances", "ResetInstancesType", "AttachDisks", "DetachDisks"]
action_type = "*"
storage = {
storage_prefix = "cvm"
storage_type = "cos"
}
},
provider 버전 고정
이 코드가 하는 일: provider를 정확한 버전으로 고정합니다.
terraform {
required_version = ">= 1.9, < 2.0"
required_providers {
tencentcloud = {
source = "tencentcloudstack/tencentcloud"
version = "= 1.81.163"
}
}
}배운 점
여러 이벤트를 한 트랙에 섞지 않고 서비스별 트랙으로 나누면 감사 로그를 한 종류씩 읽고 보관 기간도 따로 정할 수 있습니다.
다음에 개선할 점
스캐너의 Tencent Cloud 규칙이 적어 통과해도 AWS보다 검증 범위가 좁습니다. CI에서는 예제를 검증만 하고 apply하지 않습니다.