SBOM docker, fosslight hub, scanner, jenkins

황제낙엽 2025.04.14 14:22 조회 수 : 25

sitelink1  
sitelink2  
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

Docker 컨테이너에 있는 FOSSLight Hub와 Scanner들을 외부의 Jenkins 서버에서 제어하는 방안은 여러 가지가 있으며, 각 방안은 복잡성, 보안, 유연성 측면에서 장단점을 가집니다.

몇 가지 주요 방안은 다음과 같습니다.

 

1. Docker CLI를 통한 제어:

  • 전제 조건: Jenkins 서버가 Docker 엔진이 실행 중인 호스트에 접근할 수 있어야 합니다 (SSH 접근 등). 또는 Docker API를 원격으로 노출해야 합니다 (보안상 주의 필요).
  • 방안: Jenkins 파이프라인 스크립트 또는 셸 스크립트 내에서 Docker CLI 명령어를 사용하여 컨테이너를 관리합니다.
    • 컨테이너 시작/중지/재시작: docker start <container_name>, docker stop <container_name>, docker restart <container_name>
    • Scanner 실행: docker exec <scanner_container_name> <scanner_command> <arguments>
    • 로그 확인: docker logs <container_name>
    • 상태 확인: docker ps -a
  • 장점: 비교적 간단하게 구현할 수 있으며, Docker의 모든 기능을 활용할 수 있습니다.
  • 단점:
    • Jenkins 서버에서 Docker 호스트에 대한 접근 권한을 관리해야 합니다 (보안 취약점 발생 가능성).
    • Docker API를 원격으로 노출하는 경우 보안에 더욱 신경 써야 합니다 (TLS 활성화, 접근 제어 등).
    • 복잡한 워크플로우를 관리하기 어려울 수 있습니다.

 

2. Docker API를 통한 제어:

  • 전제 조건: Docker API가 활성화되어 있고, Jenkins 서버에서 해당 API에 접근할 수 있어야 합니다.
  • 방안: Jenkins 파이프라인 스크립트 내에서 Docker API 클라이언트 라이브러리 (예: Python의 docker-py)를 사용하여 컨테이너를 제어합니다.
  • 장점: Docker CLI를 직접 사용하는 것보다 더 구조화된 방식으로 컨테이너를 관리할 수 있습니다.
  • 단점:
    • Docker API를 이해하고 클라이언트 라이브러리를 사용하는 방법에 대한 지식이 필요합니다.
    • 원격 API 접근 시 보안 설정 (TLS, 인증)이 필수적입니다.

 

3. Jenkins Docker 플러그인 활용:

  • 방안: Jenkins에는 Docker 관련 작업을 자동화하고 관리하는 다양한 플러그인 (예: Docker Pipeline, Docker Commons)이 있습니다. 이러한 플러그인을 활용하여 Docker 컨테이너를 생성, 시작, 중지하고 명령을 실행할 수 있습니다.
  • 장점: Jenkins UI와 통합되어 사용하기 편리하며, 파이프라인 스크립트 내에서 Docker 관련 작업을 더 추상화된 방식으로 처리할 수 있습니다. 보안 설정 및 컨테이너 관리를 위한 편리한 옵션을 제공할 수 있습니다.
  • 단점: 플러그인 설정 및 사용법을 익혀야 합니다.

 

4. 오케스트레이션 도구 활용 (Kubernetes, Docker Swarm):

  • 전제 조건: FOSSLight Hub와 Scanner들이 Kubernetes 또는 Docker Swarm과 같은 컨테이너 오케스트레이션 플랫폼 위에서 실행되고 있어야 합니다.
  • 방안: Jenkins에서 해당 오케스트레이션 도구의 CLI (예: kubectl, docker swarm) 또는 API를 사용하여 FOSSLight 컨테이너를 관리합니다. 예를 들어, Kubernetes Deployment의 스케일링을 조정하여 Scanner Pod의 수를 늘리거나 줄일 수 있습니다.
  • 장점: 컨테이너의 확장, 관리, 배포를 더욱 강력하고 유연하게 제어할 수 있습니다. 고가용성 및 로드 밸런싱 등의 기능을 활용할 수 있습니다.
  • 단점: 오케스트레이션 도구에 대한 깊이 있는 이해와 설정이 필요합니다. 아키텍처가 복잡해질 수 있습니다.

 

5. FOSSLight Hub API 활용:

  • 전제 조건: FOSSLight Hub가 API를 제공하여 Scanner 실행 및 결과 조회를 지원해야 합니다.
  • 방안: Jenkins 파이프라인 스크립트에서 HTTP 요청을 통해 FOSSLight Hub API를 호출하여 Scanner를 실행시키거나 상태를 확인하고 결과를 가져옵니다.
  • 장점: FOSSLight의 비즈니스 로직에 특화된 방식으로 제어가 가능하며, Docker 인프라에 대한 직접적인 접근 없이도 워크플로우를 구축할 수 있습니다.
  • 단점: FOSSLight Hub에 API가 구현되어 있어야 하며, API 사용법을 숙지해야 합니다.

 

추천 방안:

 

가장 일반적이고 권장되는 방안은 Jenkins Docker 플러그인을 활용하는 것입니다.

이는 Jenkins와의 통합이 잘 되어 있고, Docker 컨테이너 관리를 위한 편리한 기능을 제공하며, 보안 측면에서도 고려 사항을 제공할 수 있습니다.

 

만약 컨테이너 오케스트레이션 플랫폼을 이미 사용하고 있다면, 해당 플랫폼의 CLI 또는 API를 통해 제어하는 것도 강력한 방법입니다.

 

Docker CLI 또는 API를 직접 사용하는 방안은 간단한 경우에는 유용하지만, 보안 및 복잡한 워크플로우 관리 측면에서 주의가 필요합니다.

 

FOSSLight Hub API를 활용하는 방안은 FOSSLight의 기능에 특화된 제어를 제공하지만, Hub에 해당 API가 구현되어 있어야 한다는 전제 조건이 있습니다.

 

어떤 방안을 선택하든 보안을 최우선으로 고려해야 합니다.

Jenkins 서버에서 Docker 호스트에 대한 접근 권한을 최소화하고, 원격 API 접근 시에는 반드시 보안 설정을 적용해야 합니다.