owasp-dependency-track

소개

Open Source 의 활용이 증가 함에따라 보안적으로 SCA(Security Composition Analysis) 의 중요성이 커지고 있습니다. SCA 를 이용하면 Open Source 라이브러리와 같은 어플리케이션 구성요소에서 발생할 수 있는 취약점들을 식별하고 관리하여 보안적으로 강화된 어플리케이션 배포를 가능하게 해줍니다.

SCA 를 위한 오픈소스나 상용 제품들이 많이 존재하는데 그 중 OWASP 에서 만든 Dependency-track 을 구축하여 활용해보고자 합니다.

OWASP Dependency-track 이란?

OWASP Dependency-Track는 소프트웨어 구성 요소의 보안이나 라이선스, 컴플라이언스를 관리하기 위한 플랫폼입니다. 오픈소스 라이브러리와 같은 어플리케이션 구성 요소의 취약점을 추적하고 관리하는 데 사용되는데요.

Dependency-track 외에도 OWASP 에서 관리하는 Dependency-check 라는 것도 있습니다. 이 둘의 차이는 아래와 같습니다.

  • Dependency-check 는 단일 프로젝트의 의존성과 관련한 취약점 분석에 초점을 맞추고 있고,
  • Dependency-track 은 Organization 전체적으로 어플리케이션 구성요소를 모니터링하고 관리하기 위한 통합 플랫폼 성격을 가지고 있습니다.

일반적으로 Dependency-check 는 CI/CD 과정에서 단일 프로젝트 점검을 하고, Dependency-track 은 모든 SBOM을 수집하여 통합 관리를 위한 목적으로 사용을 합니다.

이외에도 CycloneDX 형식의 SMOM(Software Bill of Materials) 이 제공된다면 어떤 Source 와도 통합이 가능한데요.

다양한 notification 통합도 가능하며, API 가 지원되어 다양한 CI/CD 툴을 이용한 통합도 가능합니다.

owasp-dependency-track

출처: https://owasp.org/www-project-dependency-track/

OWASP Dependency-track 설치

OWASP Dependency-track 는 다양한 환경에서 설치할 수 있도록 지원을 해주고 있는데요. 이번에는 kuberntes 의 별도 namespace 에 helm-chart 를 이용하여 설치해 보려합니다..

kubernetes 에 설치를 하게 되면 아래와 같이 구성이 됩니다.

dtrack-argchitecture

frontend 를 통해 콘솔접속이 가능하며, api-server 를 통해 backend 가 구성됩니다. 데이터베이스는 test 환경이라면 별도의 설정없이 H2 database 가 api-server 와 통합되어 구축이 됩니다.

하지만 production 환경이라면 다른 안정적인 데이터베이스를 활용하는 것이 좋은데요. 아래의 데이터베이스들이 지원 됩니다.

  • PostgreSQL (Recommand)
  • Microsoft SQL Server
  • MySQL

이제 helm-chart 를 이용하여 사전에 구축하였던 local-kubernetes 환경에 Dependency-track 을 구축해봅니다.

먼저 repo 를 추가하고 dependency-track 이 확인되는지 체크합니다.

# add repo
helm repo add dependency-track https://dependencytrack.github.io/helm-charts

# search helm - dependency-track
helm search repo dependency-track

확인이 되었으면 이제 dtrack namespace 를 만들어 dtrack 을 설치해줍니다. 아래 명령어를 통하면 기본적인 설치 모드로서 DB 도 임베디드된 H2 Database 를 사용하게 됩니다.

# install dependency-track with helm-chart
helm install dtrack dependency-track/dependency-track \
    --namespace dtrack --create-namespace

Production 환경에서 운영을 한다면 별도의 RDBMS 를 구성하여 운영하는 것이 더 안정적인데요. AWS 라면 별도의 RDS 를 이용할 수 있겠고, OWASP 에서는 postgreSQL 을 추천하고 있으니 참고하여 구축 및 연동을 진행하면 되겠습니다.

혹시 values 값을 customize 하고 싶다면 github 의 helm-chart values 값을 참고하여 추가 설정 후 설치를 진행하면 되겠습니다.

설치가 완료되면 pod 는 아래와 같이 api-serverfrontend 가 배포됩니다.

dtrack-pods

이외에도 service 도 아래와 같이 배포됩니다.

dtrack-services

default 설치로 별도의 service type 변경없이 진행하였기 때문에 fronendapi-server serviceClusterIP type 으로 배포가 됩니다.

AWS 나 다른 클라우드 환경에 구성한다면 LB 로 구성하면 되겠지만, 저는 local 환경이기에 port-forward 를 설정하여 접근해보도록 하겠습니다. port-forward 가 background 에서 실행되도록 아래 명령어를 이용합니다.

# OWASP Dependency-Track frontend
nohup kubectl -n dtrack port-forward dtrack-dependency-track-frontend-56b4df6cd6-968wm 48080:8080 &

# OWASP Dependency-Track api
nohup kubectl -n dtrack port-forward dtrack-dependency-track-api-server-0 58080:8080 &

그리고 backend 인 api-server 와의 원활한 통신을 위해 frontend.apiBaseUrl value값에 api-server 의 주소를 추가하여 배포해줍니다.

helm upgrade --install dtrack dependency-track/dependency-track --set frontend.apiBaseUrl="http://localhost:58080"

그리고 localhost:48080 으로 접속해봅니다.

dependency-track

최초 default 계정인 admin / admin 로 접속하여 최초 비번변경을 수행하고 로그인을 합니다.

dependency-track-dashboard

현재는 Project 연결된 것이 없어 깨끗한 대시보드인데요. 왼쪽 네비게이션바를 통해 대략적인 기능들을 알 수 있습니다.

MenuDescription
Projects조직의 프로젝트(어플리케이션) 관리
Components사용중인 모든 어플리케이션 구성요소 관리
VulnerabilitiesComponents 의 취약점 목록
Licenses사용중인 Components 의 라이선스 정보 관리
Vulnerability Audit취약점 분류 및 Audit 제공
Policy ManagementSecurity, Licenses, OP 관련 정책 설정 가능
Administration사용자 권한 관리, 시스템 설정등 포함

이제 Dependency-track 을 이용하여 Organization 의 모든 어플리케이션 구성요소들에 대한 식별과 취약점 관리를 할게 있게 되었습니다.

이제는 다양한 방법으로 CycloneDX 형식의 SBOM 을 수집할 수 있도록 CI/CD 를 이용하거나 별도의 generator 오픈소스를 구성하면 될듯합니다.

참고) Server 최소 요구 사항

Dependency-track 의 default values 설정에 따르면 최소 요구 사항 이 아래와 같습니다. 구축 환경에 따라 변경하거나 Resource 분배에 참고하면 좋을듯합니다.

CPU 요청: 2 CPU
메모리 요청: 5Gi
CPU 제한: 4 CPU
메모리 제한: 5Gi

Refs

Series NavigationDependency-track – kubernetes SBOM 수집하여 통합 관리 (feat. sbom-operator) >>

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Back To Top