InfoGrab Docs

보안 구성

요약

프로젝트별로 개별적으로 보안 스캐너를 구성하거나 여러 프로젝트가 공유하는 스캐너 구성을 만들 수 있습니다. 예를 들어, 동일한 보안 스캐닝 구성이 수동으로 적용된 10개의 프로젝트가 있는 경우, 단일 변경 사항을 10번 수행해야 합니다.

프로젝트별로 개별적으로 보안 스캐너를 구성하거나 여러 프로젝트가 공유하는 스캐너 구성을 만들 수 있습니다. 각 프로젝트를 수동으로 구성하면 최대한의 유연성을 제공하지만 규모가 커질수록 유지 관리가 어려워집니다. 여러 프로젝트나 그룹의 경우, 공유 스캐너 구성은 필요에 따라 일부 사용자 정의를 허용하면서 더 쉬운 관리를 제공합니다.

예를 들어, 동일한 보안 스캐닝 구성이 수동으로 적용된 10개의 프로젝트가 있는 경우, 단일 변경 사항을 10번 수행해야 합니다. 대신 공유 CI/CD 구성을 만들면 단일 변경 사항을 한 번만 수행하면 됩니다.

개별 프로젝트 구성#

개별 프로젝트에서 보안 스캐닝을 구성하려면 다음 중 하나를 수행합니다:

  • CI/CD 구성 파일을 편집합니다.
  • UI에서 CI/CD 구성을 편집합니다.

CI/CD 파일 사용#

개별 프로젝트의 보안 스캐닝을 수동으로 활성화하려면 다음 중 하나를 수행합니다:

  • 개별 보안 스캐너를 활성화합니다.
  • AutoDevOps를 사용하여 모든 보안 스캐너를 활성화합니다.

AutoDevOps는 대부분의 보안 스캐너를 활성화하는 최소한의 노력 경로를 제공합니다. 그러나 개별 보안 스캐너를 활성화하는 것과 비교하면 사용자 정의 옵션이 제한됩니다.

개별 보안 스캐너 활성화#

설정을 사용자 정의하는 옵션을 통해 개별 보안 스캐닝 도구를 활성화하려면 .gitlab-ci.yml 파일에 보안 스캐너의 템플릿을 포함합니다.

개별 보안 스캐너를 활성화하는 방법에 대한 지침은 해당 문서를 참조하십시오.

Auto DevOps를 사용한 보안 스캐닝 활성화#

기본 설정으로 다음 보안 스캐닝 도구를 활성화하려면 Auto DevOps를 활성화합니다:

Auto DevOps를 직접 사용자 정의할 수는 없지만, 프로젝트의 .gitlab-ci.yml 파일에 Auto DevOps 템플릿을 포함하고 필요에 따라 설정을 재정의할 수 있습니다.

UI 사용#

보안 구성 페이지를 사용하여 프로젝트의 보안 테스트 및 취약점 관리 설정을 보고 구성합니다.

보안 테스트 탭은 기본 브랜치의 가장 최근 커밋에서 CI/CD 파이프라인을 확인하여 각 보안 도구의 상태를 반영합니다.

활성화됨 : 보안 테스트 도구의 아티팩트가 파이프라인의 출력에서 발견되었습니다.

활성화되지 않음 : CI/CD 파이프라인이 없거나 보안 테스트 도구의 아티팩트가 파이프라인의 출력에서 발견되지 않았습니다.

보안 구성 페이지 보기#

프로젝트의 보안 구성을 보려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.

CI/CD 구성 파일의 변경 내역을 보려면 구성 기록을 선택합니다.

프로젝트의 보안 구성 편집#

사전 요구사항:

  • 프로젝트에 대한 Security Manager, Maintainer 또는 Owner 역할.

프로젝트의 보안 구성을 편집하려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
  3. 활성화하거나 구성하려는 보안 스캐너를 선택하고 지침을 따릅니다.

개별 보안 스캐너를 활성화하고 구성하는 방법에 대한 자세한 내용은 해당 문서를 참조하십시오.

공유 구성 만들기#

여러 프로젝트에 동일한 보안 스캐닝 구성을 적용하려면 다음 방법 중 하나를 사용합니다:

이러한 각 방법은 보안 스캐닝을 포함한 CI/CD 구성을 한 번 정의하고 여러 프로젝트와 그룹에 적용할 수 있게 합니다. 이러한 방법은 각 프로젝트를 개별적으로 구성하는 것보다 다음과 같은 여러 가지 이점이 있습니다:

  • 구성 변경은 각 프로젝트가 아닌 한 번만 수행하면 됩니다.
  • 구성 변경 권한이 제한되어 업무 분리를 제공합니다.

보안 스캐닝 사용자 정의#

요구 사항 및 환경에 맞게 보안 스캐닝을 사용자 정의할 수 있습니다. 개별 보안 스캐너를 사용자 정의하는 방법에 대한 자세한 내용은 해당 문서를 참조하십시오.

모범 사례#

보안 스캐닝 구성을 사용자 정의할 때:

  • 기본 브랜치에 변경 사항을 병합하기 전에 머지 리퀘스트를 사용하여 보안 스캐닝 도구의 모든 사용자 정의를 테스트합니다. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 많은 수의 거짓 양성이 포함될 수 있습니다.
  • 스캐닝 도구의 CI/CD 템플릿을 포함합니다. 템플릿의 내용을 복사하지 마십시오.
  • 필요한 경우에만 템플릿의 값을 재정의합니다. 다른 모든 값은 템플릿에서 상속됩니다.
  • 프로덕션 워크플로에는 각 템플릿의 안정적인 에디션을 사용합니다. 안정적인 에디션은 변경이 적고, 주요 GitLab 버전 사이에서만 호환성이 깨지는 변경이 이루어집니다. 최신 버전에는 가장 최근의 변경 사항이 포함되어 있지만 마이너 GitLab 버전 사이에서 중요한 변경이 있을 수 있습니다.

템플릿 에디션#

GitLab 애플리케이션 보안 도구에는 최대 두 가지 템플릿 에디션이 있습니다:

  • 안정적(Stable): 안정적인 템플릿이 기본값입니다. 신뢰할 수 있고 일관된 애플리케이션 보안 경험을 제공합니다. CI/CD 파이프라인에서 안정성과 예측 가능한 동작이 필요한 대부분의 사용자와 프로젝트에 안정적인 템플릿을 사용해야 합니다.
  • 최신(Latest): 최신 템플릿은 최첨단 기능에 액세스하고 테스트하려는 사람들을 위한 것입니다. 템플릿 이름에 latest라는 단어로 식별됩니다. 안정적이지 않으며 다음 주요 릴리스에 계획된 호환성이 깨지는 변경이 포함될 수 있습니다. 이 템플릿을 통해 안정적인 릴리스에 포함되기 전에 새 기능과 업데이트를 사용해볼 수 있습니다.
Note

동일한 프로젝트에서 보안 템플릿을 혼합하지 마십시오. 서로 다른 보안 템플릿 에디션을 혼합하면 머지 리퀘스트 파이프라인과 브랜치 파이프라인이 모두 실행될 수 있습니다.

기본 레지스트리 기본 주소 재정의#

기본적으로 GitLab 보안 스캐너는 Docker 이미지의 기본 주소로 registry.gitlab.com/security-products를 사용합니다. CI/CD 변수 SECURE_ANALYZERS_PREFIX를 다른 위치로 설정하여 대부분의 스캐너에 대해 이를 재정의할 수 있습니다. 이는 모든 스캐너에 동시에 영향을 미칩니다.

컨테이너 스캐닝 분析기는 예외이며 SECURE_ANALYZERS_PREFIX 변수를 사용하지 않습니다. Docker 이미지를 재정의하려면 오프라인 환경에서 컨테이너 스캐닝 실행 지침을 참조하십시오.

머지 리퀘스트 파이프라인에서 보안 스캐닝 도구 사용#

기본적으로 애플리케이션 보안 작업은 브랜치 파이프라인에서만 실행되도록 구성됩니다. 머지 리퀘스트 파이프라인에서 사용하려면 다음 중 하나를 수행합니다:

예를 들어, 머지 리퀘스트 파이프라인이 활성화된 SAST 및 의존성 스캐닝을 모두 실행하려면 다음 구성을 사용합니다:

include:
  - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  AST_ENABLE_MR_PIPELINES: "true"

사용자 정의 스캐닝 스테이지 사용#

보안 스캐너 템플릿은 기본적으로 미리 정의된 test 스테이지를 사용합니다. 다른 스테이지에서 실행되도록 하려면 .gitlab-ci.yml 파일의 stages: 섹션에 사용자 정의 스테이지의 이름을 추가합니다.

보안 작업 재정의에 대한 자세한 내용은 다음을 참조하십시오:

문제 해결#

보안 스캐닝을 구성할 때 다음 문제가 발생할 수 있습니다.

오류: chosen stage test does not exist#

파이프라인을 실행할 때 chosen stage test does not exist라는 오류가 발생할 수 있습니다.

이 문제는 보안 스캐닝 작업에서 사용하는 스테이지가 .gitlab-ci.yml 파일에 선언되지 않았을 때 발생합니다.

이를 해결하려면 다음 중 하나를 수행합니다:

  • .gitlab-ci.ymltest 스테이지를 추가합니다:

    stages:
      - test
      - unit-tests
    
    include:
      - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
      - template: Jobs/SAST.gitlab-ci.yml
      - template: Jobs/Secret-Detection.gitlab-ci.yml
    
    custom job:
      stage: unit-tests
      script:
        - echo "custom job"
    
  • 각 보안 작업의 기본 스테이지를 재정의합니다. 예를 들어 unit-tests라는 미리 정의된 스테이지를 사용하려면:

    stages:
      - unit-tests
    
    include:
      - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
        inputs:
          stage: unit-tests
      - template: Jobs/SAST.gitlab-ci.yml
      - template: Jobs/Secret-Detection.gitlab-ci.yml
    
    sast:
      stage: unit-tests
    
    .secret-analyzer:
      stage: unit-tests
    
    custom job:
      stage: unit-tests
      script:
        - echo "custom job"
    

보안 구성

Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

프로젝트별로 개별적으로 보안 스캐너를 구성하거나 여러 프로젝트가 공유하는 스캐너 구성을 만들 수 있습니다. 예를 들어, 동일한 보안 스캐닝 구성이 수동으로 적용된 10개의 프로젝트가 있는 경우, 단일 변경 사항을 10번 수행해야 합니다.

프로젝트별로 개별적으로 보안 스캐너를 구성하거나 여러 프로젝트가 공유하는 스캐너 구성을 만들 수 있습니다. 각 프로젝트를 수동으로 구성하면 최대한의 유연성을 제공하지만 규모가 커질수록 유지 관리가 어려워집니다. 여러 프로젝트나 그룹의 경우, 공유 스캐너 구성은 필요에 따라 일부 사용자 정의를 허용하면서 더 쉬운 관리를 제공합니다.

예를 들어, 동일한 보안 스캐닝 구성이 수동으로 적용된 10개의 프로젝트가 있는 경우, 단일 변경 사항을 10번 수행해야 합니다. 대신 공유 CI/CD 구성을 만들면 단일 변경 사항을 한 번만 수행하면 됩니다.

개별 프로젝트 구성#

개별 프로젝트에서 보안 스캐닝을 구성하려면 다음 중 하나를 수행합니다:

  • CI/CD 구성 파일을 편집합니다.
  • UI에서 CI/CD 구성을 편집합니다.

CI/CD 파일 사용#

개별 프로젝트의 보안 스캐닝을 수동으로 활성화하려면 다음 중 하나를 수행합니다:

  • 개별 보안 스캐너를 활성화합니다.
  • AutoDevOps를 사용하여 모든 보안 스캐너를 활성화합니다.

AutoDevOps는 대부분의 보안 스캐너를 활성화하는 최소한의 노력 경로를 제공합니다. 그러나 개별 보안 스캐너를 활성화하는 것과 비교하면 사용자 정의 옵션이 제한됩니다.

개별 보안 스캐너 활성화#

설정을 사용자 정의하는 옵션을 통해 개별 보안 스캐닝 도구를 활성화하려면 .gitlab-ci.yml 파일에 보안 스캐너의 템플릿을 포함합니다.

개별 보안 스캐너를 활성화하는 방법에 대한 지침은 해당 문서를 참조하십시오.

Auto DevOps를 사용한 보안 스캐닝 활성화#

기본 설정으로 다음 보안 스캐닝 도구를 활성화하려면 Auto DevOps를 활성화합니다:

Auto DevOps를 직접 사용자 정의할 수는 없지만, 프로젝트의 .gitlab-ci.yml 파일에 Auto DevOps 템플릿을 포함하고 필요에 따라 설정을 재정의할 수 있습니다.

UI 사용#

보안 구성 페이지를 사용하여 프로젝트의 보안 테스트 및 취약점 관리 설정을 보고 구성합니다.

보안 테스트 탭은 기본 브랜치의 가장 최근 커밋에서 CI/CD 파이프라인을 확인하여 각 보안 도구의 상태를 반영합니다.

활성화됨 : 보안 테스트 도구의 아티팩트가 파이프라인의 출력에서 발견되었습니다.

활성화되지 않음 : CI/CD 파이프라인이 없거나 보안 테스트 도구의 아티팩트가 파이프라인의 출력에서 발견되지 않았습니다.

보안 구성 페이지 보기#

프로젝트의 보안 구성을 보려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.

CI/CD 구성 파일의 변경 내역을 보려면 구성 기록을 선택합니다.

프로젝트의 보안 구성 편집#

사전 요구사항:

  • 프로젝트에 대한 Security Manager, Maintainer 또는 Owner 역할.

프로젝트의 보안 구성을 편집하려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 보안 > 보안 구성을 선택합니다.
  3. 활성화하거나 구성하려는 보안 스캐너를 선택하고 지침을 따릅니다.

개별 보안 스캐너를 활성화하고 구성하는 방법에 대한 자세한 내용은 해당 문서를 참조하십시오.

공유 구성 만들기#

여러 프로젝트에 동일한 보안 스캐닝 구성을 적용하려면 다음 방법 중 하나를 사용합니다:

이러한 각 방법은 보안 스캐닝을 포함한 CI/CD 구성을 한 번 정의하고 여러 프로젝트와 그룹에 적용할 수 있게 합니다. 이러한 방법은 각 프로젝트를 개별적으로 구성하는 것보다 다음과 같은 여러 가지 이점이 있습니다:

  • 구성 변경은 각 프로젝트가 아닌 한 번만 수행하면 됩니다.
  • 구성 변경 권한이 제한되어 업무 분리를 제공합니다.

보안 스캐닝 사용자 정의#

요구 사항 및 환경에 맞게 보안 스캐닝을 사용자 정의할 수 있습니다. 개별 보안 스캐너를 사용자 정의하는 방법에 대한 자세한 내용은 해당 문서를 참조하십시오.

모범 사례#

보안 스캐닝 구성을 사용자 정의할 때:

  • 기본 브랜치에 변경 사항을 병합하기 전에 머지 리퀘스트를 사용하여 보안 스캐닝 도구의 모든 사용자 정의를 테스트합니다. 그렇지 않으면 예상치 못한 결과가 발생할 수 있으며, 많은 수의 거짓 양성이 포함될 수 있습니다.
  • 스캐닝 도구의 CI/CD 템플릿을 포함합니다. 템플릿의 내용을 복사하지 마십시오.
  • 필요한 경우에만 템플릿의 값을 재정의합니다. 다른 모든 값은 템플릿에서 상속됩니다.
  • 프로덕션 워크플로에는 각 템플릿의 안정적인 에디션을 사용합니다. 안정적인 에디션은 변경이 적고, 주요 GitLab 버전 사이에서만 호환성이 깨지는 변경이 이루어집니다. 최신 버전에는 가장 최근의 변경 사항이 포함되어 있지만 마이너 GitLab 버전 사이에서 중요한 변경이 있을 수 있습니다.

템플릿 에디션#

GitLab 애플리케이션 보안 도구에는 최대 두 가지 템플릿 에디션이 있습니다:

  • 안정적(Stable): 안정적인 템플릿이 기본값입니다. 신뢰할 수 있고 일관된 애플리케이션 보안 경험을 제공합니다. CI/CD 파이프라인에서 안정성과 예측 가능한 동작이 필요한 대부분의 사용자와 프로젝트에 안정적인 템플릿을 사용해야 합니다.
  • 최신(Latest): 최신 템플릿은 최첨단 기능에 액세스하고 테스트하려는 사람들을 위한 것입니다. 템플릿 이름에 latest라는 단어로 식별됩니다. 안정적이지 않으며 다음 주요 릴리스에 계획된 호환성이 깨지는 변경이 포함될 수 있습니다. 이 템플릿을 통해 안정적인 릴리스에 포함되기 전에 새 기능과 업데이트를 사용해볼 수 있습니다.
Note

동일한 프로젝트에서 보안 템플릿을 혼합하지 마십시오. 서로 다른 보안 템플릿 에디션을 혼합하면 머지 리퀘스트 파이프라인과 브랜치 파이프라인이 모두 실행될 수 있습니다.

기본 레지스트리 기본 주소 재정의#

기본적으로 GitLab 보안 스캐너는 Docker 이미지의 기본 주소로 registry.gitlab.com/security-products를 사용합니다. CI/CD 변수 SECURE_ANALYZERS_PREFIX를 다른 위치로 설정하여 대부분의 스캐너에 대해 이를 재정의할 수 있습니다. 이는 모든 스캐너에 동시에 영향을 미칩니다.

컨테이너 스캐닝 분析기는 예외이며 SECURE_ANALYZERS_PREFIX 변수를 사용하지 않습니다. Docker 이미지를 재정의하려면 오프라인 환경에서 컨테이너 스캐닝 실행 지침을 참조하십시오.

머지 리퀘스트 파이프라인에서 보안 스캐닝 도구 사용#

기본적으로 애플리케이션 보안 작업은 브랜치 파이프라인에서만 실행되도록 구성됩니다. 머지 리퀘스트 파이프라인에서 사용하려면 다음 중 하나를 수행합니다:

예를 들어, 머지 리퀘스트 파이프라인이 활성화된 SAST 및 의존성 스캐닝을 모두 실행하려면 다음 구성을 사용합니다:

include:
  - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  AST_ENABLE_MR_PIPELINES: "true"

사용자 정의 스캐닝 스테이지 사용#

보안 스캐너 템플릿은 기본적으로 미리 정의된 test 스테이지를 사용합니다. 다른 스테이지에서 실행되도록 하려면 .gitlab-ci.yml 파일의 stages: 섹션에 사용자 정의 스테이지의 이름을 추가합니다.

보안 작업 재정의에 대한 자세한 내용은 다음을 참조하십시오:

문제 해결#

보안 스캐닝을 구성할 때 다음 문제가 발생할 수 있습니다.

오류: chosen stage test does not exist#

파이프라인을 실행할 때 chosen stage test does not exist라는 오류가 발생할 수 있습니다.

이 문제는 보안 스캐닝 작업에서 사용하는 스테이지가 .gitlab-ci.yml 파일에 선언되지 않았을 때 발생합니다.

이를 해결하려면 다음 중 하나를 수행합니다:

  • .gitlab-ci.ymltest 스테이지를 추가합니다:

    stages:
      - test
      - unit-tests
    
    include:
      - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
      - template: Jobs/SAST.gitlab-ci.yml
      - template: Jobs/Secret-Detection.gitlab-ci.yml
    
    custom job:
      stage: unit-tests
      script:
        - echo "custom job"
    
  • 각 보안 작업의 기본 스테이지를 재정의합니다. 예를 들어 unit-tests라는 미리 정의된 스테이지를 사용하려면:

    stages:
      - unit-tests
    
    include:
      - template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
        inputs:
          stage: unit-tests
      - template: Jobs/SAST.gitlab-ci.yml
      - template: Jobs/Secret-Detection.gitlab-ci.yml
    
    sast:
      stage: unit-tests
    
    .secret-analyzer:
      stage: unit-tests
    
    custom job:
      stage: unit-tests
      script:
        - echo "custom job"