
Hashicorp Sentinel 에서 AWS Security Hub 에 도움이 되는 정책 라이브러리가 공개되었습니다
안녕하세요 클래스메소드의 이수재입니다.
AWS 환경을 구축하다보면 아무리 사전에 제대로 설계를 했더라도 생성 후에 제대로 규정 사항이 지켜지는지 확인이 필요한 경우가 많습니다.
이 때 보통 환경을 생성한 후에 어느정도 시간이 지난 후 Security Hub나 다른 서비스를 참고하게 됩니다.
사전에 규정 준수를 확인할 수 있는 방법으로 이번에 공개된 Terraform Sentinel 의 정책 라이브러리를 알아보고자 합니다.
Sentinel이란?
Hashicorp Enterprise 플랜을 이용하는 경우 사용할 수 있는 기능으로 Plicy as Code(코드로서의 정책) 프레임 워크입니다. 보통 인프라의 거버넌스 및 규정 준수를 구현하기 위하여 많이 사용합니다.
Terraform 에서는 Plan의 결과에 대한 정책 검사를 담당합니다.
특징으로는 고유한 정책 언어(Sentinel Language)를 사용하여 정의합니다.
센티넬을 설정하면 Plan과 Apply 사이에서 실행됩니다.
센티넬은 enforcement-level 이라고 하는 옵션을 설정하여 전반적으로 어느정도 수준의 엄격함을 적용할지 설정할 수 있습니다.
상세한 내용은 다음 페이지를 참고해주세요.
AWS와 Sentinel의 정책
Sentinel 정책은 사용자가 직접 정의하여 사용할 수 있습니다.
다만 직접 정의하는 경우에는 러닝코스트가 높기 때문에 사전에 작성된 정책(Pre-written Sentinel policy)을 사용하는 것이 보다 나은 선택일 수 있습니다.
보통 여러개의 정책이 세트로 제공되며 Terraform의 Module이나 Provider와 같이 Hashicorp의 정책 레지스트리에서 가져올 수 있습니다.
정책을 찾고 가져오는 방법은 다음 페이지를 참고해주세요.
제공되는 정책들 중 25년 3월 [1] 에 Hashicorp와 AWS가 관리 주체인 Pre-written Sentinel policy for AWS가 공개되었습니다. 이 정책은 CIS 준수 정책으로 CIS AWS Foundation Benchmarks v1.2, v1.4 및 v3.0을 지원합니다.
정책의 상세한 내용은 Hashicorp 레지스트리에서 확인할 수 있습니다.
올해 5월에 공개된 정책 세트는 AWS Foundational Best Security Practices v1.0.0(FSBP, AWS 기초 보안 모범 사례 v1.0.0)을 준수하는 정책 세트입니다.
작성일 기준 219개의 정책이 설정되어 있으며 Security Hub의 컨트롤 하나에 대해 하나의 정책이 대응하는 형태로 되어있습니다.
작성일 기준 Security Hub의 해당 보안 표준이 292개의 컨트롤을 제공하고 있으므로 이 정책 세트를 사용하는 것으로 75% 정도 커버 가능한 상황입니다.
Sentinel 과 OPA
Policy as Code 툴로는 이번 글에서 소개하는 Sentinel 이외에도 오픈 소스 PoC 툴인 OPA(Open Policy Agent) 를 도입하는 경우도 있습니다.
OPA에 대해 간략히 설명하자면 CNCF(Cloud Native Computing Foundation)에 속하는 오픈 소스의 정책 도구입니다.
Sentinel과 같이 Kubernetes, API Gateway, CI/CD 파이프라인 등 다양한 시스템과 통합하여 사용할 수 있습니다.
특징으로는 정책 언어는 Rego를 사용하며 강력한 유연함이 특징입니다. 또한 작성한 정책은 REST API를 통해 정책을 평가하는 것도 가능합니다.
가장 큰 특징으로는 오픈 소스로 무료로 사용가능하기 때문에 비용 부담 없이 도입이 가능하다는 점이라고 생각합니다.
다만 Sentinel과 같이 정책에 의한 강제 수준의 환경 관리는 불가능합니다.
클로드로 이 둘을 비교한 표도 공유합니다.(어디까지나 참고수준입니다.)
항목 | Sentinel | OPA |
---|---|---|
개발사 | HashiCorp | CNCF (오픈소스) |
라이선스 | 상용 (HashiCorp Enterprise) | 오픈소스 (Apache 2.0) |
정책 언어 | Sentinel Language (고유 언어) | Rego (선언형 언어) |
통합 대상 | HashiCorp 제품에 특화 | 범용 (Kubernetes, CI/CD, API Gateway 등) |
학습 난이도 | 중간 (고유 언어) | 높음 (Rego 학습 필요) |
유연성 | 중간 (특정 제품에 최적화) | 높음 (다양한 시스템에 적용 가능) |
정책 강제 수준 | 있음 (advisory, soft, hard) | 없음 (기본적으로 허용/거부만) |
테스트 기능 | 있음 (전용 CLI) | 있음 (opa test ) |
GUI/관리 도구 | Terraform Enterprise 등에 통합 | 별도 구축 필요 (예: Styra DAS) |
적용 방법
이 글에서는 공개 GitHub 저장소에 직접 연결하여 정책을 실행하는 방법을 설명합니다.
전제 조건으로 Hashicorp 의 Plus 이상 플랜 이 Organization에 적용되어 있어야합니다.
HCP Terraform에 로그인하고 좌측의 Settings에서 PolicySets에 들어갑니다.
그리고 Connect a new policy set 를 클릭하여 Policy Sets를 생성합니다.
공용 GitHub 리포지토리에 연결하려면 Version control provider 을 선택합니다.
FSBP-Policy-Set-for-AWS-Terraform_ 라고 이름을 입력하고, 정책을 적용하길 원하는 프로젝트를 지정합니다.
나머지는 기본값으로 문제없습니다.
이어서 연결하려는 GitHub 리포지토리를 설정합니다.
정책 리포지토리는 GitHub에서 사용할 수 있으므로 GitHub를 선택하여 계속 진행합니다.
그리고 VCS 연결에서는 다음을 설정합니다.
- 정책 경로: /
- VCS 분기: release/1.0.0
마지막으로 검토한 후 Policy Sets를 생성합니다.
마무리
기존에 하시코프의 플랜을 이용하고 있고, AWS를 IaC로 관리하고 있는 상황이라면 엄청 편한 기능이 나왔네요.
앞으로 Security Hub의 모든 항목이 지원되고 앞으로의 변경사항도 알아서 지원해줄테니 편할 것 같습니다.
긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.
문의 사항은 클래스메소드 코리아로!
클래스메소드 코리아에서는 다양한 세미나 및 이벤트를 진행하고 있습니다.
진행중인 이벤트에 대해 아래 페이지를 참고해주세요.
AWS에 대한 상담 및 클래스 메소드 멤버스에 관한 문의사항은 아래 메일로 연락주시면 감사드립니다!
Info@classmethod.kr
정확히는 24년 12월에 베타 버전으로 출시 ↩︎