- SCA
• SCA (Software Composition Analysis)
• Open so... – OWASP Dependency-track 구축 - Dependency-track – kubernetes SBOM 수집하여 통합 관리 (feat. sbom-operator)
소개
Open Source 의 활용이 증가 함에따라 보안적으로 SCA(Security Composition Analysis) 의 중요성이 커지고 있습니다. SCA
• SCA (Software Composition Analysis)
• Open so... 를 이용하면 Open Source 라이브러리와 같은 어플리케이션 구성요소에서 발생할 수 있는 취약점들을 식별하고 관리하여 보안적으로 강화된 어플리케이션 배포를 가능하게 해줍니다.
SCA
• SCA (Software Composition Analysis)
• Open so... 를 위한 오픈소스나 상용 제품들이 많이 존재하는데 그 중 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 툴을 이용한 통합도 가능합니다.
출처: https://owasp.org/www-project-dependency-track/
OWASP Dependency-track 설치
OWASP Dependency-track 는 다양한 환경에서 설치할 수 있도록 지원을 해주고 있는데요. 이번에는 kuberntes 의 별도 namespace 에 helm-chart 를 이용하여 설치해 보려합니다..
kubernetes 에 설치를 하게 되면 아래와 같이 구성이 됩니다.
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-server
와 frontend
가 배포됩니다.
이외에도 service 도 아래와 같이 배포됩니다.
default 설치로 별도의 service type 변경없이 진행하였기 때문에 fronend
와 api-server service
는 ClusterIP
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
으로 접속해봅니다.
최초 default 계정인 admin
/ admin
로 접속하여 최초 비번변경을 수행하고 로그인을 합니다.
현재는 Project 연결된 것이 없어 깨끗한 대시보드인데요. 왼쪽 네비게이션바를 통해 대략적인 기능들을 알 수 있습니다.
Menu | Description |
---|---|
Projects | 조직의 프로젝트(어플리케이션) 관리 |
Components | 사용중인 모든 어플리케이션 구성요소 관리 |
Vulnerabilities | Components 의 취약점 목록 |
Licenses | 사용중인 Components 의 라이선스 정보 관리 |
Vulnerability Audit | 취약점 분류 및 Audit 제공 |
Policy Management | Security, Licenses, OP 관련 정책 설정 가능 |
Administration | 사용자 권한 관리, 시스템 설정등 포함 |
이제 Dependency-track 을 이용하여 Organization 의 모든 어플리케이션 구성요소들에 대한 식별과 취약점 관리를 할게 있게 되었습니다.
이제는 다양한 방법으로 CycloneDX
형식의 SBOM
• Software Bill of Materials
• Application 에 ... 을 수집할 수 있도록 CI/CD 를 이용하거나 별도의 generator 오픈소스를 구성하면 될듯합니다.
참고) Server 최소 요구 사항
Dependency-track 의 default values 설정에 따르면 최소 요구 사항 이 아래와 같습니다. 구축 환경에 따라 변경하거나 Resource 분배에 참고하면 좋을듯합니다.
CPU 요청: 2 CPU
메모리 요청: 5Gi
CPU 제한: 4 CPU
메모리 제한: 5Gi
Refs
- OWASP Dependency-Track
- Github – OWASP Dependency-Track Helm-Chart
- Github – OWASP Dependency-Track Helm-Chart Values
- OWASP Dependency-Track Docs
- PostgreSQL Helm-Chart