개발자 / 보안 / 애플리케이션 / 클라우드

"마이크로서비스 기반의 앱을 위한 데브섹옵스 구현" NIST 새 가이드

Chris Hughes | CSO 2021.10.29
미국 연방정부도 민간 기업과 마찬가지로 클라우드, 데브섹옵스(Devsecops), 그리고 클라우드 네이티브 애플리케이션을 위한 마이크로서비스 기반 아키텍처로 전환하는 중이다. 미국표준기술연구원(NIST)은 업계가 모범사례를 채택할 수 있도록 표준과 가이드를 제공한다. 
 
ⓒ Getty Images Bank

이를 위해 NIST는 지난 9월 서비스 메시(Service Mesh)를 사용한 마이크로서비스 기반 애플리케이션을 위한 데브섹옵스 구현을 발표했다(800-204C). 이 문서는 데브섹옵스 구현, 그리고 마이크로서비스 아키텍처에 클라우드 네이티브 애플리케이션을 호스팅하기 위한 서비스 메시를 사용한 참조 플랫폼 사용에 관한 포괄적인 가이드다. 이는 현재 초안 형식이며, 전 미공군 최고 소프트웨어 책임자인 니콜라스 챌라인과 서비스 메시 분야 선두업체인 테트레이트(Tetrate)의 협업으로 작성됐다.

이 가이드는 성공적인 데브섹옵스 구현을 위한 구성 요소라고 할 수 있는 프리미티브(primitive) 개념을 사용했다. 데브섹옵스 프리미티브는 민첩한 개발을 위한 마이크로서비스 기반 애플리케이션에 가장 적합하다. 또한 데브섹옵스가 클라우드 네이티브 애플리케이션에 필요한 비즈니스 민첩성 요구사항을 촉진한다는 개념도 지원한다. 다음은 NIST 가이드의 각 세션의 내용을 분석했다.  


데브섹옵스 프리미티브 구현을 위한 참조 플랫폼

이 가이드는 컨테이너 오케스트레이션과 관리 플랫폼 맥락에서 참조 플랫폼을 다룬다. 예를 들어 분류된 또는 연결이 끊긴 엄격한 환경(물리적) 또는 AWS, 애저와 같은 클라우드 서비스 제공업체(CSP) 환경과 같은 가상화된 환경 등 물리적 또는 가상 기반 인프라 위에 구축하는 방식이다.

가이드는 컨테이너 오케스트레이션 및 리소스 관리 플랫폼 사용을 권장한다. 가장 인기 있는 오픈소스 컨테이너 오케스트레이션 플랫폼인 쿠버네티스(Kubernetes)가 대표적이다. 쿠버네티스는 컨테이너화된 애플리케이션을 호스팅하는 팟(pod)을 기반으로 물리적 또는 가상 머신에 배포할 수 있다. 또한 노드 그룹을 사용하고 팟을 호스팅함으로써 마이크로서비스를 위한 워크로드를 기반 인프라 전반에 분산해 로드 밸런싱과 확장을 지원한다.

물론 쿠버네티스 플랫폼에도 나름의 보안 및 성능에 대한 우려 사항이 있다. 그 가운데 하나는 라운드 로빈(round robin) 등 다양한 형식의 팟에 걸쳐 트래픽 분할 및 라우팅을 처리할 수 있어야 한다는 것이다.

이스티오(Istio)와 같은 서비스 메시 소프트웨어가 바로 그 목적으로 사용된다. 서비스 메시 소프트웨어를 사용하면 마이크로서비스 기반 애플리케이션에 필요한 트래픽 라우팅과 관찰 가능성을 대부분 확보할 수 있다. 서비스 메시 아키텍처는 데이터 평면과 제어 평면, 두 가지 주 요소로 구성된다. 두 구성 요소는 보안 네트워킹, 정책 시행, 트래픽 및 성능 관찰 가능성(데이터 평면), 키 및 인증서 관리와 인바운드/아웃바운드 연결 관리(제어 평면) 등의 기능을 수행한다.


데브섹옵스의 조직적인 준비, 주요 프리미티브, 그리고 구현

이 세션에서는 기관과 기업에서 데브섹옵스 구현을 준비하고 데브옵스에서 데브섹옵스로 전환하는 올바른 방법, 그리고 데브섹옵스의 구성 요소(프리미티브)에 대해 다룬다. 사실 이 세션이 문서의 가장 앞부분에 나와야 한다.

가이드는 데브섹옵스로의 전환을 촉진하기 위해 기업 IT 부서와 워크플로우에 대한 변화의 필요성을 강조한다. 기업에서 데브섹옵스를 달성하고 전통적인 사일로를 허물기 위해서는 개발자, 보안 전문가, IT 운영 전문가로 구성된 교차 직무 팀이 필수적이다.

NIST는 데브옵스에서 데브섹옵스로의 진화를 언급하며 데브옵스에는 전통적으로 보안 테스트와 보안 제어 통합 및 실시간 보안 태세 확인이 없다는 점을 강조한다. 많은 전문가가 데브옵스와 데브섹옵스가 동일하고 데브옵스는 항상 보안을 포함해야 한다고 말한다는 것을 감안하면 이는 흥미로운 주장이다. 이름에 포함된 용어, 아니면 결과와 방법, 무엇이 가장 중요할까?

어쨌든 핵심은 데브옵스에 없는 몇 가지 특정 핵심 구성 요소가 데브섹옵스에는 반드시 있어야 한다는 것이다. 여기에는 CI/CD 파이프라인에 보안 테스트를 통합하는 것과 파이프라인에서 진행되는 일을 파악하고 파이프라인 자체를 보호하기 위한 보안 제어를 확보하는 것, 그리고 보안이 별도의 작업으로 격하되지 않도록 하는 것이 포함된다. 보안은 개발 수명 주기의 끝에 '추가' 요소로 간주되는 경우가 많다.

이 가이드는 파이프라인에 대한 논의에 덧붙여 파이프라인이 코드를 빌드, 테스트, 보호하고 기업에 가치를 제공하기 위한 다양한 단계 전반에 걸쳐 흐르는 하나의 작업이 되어야 한다고 강조한다. 기업이 지속적 통합, 지속적 제공 또는 지속적 배포를 이행하는지 여부에 따라 테스트와 프로덕션 환경 배포 사이에 부가적인 수동 단계가 존재할 수 있다(그림 참조).
 
ⓒ NIST 
ⓒ NIST 

CI/CD는 궁극적으로 빌드/테스트, 전달/패키지, 배포의 세 가지 단계로 구성된다. 파이프라인은 CI/CD를 촉진할 수 있지만 작업과 엔티티 역시 파이프라인을 구성하는 요소이며 여기에는 소스코드 리포지토리 설정, 빌드 프로세스, 빌드 프로세스 보호, 배포 환경, 제공 파이프라인, 마지막으로 코드 테스트 및 파이프라인 워크플로우 실행이 포함된다.

CI/CD 파이프라인은 자동화와 신속한 배포를 지원하지만 NIST는 다양한 영역에서 여전히 사람이 개입한다는 점을 강조한다. 새로운 기능을 도입하는 개발 팀, 감사를 수행하는 보안 팀, 워크플로우를 촉진하기 위한 파이프라인을 설계하고 만드는 팀 등이 있다.

자동화는 데브섹옵스와 신속 제공을 구현하기 위한 중요한 구성요소다. 그러나 어떤 작업을 자동화해야 할지 결정하는 일이 쉽지 않을 수 있다. NIST 가이드에 따르면 빈도가 높은 반복적인 작업, 규정 준수 지향적인 작업, 그리고 시간 순서에 따른 활동에 집중해야 한다. 이 방식으로 자동화를 채택하면 팀은 일상적인 작업과 활동에 낭비되는 시간을 줄여 분석 문제 해결에 매진할 수 있다.

파이프라인에 도구를 통합하기 위해 고려해야 할 점으로는 통합의 용이함, 접근 가능한 인터페이스, 다양한 백엔드 인프라 구성요소를 지원할 수 있는 역량 등이 있다. 이런 요소가 필요한 이유는 컨테이너화된 애플리케이션이 호스팅될 수 있는 환경, 그리고 유연하고 동적이어야 할 필요성에 있다.


참조 플랫폼을 위한 데브섹옵스 프리미티브 구현

NIST의 가이드는 참조 플랫폼에 많은 CI/CD 파이프라인이 관여할 수 있다는 점을 강조한다. 애플리케이션 코드, 코드형 인프라(IaC), 코드형 정책 또는 코드형 관찰 가능성을 위한 파이프라인도 있을 수 있다. 코드 유형에 관계없이 이런 모든 파이프라인에는 파이브라인 자체에 대한 보호, 워크플로우 모델 처리, 적절한 보안 테스트 통합이 필요하다. 문서는 각 코드 유형과 관련된 파이프라인의 중요한 측면을 설명한다.

CI/CD는 코드의 보안을 개선하는 것으로 이야기되는 경우가 많지만, 파이프라인 자체 역시 보호해서 악성코드가 유입, 배포되지 않도록 해야 한다(솔라윈즈의 예). 파이프라인 보호에는 인증, 로깅, 개발자와 보안 팀에게 제공되는 빌드 보고서, 그리고 예를 들어 TUF 및 in-toto를 사용하는 등 여러 당사자의 아티팩트 서명이 포함된다.

NIST는 푸시 또는 풀 기반인 CI/CD 파이프라인의 워크플로우 모델을 제시한다. 가이드는 푸시 기반 워크플로우의 경우 인증 정보를 부서 환경 외부로 노출할 수 있다는 점으로 인해 안전하지 않을 수 있다고 주장한다. 대신 풀 기반 워크플로우로 촉진되는 깃옵스(GitOps) 스타일을 사용할 것을 주장한다. 

이 방법은 운영자를 통해 배포 환경을 실행하고 운영자가 소스코드 관리(Source Code Management, SCM) 리포지토리에서 변경을 관측할 경우 새로운 이미지를 환경으로 가져온다. 깃옵스는 업계 표준으로 차차 부상 중이며, 조직에서 SCM을 진실 공급원(source of truth)으로 사용하고 의존할 수 있게 해준다. 또한 버전 관리, 드리프트 제어, 깃 기반 워크플로우를 활용하는 대신 환경에서 수동 반복 제거 등의 가치도 제공할 수 있다.

보안 테스트는 어떤 파이프라인을 다루든 관계없이 중요하다. NIST는 정적 애플리케이션 보안 테스트(Static Application Security Testing, SAST), 동적 애플리케이션 보안 테스트(Dynamic Application Security Testing, DAST), 대화형 애플리케이션 보안 테스트(Interactive Application Security Testing, IAST), 소프트웨어 구성 분석(software composition analysis)을 포함한 일반적인 보안 테스트를 제시한다.

이런 모든 테스트 유형은 위험을 낮추고 취약점을 파악하기 위해 매우 중요하다. 이러한 검사에서 취약점, 컨테이너 이미지 문제, 규정 준수 우려 사항을 발견할 수 있다. 또한 보안 및 규정 준수 문제가 런타임 환경에 도달하기 전에 IaC 템플릿에서 이런 문제를 검사해야 할 필요성도 있다. 이를 보안의 좌측 이동(shifting security left)이라고 한다. 물론 런타임 취약점에 대한 시야와 인식도 계속 유지해야 한다.

NIST의 가이드는 프로덕션에 위치하도록 시스템을 승인하는 지속적 운영 권한(continuous Authority To Operate, cATO) 맥락에서 데브섹옵스를 논의한다. 규정을 준수하는 코드를 발견할 수 있고, 대시보드는 런타임 시야를 제공할 수 있다. 아마 미국방부(DoD)에서 발표할 cATO 가이드에서 더 철저한 cATO 가이드를 볼 수 있을 것이다. DoD 가이드는 플랫폼, 팀, 프로세스 권한 부여에 대해 더 종합적으로 다룰 것이다. DoD는 기업 전략, 플레이북 및 기초 문서를 비롯해 최근 여러 개의 데브섹옵스 문서를 발표했다.

NIST는 오는 11월 1일까지 초안 SP 800-204C 문서에 대한 의견을 수집한다.  editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.