Terraform와 함께하는 AWS Governance Pillars 소개
Source: Dev.to
세 가지 거버넌스 기둥
새로운 인프라 기술을 직접 다뤄보려면, 비즈니스의 기반이 될 세 가지 AWS 리소스를 소개합니다: Organizations, Accounts, 그리고 Policies.

AWS Organizations 및 조직 단위 (Organizational Units)
Organization은 전체 클라우드 인프라의 제어탑 역할을 하며, 여러 AWS 계정을 중앙에서 관리합니다. 계층 구조는 다음과 같습니다:
- Organization Root – 모든 것을 포함하는 단일 최상위 컨테이너.
- Organizational Units (OUs) – 논리적 그룹(예: Production, Development, Security)으로, 기능, 환경, 비즈니스 단위별로 계정을 구분하는 데 도움을 줍니다.
Organizations는 Accounts(OU 내부에 존재)와 Policies(계층의 어느 수준에든 연결 가능)와 손잡고 작동합니다.
AWS Organization 계정
개별 AWS 계정은 보안 및 리소스 경계의 기본 단위입니다. 각 계정은 고유한 청구, 접근 제어, 리소스 한계를 가집니다. 여러 계정을 사용하는 이점은 다음과 같습니다:
- 자연스러운 블라스트‑반경 격리
- 간소화된 컴플라이언스 경계
- 명확한 비용 할당
계정은 상위 OU 또는 조직 루트에 적용된 정책을 상속받아, 상위에서 하위로 흐르는 거버넌스 체인을 형성합니다.
서비스 제어 정책 (SCPs)
Service Control Policies는 IAM 권한과 무관하게 계정 내 모든 엔터티가 가질 수 있는 최대 권한을 정의하는 가드레일입니다. 일반적인 사용 사례는 다음과 같습니다:
- 계정이 조직을 탈퇴하는 것을 방지
- 허용된 AWS 리전 제한
- CloudTrail 로그와 같은 중요한 리소스 삭제 차단
SCP는 Organization Root, OU, 혹은 개별 계정에 연결될 수 있으며, 계층 구조를 따라 하위로 전파됩니다.
Terraform 모듈
이 섹션에서는 거버넌스 리소스를 위한 재사용 가능한 Terraform 모듈을 만들 것입니다. 이 모듈들은 terraform-aws-governance라는 GitHub 저장소에 보관되며, AWS 기반을 구축하는 블록 역할을 합니다.
적절한 granularity 선택
Infrastructure as Code(IaC)를 구조화할 때 흔히 쓰이는 세 가지 접근 방식은 다음과 같습니다:
- Monolithic – 하나의 큰 Terraform 구성. 시작은 빠르지만 규모가 커질수록 관리가 복잡하고 위험해짐.
- One‑repo‑per‑module – 각 모듈을 별도 저장소에 보관. 격리성은 최고지만 일관성 및 버전 관리가 어려워짐.
- Grouped modules – 관련 모듈을 하나의 저장소에 모음(우리 선택). 재사용성과 유지보수성을 균형 있게 제공하며, Terragrunt와 함께 오케스트레이션하기에 적합.
거버넌스 리소스는 본질적으로 서로 연관되어 있고 동시에 변경되는 경우가 많기 때문에, 우리는 그룹화 방식을 채택합니다.
핵심 모듈
우리는 세 가지 기본 모듈부터 시작합니다:
- organization – 기본 보안 정책과 함께 AWS Organization을 생성
- organizational-unit – 커스터마이징 가능한 정책을 포함한 OU 생성
- account – 지정된 OU 내에 새로운 AWS 계정을 프로비저닝
각 모듈은 상태가 없으며(idempotent) 반복 적용해도 부작용이 없습니다.
저장소 구조
terraform-aws-governance/
├── organization/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
├── organizational-unit/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
└── account/
├── main.tf
├── variables.tf
└── outputs.tf
이 모듈들은 Terragrunt와 함께 오케스트레이션되어 완전하고 잘 관리된 AWS 인프라 스택을 구축할 수 있습니다.