InfoGrab DocsInfoGrab Docs

튜토리얼: 파이프라인 시크릿 탐지로 프로젝트 보호

요약

애플리케이션이 외부 리소스를 사용하는 경우, 일반적으로 토큰이나 키 같은 시크릿으로 애플리케이션을 인증해야 합니다. 파이프라인 시크릿 탐지는 CI/CD job을 사용하여 GitLab 프로젝트에서 시크릿을 확인합니다. 이 튜토리얼을 시작하기 전에 다음이 있는지 확인합니다:

애플리케이션이 외부 리소스를 사용하는 경우, 일반적으로 토큰이나 키 같은 시크릿으로 애플리케이션을 인증해야 합니다. 시크릿이 원격 리포지터리에 push되면, 리포지터리에 액세스할 수 있는 누구나 사용자 또는 애플리케이션을 가장할 수 있습니다.

파이프라인 시크릿 탐지는 CI/CD job을 사용하여 GitLab 프로젝트에서 시크릿을 확인합니다. 이 튜토리얼에서는 프로젝트를 만들고, 파이프라인 시크릿 탐지를 구성하고, 결과를 분석하는 방법을 알아봅니다:

시작하기 전에#

이 튜토리얼을 시작하기 전에 다음이 있는지 확인합니다:

  • GitLab.com 계정. 파이프라인 시크릿 탐지의 모든 기능을 활용하려면 Ultimate 계정이 있는 경우 해당 계정을 사용하는 것이 좋습니다.

  • CI/CD에 대한 기본적인 친숙함.

프로젝트 만들기#

먼저 프로젝트를 만들고 시크릿 탐지를 활성화합니다:

  • 오른쪽 상단 모서리에서 새로 만들기 ( 더하기 )를 선택한 다음 새 프로젝트/리포지터리를 선택합니다.

  • 빈 프로젝트 만들기를 선택합니다.

  • 프로젝트 세부 정보를 입력합니다:

이름과 프로젝트 슬러그를 입력합니다.

  • 프로젝트 배포 대상(선택 사항) 드롭다운 목록에서 계획된 배포 없음을 선택합니다.

  • README로 리포지터리 초기화 체크박스를 선택합니다. 이렇게 하면 나중에 프로젝트에 콘텐츠를 추가할 수 있습니다.

  • 시크릿 탐지 활성화 체크박스를 선택합니다.

  • 프로젝트 만들기를 선택합니다.

새 프로젝트가 만들어지고 README 및 .gitlab-ci.yml 파일로 초기화됩니다. CI/CD 구성에는 Security/Secret-Detection.gitlab-ci.yml 템플릿이 포함되며, 이를 통해 프로젝트에서 파이프라인 시크릿 탐지가 활성화됩니다.

job 출력 확인#

파이프라인 시크릿 탐지는 secret_detection이라는 CI/CD job에서 실행됩니다. 스캔 결과는 CI/CD job 로그에 기록됩니다. 각 스캔은 job 아티팩트로 포괄적인 보고서도 생성합니다.

가장 최근 스캔 결과를 확인하려면:

  • 왼쪽 사이드바에서 빌드 > Job을 선택합니다.

  • 가장 최근 secret_detection job을 선택합니다. 새 파이프라인을 실행하지 않은 경우 job이 하나만 있어야 합니다.

  • 로그 출력에서 다음을 확인합니다:

분석기 버전 및 규칙 세트를 포함한 스캔에 대한 정보. 시크릿 탐지를 자동으로 활성화했으므로 프로젝트는 기본 규칙 세트를 사용합니다.

  • 시크릿이 감지되었는지 여부. no leaks found가 표시되어야 합니다.

  • 전체 보고서를 다운로드하려면 Job 아티팩트에서 다운로드를 선택합니다.

머지 리퀘스트 파이프라인 활성화#

지금까지 파이프라인 시크릿 탐지를 사용하여 기본 브랜치의 커밋을 스캔했습니다. 그러나 기본 브랜치로 머지하기 전에 머지 리퀘스트의 커밋을 분석하려면 머지 리퀘스트 파이프라인을 활성화해야 합니다.

이를 위해:

.gitlab-ci.yml 파일에 다음 줄을 추가합니다:

variables:
  AST_ENABLE_MR_PIPELINES: "true"

변경 사항을 저장하고 프로젝트의 main 브랜치에 커밋합니다.

가짜 시크릿 추가#

다음으로, 머지 리퀘스트에서 가짜 시크릿을 “유출”하여 job 출력을 복잡하게 만들어 봅니다:

새 브랜치를 체크아웃합니다:

git checkout -b pipeline-sd-tutorial

프로젝트 README를 편집하고 다음 줄을 추가합니다. 개인 액세스 토큰의 정확한 형식과 일치하도록 - 앞뒤의 공백을 제거해야 합니다:

# To make the example work, remove
# the spaces before and after the dash:
glpat - 12345678901234567890

변경 사항을 커밋하고 push한 다음 기본 브랜치로 머지하기 위한 머지 리퀘스트를 엽니다.

머지 리퀘스트 파이프라인이 자동으로 실행됩니다.

파이프라인이 완료될 때까지 기다린 다음 job 로그를 확인합니다. WRN leaks found: 1이 표시되어야 합니다.

job 아티팩트를 다운로드하고 다음 정보가 포함되어 있는지 확인합니다:

시크릿 유형. 이 예시에서 유형은 "GitLab personal access token"입니다.

시크릿의 용도 설명 및 유출을 복구하기 위한 단계.

유출의 심각도. 개인 액세스 토큰은 GitLab.com에서 사용자를 가장하는 데 사용될 수 있으므로 이 유출은 Critical입니다.

시크릿의 원시 텍스트.

시크릿이 위치한 곳에 대한 정보:

"file": "README.md",
"line_start": 97,
"line_end": 97,

이 예시에서 시크릿은 README.md 파일의 97번째 줄에 있습니다.

머지 리퀘스트 보고서 사용#

  • Tier: Ultimate
    

기본 브랜치가 아닌 브랜치에서 감지된 시크릿을 “발견”이라고 합니다. 발견이 기본 브랜치에 머지되면 “취약점”이 됩니다.

머지 리퀘스트 보고서 탭은 머지 리퀘스트가 머지될 경우 취약점이 될 수 있는 보안 스캔 발견 목록을 표시합니다.

발견을 보려면:

  • 이전 단계에서 만든 머지 리퀘스트를 선택합니다.

  • 보고서 탭을 선택합니다.

  • Security scan을 선택합니다.

  • 표시된 정보를 검토합니다. Secret detection이 새로운 잠재적 취약점 1개를 감지했습니다가 표시되어야 합니다.

머지 리퀘스트의 모든 발견에 대한 자세한 보기를 보려면 모든 파이프라인 발견 보기를 선택합니다.

시크릿 분류#

  • Tier: Ultimate
    

GitLab Ultimate에서 job 출력은 다음에도 기록됩니다:

  • 파이프라인의 Security 탭.

  • 발견이 취약점이 되면 취약점 보고서.

UI를 사용하여 시크릿을 분류하는 방법을 보여주기 위해 취약점을 만들고 취약점 보고서에서 상태를 변경해 봅니다:

마지막 단계에서 만든 MR을 머지한 다음 파이프라인이 완료될 때까지 기다립니다.

가짜 시크릿이 main에 추가되어 발견이 취약점이 됩니다.

왼쪽 사이드바에서 Secure > 취약점 보고서를 선택합니다.

취약점의 설명을 선택하여 다음을 봅니다:

시크릿 유형에 대한 세부 정보.

  • 복구 안내.

  • 취약점이 감지된 시기 및 위치에 대한 정보.

취약점 편집 > 상태 변경을 선택합니다.

상태 드롭다운 목록에서 테스트에 사용됨으로 무시를 선택합니다.

  • 프로젝트에 가짜 시크릿을 추가한 이유를 설명하는 댓글을 추가합니다.

  • 상태 변경을 선택합니다.

취약점은 더 이상 취약점 보고서 첫 페이지에 나타나지 않습니다.

유출 복구#

시크릿을 원격 리포지터리에 추가하면 해당 시크릿은 더 이상 안전하지 않으며 가능한 한 빨리 폐기해야 합니다. 기본 브랜치에 머지되지 않은 경우에도 시크릿을 폐기하고 교체해야 합니다.

유출을 복구하기 위해 취해야 할 정확한 단계는 조직의 보안 정책에 따라 다르지만, 최소한 다음을 수행해야 합니다:

  • 시크릿을 폐기합니다. 시크릿이 폐기되면 더 이상 유효하지 않으며 합법적인 활동을 가장하는 데 사용할 수 없습니다.

  • 리포지터리에서 시크릿을 제거합니다.

특정 복구 안내는 secret-detection job 로그에 기록되며 취약점 보고서 세부 정보 페이지에서 볼 수 있습니다.

튜토리얼: 파이프라인 시크릿 탐지로 프로젝트 보호

GitLab v19.2
원문 보기
요약

애플리케이션이 외부 리소스를 사용하는 경우, 일반적으로 토큰이나 키 같은 시크릿으로 애플리케이션을 인증해야 합니다. 파이프라인 시크릿 탐지는 CI/CD job을 사용하여 GitLab 프로젝트에서 시크릿을 확인합니다. 이 튜토리얼을 시작하기 전에 다음이 있는지 확인합니다:

애플리케이션이 외부 리소스를 사용하는 경우, 일반적으로 토큰이나 키 같은 시크릿으로 애플리케이션을 인증해야 합니다. 시크릿이 원격 리포지터리에 push되면, 리포지터리에 액세스할 수 있는 누구나 사용자 또는 애플리케이션을 가장할 수 있습니다.

파이프라인 시크릿 탐지는 CI/CD job을 사용하여 GitLab 프로젝트에서 시크릿을 확인합니다. 이 튜토리얼에서는 프로젝트를 만들고, 파이프라인 시크릿 탐지를 구성하고, 결과를 분석하는 방법을 알아봅니다:

시작하기 전에#

이 튜토리얼을 시작하기 전에 다음이 있는지 확인합니다:

  • GitLab.com 계정. 파이프라인 시크릿 탐지의 모든 기능을 활용하려면 Ultimate 계정이 있는 경우 해당 계정을 사용하는 것이 좋습니다.

  • CI/CD에 대한 기본적인 친숙함.

프로젝트 만들기#

먼저 프로젝트를 만들고 시크릿 탐지를 활성화합니다:

  • 오른쪽 상단 모서리에서 새로 만들기 ( 더하기 )를 선택한 다음 새 프로젝트/리포지터리를 선택합니다.

  • 빈 프로젝트 만들기를 선택합니다.

  • 프로젝트 세부 정보를 입력합니다:

이름과 프로젝트 슬러그를 입력합니다.

  • 프로젝트 배포 대상(선택 사항) 드롭다운 목록에서 계획된 배포 없음을 선택합니다.

  • README로 리포지터리 초기화 체크박스를 선택합니다. 이렇게 하면 나중에 프로젝트에 콘텐츠를 추가할 수 있습니다.

  • 시크릿 탐지 활성화 체크박스를 선택합니다.

  • 프로젝트 만들기를 선택합니다.

새 프로젝트가 만들어지고 README 및 .gitlab-ci.yml 파일로 초기화됩니다. CI/CD 구성에는 Security/Secret-Detection.gitlab-ci.yml 템플릿이 포함되며, 이를 통해 프로젝트에서 파이프라인 시크릿 탐지가 활성화됩니다.

job 출력 확인#

파이프라인 시크릿 탐지는 secret_detection이라는 CI/CD job에서 실행됩니다. 스캔 결과는 CI/CD job 로그에 기록됩니다. 각 스캔은 job 아티팩트로 포괄적인 보고서도 생성합니다.

가장 최근 스캔 결과를 확인하려면:

  • 왼쪽 사이드바에서 빌드 > Job을 선택합니다.

  • 가장 최근 secret_detection job을 선택합니다. 새 파이프라인을 실행하지 않은 경우 job이 하나만 있어야 합니다.

  • 로그 출력에서 다음을 확인합니다:

분석기 버전 및 규칙 세트를 포함한 스캔에 대한 정보. 시크릿 탐지를 자동으로 활성화했으므로 프로젝트는 기본 규칙 세트를 사용합니다.

  • 시크릿이 감지되었는지 여부. no leaks found가 표시되어야 합니다.

  • 전체 보고서를 다운로드하려면 Job 아티팩트에서 다운로드를 선택합니다.

머지 리퀘스트 파이프라인 활성화#

지금까지 파이프라인 시크릿 탐지를 사용하여 기본 브랜치의 커밋을 스캔했습니다. 그러나 기본 브랜치로 머지하기 전에 머지 리퀘스트의 커밋을 분석하려면 머지 리퀘스트 파이프라인을 활성화해야 합니다.

이를 위해:

.gitlab-ci.yml 파일에 다음 줄을 추가합니다:

variables:
  AST_ENABLE_MR_PIPELINES: "true"

변경 사항을 저장하고 프로젝트의 main 브랜치에 커밋합니다.

가짜 시크릿 추가#

다음으로, 머지 리퀘스트에서 가짜 시크릿을 “유출”하여 job 출력을 복잡하게 만들어 봅니다:

새 브랜치를 체크아웃합니다:

git checkout -b pipeline-sd-tutorial

프로젝트 README를 편집하고 다음 줄을 추가합니다. 개인 액세스 토큰의 정확한 형식과 일치하도록 - 앞뒤의 공백을 제거해야 합니다:

# To make the example work, remove
# the spaces before and after the dash:
glpat - 12345678901234567890

변경 사항을 커밋하고 push한 다음 기본 브랜치로 머지하기 위한 머지 리퀘스트를 엽니다.

머지 리퀘스트 파이프라인이 자동으로 실행됩니다.

파이프라인이 완료될 때까지 기다린 다음 job 로그를 확인합니다. WRN leaks found: 1이 표시되어야 합니다.

job 아티팩트를 다운로드하고 다음 정보가 포함되어 있는지 확인합니다:

시크릿 유형. 이 예시에서 유형은 "GitLab personal access token"입니다.

시크릿의 용도 설명 및 유출을 복구하기 위한 단계.

유출의 심각도. 개인 액세스 토큰은 GitLab.com에서 사용자를 가장하는 데 사용될 수 있으므로 이 유출은 Critical입니다.

시크릿의 원시 텍스트.

시크릿이 위치한 곳에 대한 정보:

"file": "README.md",
"line_start": 97,
"line_end": 97,

이 예시에서 시크릿은 README.md 파일의 97번째 줄에 있습니다.

머지 리퀘스트 보고서 사용#

  • Tier: Ultimate
    

기본 브랜치가 아닌 브랜치에서 감지된 시크릿을 “발견”이라고 합니다. 발견이 기본 브랜치에 머지되면 “취약점”이 됩니다.

머지 리퀘스트 보고서 탭은 머지 리퀘스트가 머지될 경우 취약점이 될 수 있는 보안 스캔 발견 목록을 표시합니다.

발견을 보려면:

  • 이전 단계에서 만든 머지 리퀘스트를 선택합니다.

  • 보고서 탭을 선택합니다.

  • Security scan을 선택합니다.

  • 표시된 정보를 검토합니다. Secret detection이 새로운 잠재적 취약점 1개를 감지했습니다가 표시되어야 합니다.

머지 리퀘스트의 모든 발견에 대한 자세한 보기를 보려면 모든 파이프라인 발견 보기를 선택합니다.

시크릿 분류#

  • Tier: Ultimate
    

GitLab Ultimate에서 job 출력은 다음에도 기록됩니다:

  • 파이프라인의 Security 탭.

  • 발견이 취약점이 되면 취약점 보고서.

UI를 사용하여 시크릿을 분류하는 방법을 보여주기 위해 취약점을 만들고 취약점 보고서에서 상태를 변경해 봅니다:

마지막 단계에서 만든 MR을 머지한 다음 파이프라인이 완료될 때까지 기다립니다.

가짜 시크릿이 main에 추가되어 발견이 취약점이 됩니다.

왼쪽 사이드바에서 Secure > 취약점 보고서를 선택합니다.

취약점의 설명을 선택하여 다음을 봅니다:

시크릿 유형에 대한 세부 정보.

  • 복구 안내.

  • 취약점이 감지된 시기 및 위치에 대한 정보.

취약점 편집 > 상태 변경을 선택합니다.

상태 드롭다운 목록에서 테스트에 사용됨으로 무시를 선택합니다.

  • 프로젝트에 가짜 시크릿을 추가한 이유를 설명하는 댓글을 추가합니다.

  • 상태 변경을 선택합니다.

취약점은 더 이상 취약점 보고서 첫 페이지에 나타나지 않습니다.

유출 복구#

시크릿을 원격 리포지터리에 추가하면 해당 시크릿은 더 이상 안전하지 않으며 가능한 한 빨리 폐기해야 합니다. 기본 브랜치에 머지되지 않은 경우에도 시크릿을 폐기하고 교체해야 합니다.

유출을 복구하기 위해 취해야 할 정확한 단계는 조직의 보안 정책에 따라 다르지만, 최소한 다음을 수행해야 합니다:

  • 시크릿을 폐기합니다. 시크릿이 폐기되면 더 이상 유효하지 않으며 합법적인 활동을 가장하는 데 사용할 수 없습니다.

  • 리포지터리에서 시크릿을 제거합니다.

특정 복구 안내는 secret-detection job 로그에 기록되며 취약점 보고서 세부 정보 페이지에서 볼 수 있습니다.