코드형 인프라(IaC)와 보안 취약점 스캔의 중요성
최근 IT 인프라 관리 방식에 혁신을 가져온 코드형 인프라(Infrastructure as Code, IaC)는 시스템의 안전성, 비용 효율성, 그리고 전반적인 성능을 크게 향상시킵니다. 이러한 장점 덕분에 많은 산업 현장에서 IaC 기술 도입이 급증하고 있으며, 조직들은 클라우드 환경을 구축하고 배포하는 데 IaC를 적극적으로 활용하고 있습니다. Terraform, Azure Resource Manager 템플릿, AWS Cloud Formation 템플릿, OpenFaaS YML 등의 다양한 IaC 기술이 그 대표적인 예입니다.
과거에는 물리적인 서버와 하드웨어를 위한 데이터 센터를 구축하고 네트워크 연결을 구성하는 등 복잡한 단계를 거쳐야 했습니다. 하지만 클라우드 컴퓨팅의 발전으로 이러한 과정은 더욱 간소화되었고, IaC는 이러한 변화의 핵심적인 역할을 수행하고 있습니다. IaC가 무엇이며, 왜 중요한지 자세히 알아보겠습니다.
IaC의 개념 이해
IaC는 고급 프로그래밍 코드를 사용하여 IT 인프라 프로비저닝을 자동화하는 기술입니다. 이 자동화 덕분에 개발자는 소프트웨어 개발, 배포, 테스트 과정에서 서버, 데이터베이스 연결, 운영 체제, 스토리지 등의 요소들을 수동으로 관리할 필요가 없어졌습니다. 인프라 자동화는 현대 기업에게 필수적인 요소로 자리 잡았으며, 이를 통해 수많은 애플리케이션을 빠르고 효율적으로 배포할 수 있게 되었습니다.
IaC의 주요 이점은 비즈니스 프로세스 가속화, 위험 감소, 비용 통제, 보안 강화, 그리고 새로운 경쟁 위협에 대한 효과적인 대응입니다. 특히, IaC는 팀이 소프트웨어 인프라를 효과적으로 구축하고 버전을 관리할 수 있도록 지원하여, 애플리케이션 배포 수명 주기를 단축시키는 데 중요한 DevOps 방식입니다.
그러나 IaC의 강력한 기능은 보안 위험 관리라는 중요한 책임과 함께 수반됩니다. 실제로 테크리퍼블릭의 보고서에 따르면, DivvyCloud 연구원들은 클라우드 구성 오류로 인한 데이터 유출이 2018-19년에 약 5조 달러의 손실을 초래했다고 밝혔습니다. 올바른 IaC 모범 사례를 따르지 않으면, 손상된 클라우드 환경과 같은 보안 취약점이 발생하여 다음과 같은 심각한 문제가 발생할 수 있습니다.
네트워크 노출
안전하지 않은 IaC 관행은 온라인 공격의 빌미가 될 수 있습니다. 예를 들어, 공개적으로 액세스 가능한 SSH, 클라우드 스토리지 서비스, 인터넷에 노출된 데이터베이스, 그리고 개방형 보안 그룹 구성 등이 대표적인 IaC 설정 오류입니다.
구성 드리프트
개발팀이 IaC 모범 사례를 준수하더라도, 운영팀은 긴급 상황에 대처하기 위해 프로덕션 환경 구성을 직접 변경해야 할 수 있습니다. 그러나 클라우드 인프라의 불변성을 고려할 때, 배포된 인프라는 수정해서는 안 됩니다. 이러한 변경은 구성 드리프트를 유발하여 예기치 않은 문제를 일으킬 수 있습니다.
무단 권한 상승
조직은 IaC를 사용하여 소프트웨어 컨테이너, 마이크로서비스, Kubernetes 등의 다양한 클라우드 환경을 운영합니다. 일부 개발자는 클라우드 애플리케이션 및 소프트웨어를 실행하기 위해 권한 있는 계정을 사용하므로, 권한 상승의 위험이 존재합니다.
규정 위반
IaC로 생성된 태그가 없는 리소스는 “유령 리소스”로 이어질 수 있습니다. 이는 클라우드 환경 내에서 가시성, 탐지, 그리고 노출 관리를 어렵게 만들 수 있습니다. 결과적으로 클라우드 상태의 드리프트가 장기간 감지되지 않은 채 지속되어 규정 위반으로 이어질 수 있습니다.
그렇다면 이러한 문제를 어떻게 해결해야 할까요? IaC를 도입할 때, 발생 가능한 모든 위험 요소를 사전에 제거하여 보안 위협의 가능성을 차단해야 합니다. 이를 위해서는 IaC 모범 사례를 개발하고 준수하여 기술을 최대한 활용해야 합니다. 효율적인 보안 스캐너를 사용하여 클라우드 구성 오류 및 기타 보안 취약점을 탐지하고 수정하는 것도 좋은 방법입니다.
취약점 스캔의 필요성
보안 스캐너는 자동화된 프로세스를 통해 장치, 애플리케이션 또는 네트워크의 다양한 요소에서 발생할 수 있는 보안 결함을 검색합니다. 시스템의 안전한 운영을 위해서는 정기적인 스캔이 필수적입니다.
보안 강화
적절한 검사 도구는 최신 보안 관행을 사용하여 온라인 위협을 완화, 해결, 그리고 수정합니다. 이를 통해 기업과 고객의 데이터를 안전하게 보호할 수 있습니다.
평판 유지
조직의 민감한 데이터가 도난당하여 악의적인 목적으로 사용될 경우, 기업의 평판은 심각하게 손상될 수 있습니다.
규정 준수 감독
기업의 지속적인 운영을 위해서는 모든 활동이 관련 규정을 준수해야 합니다. 보안 취약점은 보안을 저해하고 회사를 심각한 위험에 빠뜨릴 수 있습니다. 이제 IaC의 취약점을 확인하는 데 사용되는 주요 스캔 도구를 살펴보겠습니다.
Checkov
Checkov를 사용하여 클라우드 구성 오류를 효과적으로 방지할 수 있습니다. Checkov는 IaC에 대한 정적 코드 분석 도구로서, Kubernetes, Terraform, 그리고 Cloudformation으로 관리되는 클라우드 인프라의 구성 오류를 탐지합니다.
Python으로 개발된 Checkov는 코드 작성, 관리, 버전 관리가 용이합니다. Google Cloud, Azure, AWS의 규정 준수 및 보안 모범 사례를 다루는 내장 정책을 제공하며, JSON, JUnit XML 또는 CLI와 같은 다양한 형식으로 결과를 출력할 수 있습니다. 또한, Checkov는 동적 코드 종속성을 그래프로 시각화하여 변수를 효과적으로 관리하고, 허용 가능한 모든 위험에 대한 인라인 억제를 지원합니다.
Checkov는 오픈 소스 도구로, 다음 단계에 따라 간단하게 사용할 수 있습니다.
| 1 | pip를 사용하여 PyPI에서 Checkov를 설치합니다. |
| 2 | Cloudformation 또는 Terraform 파일이 포함된 폴더를 입력으로 선택합니다. |
| 3 | 스캔을 실행합니다. |
| 4 | 색상 코딩된 결과를 CLI 출력으로 내보냅니다. |
| 5 | 결과를 CI/CD 파이프라인에 통합합니다. |
TFLint
Terraform 린터인 TFLint는 잠재적인 오류를 식별하고 최적의 보안 방식을 제공하는 데 중점을 둡니다. Terraform은 IaC를 위한 강력한 도구이지만, 공급자별 문제를 모두 검증하지 못할 수 있습니다. 이럴 때 TFLint는 클라우드 아키텍처 문제를 해결하는 데 매우 유용합니다. TFLint 최신 버전을 다운로드하여 이러한 문제들을 해결할 수 있습니다.
TFLint는 다음과 같은 방법으로 설치할 수 있습니다:
- Windows: 초콜릿
- macOS: 홈브류
- Docker: Docker를 통해 TFLint를 실행
TFLint는 또한 AWS, Google Cloud, Microsoft Azure 등 다양한 클라우드 서비스 공급자에 대한 플러그인을 지원합니다.
Terrafirma
Terrafirma는 Terraform 계획에 사용되는 정적 코드 분석 도구입니다. 특히 보안 설정 오류를 탐지하도록 설계되었습니다. Terrafirma는 JSON 대신 tfjson 형식으로 결과를 출력하며, virtualenv와 wheel을 사용하여 설치할 수 있습니다.
Accurics
Accurics는 클라우드 인프라를 구성 오류, 잠재적인 데이터 유출, 그리고 정책 위반으로부터 보호하는 데 매우 효과적인 도구입니다. Kubernetes YAML, Terraform, OpenFaaS YAML, 그리고 Dockerfile에 대한 코드 스캔을 수행하여 문제가 발생하기 전에 이를 감지하고, 클라우드 인프라에 필요한 조치를 취할 수 있도록 지원합니다. 또한, Accurics는 인프라 구성에 드리프트가 발생하지 않도록 지속적으로 확인하며, 소프트웨어 컨테이너, 플랫폼, 인프라, 그리고 서버를 포함한 전체 클라우드 스택을 보호합니다. 규정 준수, 보안, 거버넌스를 적용하여 DevOps 수명 주기를 안전하게 관리할 수 있도록 돕습니다.

Accurics는 프로비저닝된 인프라의 변경 사항을 감지하여 드리프트 문제를 해결합니다. 또한, 인프라 전반에 걸쳐 코드로 정의된 전체 스택 가시성을 실시간으로 제공하며, 코드를 업데이트하여 클라우드를 복원하거나 변경 사항을 적용할 수 있습니다. Slack, 웹훅, 이메일, JIRA, Splunk와 같은 다양한 워크플로 도구와 통합하여 문제 발생 시 개발자에게 알릴 수 있으며, GitHub, Jenkins 등의 DevOps 도구도 지원합니다.
클라우드 솔루션 형태로 Accurics를 사용할 수도 있으며, 조직의 요구 사항에 따라 자체 호스팅 버전을 다운로드할 수도 있습니다. 오픈 소스 버전인 Terrascan을 사용하여 500개 이상의 보안 정책에 따라 Terraform 코드를 스캔할 수도 있습니다.
CloudSploit
CloudSploit을 사용하면 몇 초 만에 Cloudformation 템플릿을 스캔하여 보안 위험을 완화할 수 있습니다. 다양한 AWS 제품으로 구성된 40개 이상의 리소스 유형에서 95개 이상의 보안 취약점을 탐지할 수 있으며, 클라우드 인프라를 시작하기 전에 위험을 효과적으로 식별하고 필요한 보안 조치를 구현할 수 있습니다. 또한, CloudSploit은 AWS가 Cloudformation에 리소스를 추가할 때 보안 검사를 추가할 수 있는 플러그인 기반 스캔 기능을 제공합니다.

CloudSploit은 API 액세스를 제공하여 편의성을 높였으며, 드래그 앤 드롭 기능을 사용하거나 템플릿을 붙여넣어 스캔을 실행할 수 있습니다. 템플릿을 업로드하면 각 리소스 설정을 식별되지 않은 값과 비교하여 결과(경고, 통과, 실패)를 생성합니다. 각 결과를 클릭하여 영향을 받는 리소스를 확인할 수도 있습니다.
결론
IaC는 업계에서 점차 그 중요성이 커지고 있으며, IT 인프라에 상당한 변화를 가져오고 있습니다. 하지만 IaC를 주의해서 실행하지 않으면 보안 취약점이 발생할 수 있습니다. 소개된 다양한 도구를 사용하여 IaC 환경의 취약점을 정기적으로 스캔하고, 안전하고 효율적인 인프라를 유지해야 합니다.
Terraform을 배우고 싶으신가요? 온라인 코스를 확인해 보세요.