본문으로 건너뛰기
hannctl
PDF

case-studies multi-csp-asset-automation DESIGN.md

멀티 클라우드 자산·감사 자동화 설계 및 구현

AWS, GCP, Tencent Cloud의 자산·권한·감사 로그를 공통 스키마로 모으고, 위험 이벤트가 생기면 바로 알리는 Python 도구입니다.

AWSGCPTencent교차 계정 역할iamfirewallinstanceloadbalancervpcaudit_logunused공통 스키마Google SheetsSlackTelegram위험 이벤트 즉시 알림연도/월 보관
감사 시트는 월 1회 CSV로 떠서 연도/월 폴더에 보관합니다.
위험 이벤트 규칙AWSGCPTencentAttachUserPolicyCreateAccessKeyStopInstancesTerminateInstancesModifyInstanceAttributeSetIamPolicyCreateServiceAccountKeyinstances.stopinstances.deleteinstances.setMachineTypeAttachUserPolicyAttachUserPoliciesCreateApiKeyStopInstancesTerminateInstancesResetInstancesTypecritical_events.yaml 에서 규칙을 바꿉니다SlackTelegram
목록에 있는 이벤트만 Slack과 Telegram으로 즉시 보냅니다.
미사용 자원 탐지Elastic IPSecurity GroupEBS 볼륨어디에도 연결되지 않음어떤 ENI에도 안 붙음인스턴스에 안 붙음발견발견발견GCP · Tencent도 같은 기준으로 유휴 자원을 찾습니다
GCP와 Tencent에서도 같은 기준으로 유휴 IP·디스크·방화벽을 찾습니다.

자원별 공통 스키마

이 코드가 하는 일: IAM 정보를 담는 데이터 클래스로, 세 클라우드의 계정 정보를 클라우드, 프로젝트, 사용자, 그룹, 권한, 생성 시각, 액세스 키, 마지막 로그인, 비밀번호 변경 시각 같은 같은 필드로 맞춥니다. frozen=True라 한 번 만든 기록은 바뀌지 않고, sheet 값 “IAM”이 내보낼 시트 이름을 정합니다. 클라우드마다 수집 코드는 달라도 결과가 이 형태로 모이기 때문에 한 표에서 세 클라우드의 권한을 나란히 비교할 수 있습니다.

@dataclass(frozen=True)
class IamRecord(Record):
    sheet: ClassVar[str] = "IAM"
    cloud: str
    project: str
    project_id: str
    user_name: str
    user_id: str
    user_group: str = ""
    permission: str = ""
    user_creation_time: str = ""
    access_key: str = ""
    access_key_creation_time: str = ""
    last_login: str = ""
    password_last_changed: str = ""

위험 이벤트는 데이터로

이 코드가 하는 일: 즉시 알릴 위험 이벤트를 클라우드별 이름 목록으로 적은 설정 파일입니다(일부 발췌). 권한 연결, 키 생성, 서버 중지·삭제, 사양 변경처럼 영향이 큰 행위가 aws, gcp, tencent 아래에 각 클라우드의 이벤트 이름으로 들어 있고, 수집한 감사 로그의 이벤트가 이 목록에 있으면 Slack과 Telegram으로 바로 알립니다. 목록이 코드 밖에 있어 규칙을 바꿀 때 Python 코드를 고치지 않아도 됩니다.

aws:
  - AttachUserPolicy
  - CreateAccessKey
  - StopInstances
  - TerminateInstances
  - ModifyInstanceAttribute
gcp:
  - SetIamPolicy
  - CreateServiceAccountKey
  - v1.compute.instances.stop
  - v1.compute.instances.delete
  - v1.compute.instances.setMachineType
tencent:
  - AttachUserPolicy
  - AttachUserPolicies
  - CreateApiKey
  - StopInstances
  - TerminateInstances
© 2026 Kim JunHyun · Built with Astro · 이 사이트의 인프라도 코드로 관리합니다

↑↓ 이동 · Enter 열기 · Esc 닫기

테마 고르기

사원증을 누르면 그 테마로, 보던 내용과 같은 곳으로 이동합니다. 끌면 흔들리기만 합니다.

처음 화면으로 →