IaC(Infrastructure as Code)를 도입하면 개발과 운영을 통합하고, 효율적으로 빠르게 배포할 수 있다는 것은 누구나 알고 계실겁니다.
요즘의 인프라 관리 트렌드 IaC에 대해 자세히 알아보기
하지만 IaC로 인프라를 관리하는건 마냥 쉬운 일은 아닙니다. 지금부터 IaC로 인프라를 관리하면 어떤 문제들을 겪을 수 있는지, 우리는 어떻게 똑똑하게 IaC를 관리할 수 있을지 알아봅시다.
아래 terraform 코드를 예시로 들어 설명해보겠습니다.
resource "ncloud_vpc" "vpc" {
ipv4_cidr_block = "10.0.0.0/16"
}
resource "ncloud_network_acl" "nacl" {
vpc_no = ncloud_vpc.vpc.id
name = "main"
description = "for test"
}
resource "ncloud_network_acl_rule" "nacl_rule" {
network_acl_no = ncloud_network_acl.nacl.id
inbound {
priority = 100
protocol = "TCP"
rule_action = "ALLOW"
ip_block = "0.0.0.0/0"
port_range = "22"
}
inbound {
priority = 110
protocol = "TCP"
rule_action = "ALLOW"
ip_block = "0.0.0.0/0"
port_range = "80"
}
outbound {
priority = 100
protocol = "TCP"
rule_action = "ALLOW"
ip_block = "0.0.0.0/0"
port_range = "1-65535"
}
}
이 코드는 vpc의 network 접근제어를 설정하는 코드인데요, 22번 포트와 80번 포트로 0.0.0.0/0으로 inbound를 열어두는 경우 공용 액세스가 가능해져 리소스 공격 영역을 증가시킵니다. 그렇기 때문에 접근제어 설정 시 특정 IP block으로 제한해야 합니다. 이외에도 잘못된 리소스 설정들은 매우 많으며, 이에 대해 사용자는 대비하여 안전한 인프라를 구성해야 합니다.
이러한 보안위협을 스캔하는 IaC 정적 스캐너
는 여러 해외 회사에서 오픈소스로 제공하고 있습니다. checkov, tfsec, terrascan 등이 있으니, 들어가보셔서 스캔 해보고 확인해보면 좋을 것 같습니다.
IaC 자체가 안전하더라도 보안위협이 발생할 수 있습니다. 안전한 IaC를 실제 클라우드 인프라에 적용하는 과정에서 보안 문제가 생길 수 있기 때문입니다. Terraform
의 경우에는 선언형 언어
이기 때문에 같은 이름을 가진 동일한 리소스를 여러개 선언하는 경우 실제 인프라 적용 시 마지막으로 선언된 하나의 리소스만 선언될 수도 있습니다. 그러면 사용자의 의도와 다른 인프라가 설계되고, 인프라 작동에 문제를 일으키거나 특정 규칙이 적용되지 않아 보안 위협을 유발할 수 있습니다.
이러한 문제는 terraform을 제작하는 hashicorp
에서 해결할 수 있는 문제이나, 리소스가 많이 들며 실제로 사용자가 특정 의도를 가지고 코드를 작성할 수도 있기 때문에 수정되고 있지 않은 상황입니다.
하지만 terraform에 미숙한 사람이나 협업을 하는 기업에서는 이러한 보안 위협에 대해서 인지하고, 필요한 경우 수정할 수 있어야 합니다. 하지만 해당 보안 위협 스캔을 지원하는 스캐너는 존재하지 않습니다.
IaC는 자동화
와 모듈화
가 가능하기 때문에 사용자가 편리함을 느낄수도 있지만 동시에 여러 문제들을 일으킬 수 있습니다.
모듈화란 모듈을 만들어서 인프라를 구성할 때 똑같은 설정을 여러번 적용시킬 수 있는 것을 말합니다. 재사용이 가능하기 때문에 편리하지만, 보안 문제를 가진 모듈을 재사용하면 인프라 전체에 큰 문제를 초래합니다.
또한 자동화가 가능하기에 사용자가 잘못 인프라를 배포하여 비용 낭비가 생길 수 있고, 안전하지 않은 인프라로 변경하여 배포했다면 누가 언제 인프라를 변경했는지에 대한 책임추적성 확보가 어렵다는 문제가 있습니다.
이러한 문제들이 있기에, 해외에서는 IaC 보안, 관리를 지원하는 서비스들이 출시된 상황입니다. Bridgecrew, Oak9, Snyk, Tenable 등 여러 회사에서 해당 서비스들을 출시했고, 이 서비스에 대한 수요도 증가하고 있습니다.
하지만 국내에는 관련 서비스가 존재하지 않으며, 해외 서비스들은 기능들이 파편화
되어 있기 때문에 소비자는 중복비용
을 피할 수 없습니다. 또한 Ncloud, NHN과 같은 국내 클라우드 벤더사와 국내 보안 컴플라이언스 점검을 지원하지 않습니다. 게다가 앞에서 언급한 코드 상에서 발생하는 보안위협을 탐지할 수 없다는 문제점도 있습니다.
저희 Init Cloud가 현재 개발 중에 있는 Rocket은 IaC 통합 관리 솔루션을 제공합니다! 위에서 언급한 문제들을 사용자 친화적으로 해결할 수 있도록 돕습니다. 현재 무료로 Rocket 베타 서비스를 이용해볼 소중한 분들을 모집하고 있습니다. IaC, 클라우드 관련 커피챗도 환영입니다! 많은 신청 부탁드립니다.