Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • GitLab은 무단 액세스, 데이터 유출, 서비스 거부 등으로 이어질 수있는 수 있는 보안 취약점에 대해 애플리케이션을 확인할 수 있습니다. 

  • GitLab은 병합 요청에서 취약점을 보고하므로 병합하기 전에 수정할 수 있습니다. 

  • 보안 대시보드 프로젝트, 파이프 라인 및 그룹에서 발견된 취약점에 대한 높은 수준의 보기를 제공합니다. 

  • 위협 모니터링 페이지는 애플리케이션 환경에 대한 런타임 보안 측정을 제공합니다. 제공된 정보를 통해 위험 분석 및 치료를 즉시 시작할 수 있습니다.

    • GitLab은 다음 도구를 사용하여 프로젝트에서 발견 된 알려진 취약점을 스캔하고 보고합니다.

...

  • GitLab CI / CD를 사용하는 경우 컨테이너에 대한 취약점 정적 분석을위한 두 가지 오픈 소스 도구 인 Clair 및 klar 를 사용하여 알려진 취약점에 대한 Docker 이미지(또는 컨테이너)를 확인할 수 있습니다 있습니다.

  • 기존 파일gitlab-ci.yml에 CI 작업을 포함 시키거나 Auto DevOps에서 제공하는 자동 컨테이너 검색을 통해 컨테이너 검색을 활용할 수 있습니다 있습니다.

  • GitLab은 컨테이너 검색 보고서를 확인하고 소스와 대상 분기 사이에서 발견 된 발견된 취약점을 비교하고 병합 요청에 대한 정보를 보여줍니다.

...

  • 환경 변수를 변경하려면 의 variables 매개 변수를 사용하여 컨테이너 검색 설정을 변경할 수 있습니다. 

  • 컨테이너 변수는 환경 변수를 사용하여 구성할 수 있습니다.

    • .gitlab-ci.yml

환경 변수

기술

기본

KLAR_TRACE

klar에서 자세한 출력을 사용하려면 true로 설정

"false"

CLAIR_TRACE

clair 서버 프로세스에서 자세한 출력을 사용하려면 true로 설정

"false"

DOCKER_USER

인증이 필요한 Docker 레지스트리에 액세스 하기위한 사용자 이름

$CI_REGISTRY_USER

DOCKER_PASSWORD

인증이 필요한 Docker 레지스트리에 액세스 하기위한 비밀번호

$CI_REGISTRY_PASSWORD

CLAIR_OUTPUT

심각도 수준 임계값이 이상의 심각도를 가진 취약점이 출력됩니다. 지원 하는 설정값은 Unknown, Negligible, 
Low, Medium, High, Critical, Defcon1

Unknown

REGISTRY_INSECURE

Klar가 안전하지 않은 레지스트리에 액세스하도록 허용
(HTTP만 해당) 이미지를 로컬에서 테스트 할 때만 true로 설정

"false"

DOCKER_INSECURE

Klar가 잘못된 (또는 자체 서명된) SSL 인증서가 있는 HTTPS를 사용하여 보안 Docker 레지스트리에 액세스하도록 허용

"false"

CLAIR_VULNERABILITIES_DB_URL

(CLAIR_DB_CONNECTION_STRING를 사용하는 대신 사용되지 않음) 이 변수는 명시 적으로 설정되어 서비스 섹션의 Container-Scanning.gitlab-ci.yml에 파일을 기본값으로 지정되고, clairvulnerabilities-db 값은 취약성 정의를 호스팅을 
하는 PostgreSQL 서버의 실행중인 주소를 나타내며, 이미지를 로컬로 실행하지 않는 한 변경해서는 안됨.

clair-vulnerabilities-db

CLAIR_DB_CONNECTION_STRING

취약성 정의 데이터베이스를 호스팅 하는 PostgreSQL 서버에 대한 연결 문자열 을 나타내며 이미지를 로컬로 실행하지 않는 한 변경해서는 안됨.  연결 문자열의 호스트 값은 템플릿 파일 Container-Scanning.gitlab-ci.yml 의 별칭 값과 일치해야 하며 기본값은 clair-vulnerabilities-db입니다.

postgresql://postgres:password@clair-vulnerabilities-db:5432/postgres?sslmode=disable&statement_timeout=60000

CI_APPLICATION_REPOSITORY

스캔 할 이미지의 Docker 리포지토리 URL

$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG

CI_APPLICATION_TAG

스캔 할 이미지의 Docker 리포지토리 태그

$CI_COMMIT_SHA

CLAIR_DB_IMAGE

취약점 정의를 호스팅하는 PostgreSQL 서버의 Docker 이미지 이름 및 태그, 통합 테스트 목적으로 일관된 취약성 세트를 제공하거나 온 프레미스 오프라인 설치를 위해 로컬로 호스팅 된 취약성 데이터베이스를 참조하기 위해이 값을 특정 버전으로 대체하는 것이 유용 할 수 있습니다.

arminc/clair-db:latest

CLAIR_DB_IMAGE_TAG

(CLAIR_DB_IMAGE를 사용하는 대신 사용되지 않음)도커 이미지 태그 취약점 정의를 호스팅 PostgreSQL 서버를 통합 테스트 목적으로 일관된 취약성을 제공하기 위해 이 값을 특정 버전으로 재정의하는 것이 유용할 수 있습니다.

latest

DOCKERFILE_PATH

Dockerfile 수정 사항을 생성하는 데 사용될 경로 입니다. 기본적으로 스캐너는 Dockerfile 프로젝트의 루트 디렉토리에 이름이 지정된 파일을 검색하므로 이 변수는 Dockerfile하위 디렉토리와 같은 비표준 위치에 있는 경우에만 구성해야 합니다.

Dockerfile

ADDITIONAL_CA_CERT_BUNDLE

신뢰할 수 있는 CA 인증서 번들

...

  • 표시된 종속성은 이름별로 정렬됩니다. 또한 설치된 패키지 또는 알려진 취약점의 심각도 별로 정렬 할 수 있습니다.

  • 종속성에 알려진 취약점이있는 경우 해당 종속성의 Status셀을 클릭하여 볼 수 있습니다. 그러면 각 취약점의 심각도와 설명이 아래에 표시됩니다.

  • Vulnerable components탭 아래 에 알려진 취약점이있는 종속성 만 표시 하는 두 번째 목록이 있습니다 있습니다. 없는
    없는 경우이 탭은 비활성화됩니다.

    • 필드 별 설명

Field

Description

Status

종속성에 알려진 취약점이 있는지 여부를 표시

Component

의존성 이름

Version

프로젝트가 사용하는 종속성의 정확한 locked 버전

Packager

패키지를 설치하는데 사용된 패키지

Location

종속성을 선언한 프로젝트의 패키지 프로그램 특정 잠금 파일에 댛나 링크

License

종속성의 소프트웨어 라이센스에 대한 링크

...

  • 종속성 검색 작업을 실행하려면 기본적으로 권한 모드에서 docker또는 kubernetes실행 프로그램이 실행중인 GitLab Runner가 필요 합니다필요합니다. GitLab.com에서 공유 러너를 사용하는 경우 기본적으로 활성화됩니다.

...

  • 환경 변수를 통해 종속성 스캔 설정을 변경할 수 있습니다 있습니다.

    • .gitlab-ci.yml 파일에 variables매개변수를 사용하여 전역 종속성 검색 설정을 구성

...

환경 변수

분석기

기본

기술

GEMNASIUM_DB_LOCAL_PATH

gemnasium

/gemnasium-db

로컬 gemnasium 데이터베이스의 경로

GEMNASIUM_DB_REMOTE_URL

gemnasium

https://gitlab.com/gitlab-org/security-products/gemnasium-db.git

gemnasium 데이터베이스를 가져 오기위한 저장소 URL

GEMNASIUM_DB_REF_NAME

gemnasium

master

원격 저장소 데이터베이스의 분기 이름 이름GEMNASIUM_DB_REMOTE_URL필요

DS_REMEDIATE

gemnasium

"true"

취약한 종속성을 자동으로 치료할 수 있음

PIP_INDEX_URL

gemnasium-python

https://pypi.org/simple

Python 패키지 색인의 기본 URL

PIP_EXTRA_INDEX_URL

gemnasium-python

 

PIP_INDEX_URL 에 추가로 사용할 패키지 색인 의 추가 URL 배열로 쉼표로 구분

PIP_REQUIREMENTS_FILE

gemnasium-python

 

스캔 할 핍 요구 사항 파일.

DS_PIP_VERSION

gemnasium-python

 

특정 pip 버전을 강제로 설치하지 않으면 예) "19.3"Docker 이미지에 설치된 pip가 사용됩니다. (GitLab 12.7에서 도입)

DS_PIP_DEPENDENCY_PATH

gemnasium-python

 

Python pip 종속성을 로드하는 경로 (GitLab 12.2에서 도입)

DS_PYTHON_VERSION

retire.js

 

파이썬의 버전.2로 설정하면 Python 3.6 대신 Python 2.7을 사용하여 종속성이 설치됨 (GitLab 12.1에서 도입)

MAVEN_CLI_OPTS

gemnasium-maven

"-DskipTests --batch-mode"

maven분석기가 전달할 명령 행 인수 목록, 개인 저장소 사용에 대한 예제를 참조

BUNDLER_AUDIT_UPDATE_DISABLED

bundler-audit

"false"

bundler-audit분석기의 자동 업데이트를 비활성화하고 Air-Gapped 오프라인 환경에서 종속성 검색을 실행하는 경우에 유용

BUNDLER_AUDIT_ADVISORY_DB_URL

bundler-audit

https://github.com/rubysec/ruby-advisory-db

bundler-audit에서 사용하는 권고 데이터베이스의 URL

BUNDLER_AUDIT_ADVISORY_DB_REF_NAME

bundler-audit

master

BUNDLER_AUDIT_ADVISORY_DB_URL 지정된 권고 데이터베이스에 대한 Git 참조

RETIREJS_JS_ADVISORY_DB

retire.js

https://raw.githubusercontent.com/RetireJS/retire.js/master/repository/jsrepository.json

retire.js 노드 취약점 데이터 파일의 경로나 URL, 데이터 파일을 호스팅하는 URL이고 사용자 정의 SSL 인증서를 오프라인 설치를 사용하는 경우에는 아래 환경 변수에 인증서를 전달ADDITIONAL_CA_CERT_BUNDLE

RETIREJS_NODE_ADVISORY_DB

retire.js

https://raw.githubusercontent.com/RetireJS/retire.js/master/repository/npmrepository.json

retire.js노드 취약성 데이터 파일의 경로 또는 URL 데이터 파일을 호스팅하는 URL이 사용자 정의 SSL 인증서를 오프라인 설치를 사용하는 경우에는 아래 환경 변수에 인증서를 전달ADDITIONAL_CA_CERT_BUNDLE

RETIREJS_ADVISORY_DB_INSECURE

retire.js

false

안전하지 않거나 자체 서명 된 SSL (TLS) 인증서를 사용하여 호스트에서 원격 JS 및 노드 취약성 데이터 파일 ( RETIREJS_JS_ADVISORY_DB및 RETIREJS_NODE_ADVISORY_DB변수로 정의)을 패치

...

  • <analyzer-name>-dependency_scanningCI / CD 파이프 라인에서 실행되는 각 분석기마다 개별 작업이 생성

  • 제거함으로써 GitLab은 Linguist 를 사용하여 오케스트레이터 대신 탐지 된 리포지토리 언어에 따라 관련 분석기를 시작.

보안 대시 보드

  • 보안 대시 보드는 그룹, 프로젝트 및 파이프 라인의 모든 보안 취약성에 대한 개요를 얻을 수 있습니다.

  • 취약성을 분석하고 추가 정보를 얻고, 어떤 프로젝트에서 왔는지, 파일에 포함 된 파일 및 다양한 메타 데이터를 확인하여 위험을 분석할 수 있습니다. 

  • 취약점을 악용하여 문제를 생성하거나 해제함으로써 이러한 취약점에 대한 조치를 취할 수 있습니다.

  • 보안 대시 보드를 활용하려면 먼저 보안 보고서 중 하나를 구성해야 합니다.

  • 인스턴스, 그룹, 프로젝트 또는 파이프 라인 보안 대시 보드를 사용하려면 아래와 같이 구성해야 합니다.

    • 지원되는 보고서 중 하나 이상으로 그룹 내의 프로젝트를 하나 이상 구성.

    • 구성된 작업은 새 reports구문으로 사용.

    • GitLab Runner 11.5 이상을 사용.

    • GitLab.com 에서 공유 러너를 사용하고 있다면 이미 구성되어 있음.

1. 파이프 라인 보안

  • 파이프 라인 수준에서 보안 섹션에는 파이프 라인이 실행 된 프로젝트 분기에 존재하는 취약성이 표시됨.

  • 보안 결과를 보려면 Security 탭을 클릭.

...

2. 프로젝트 보안 대시 보드

  • 프로젝트 수준에서 보안 대시 보드는 마지막으로 성공한 파이프 라인의 프로젝트에 대한 최신 보안 보고서를 표시합니다. 표시하고 이를 사용하여 default branch에 영향을 미치는 취약성을 찾아 수정.

...


3. 그룹 보안 대시 보드

보안 대시 보드 그룹은 그룹 및 하위 그룹에있는 모든 프로젝트의 취약성에 대한 개요를 제공합니다.

  • 먼저 그룹의 Security 탭 아래에있는 보안 대시 보드로 이동 이동. 

  • 대시 보드에 있으면 맨 위에 다음에 대한 일련의 필터가 표시됩니다.

    • 심각성

    • 자신

    • 보고서 유형

    • 계획

  • 필터 오른쪽에 Hide dismissed 토글 버튼이 표시됩니다.

  • 대시보드에는 마지막으로 성공한 프로젝트 파이프 라인에 따라 그룹에서 보안 보고서가 활성화 된 프로젝트만 표시됩니다.

...

  • 인스턴스 수준에서 보안 대시 보드에는 추가 한 모든 프로젝트에 존재하는 취약성이 표시됩니다. 

  • 그룹 보안 대시 보드 의 모든 기능이 포함됩니다 포함됩니다.

  • 페이지 상단의 메뉴 표시 줄에서 인스턴스 보안 대시 보드에 액세스 할 수 있습니다.

    • More - Security

...

  • 보안 대시 보드는 default branch에 최신 보안 검색 결과의 정보를 표시합니다. 즉, 지점이 업데이트 될 때마다 보안 검색이 수행됩니다.

  • 기본 분기가 자주 업데이트되지 않으면 검색이 자주 실행되지 않고 새로운 취약성이 발견 될 때 보안 대시 보드의 정보가 오래될 수 있습니다.

  • 보안 대시보드의 정보가 정기적으로 업데이트 되도록하려면 매일 보안 검색을 실행 하도록 예약 된 파이프 라인을 구성하면 기본 분기 업데이트 빈도에 관계없이 보안 대시 보드에 표시되는 정보가 업데이트됩니다.

    • 이렇게하면 코드를 변경하지 않아도 보고서가 작성됩니다.