InfoGrab DocsInfoGrab Docs

튜토리얼: 시크릿 푸시 보호로 프로젝트 보호하기

요약

애플리케이션이 외부 리소스를 사용하는 경우, 일반적으로 토큰이나 키와 같은 시크릿으로 애플리케이션을 인증해야 합니다. 시크릿 푸시 보호를 사용하면 GitLab이 커밋 히스토리에서 시크릿을 감지했을 때 누출을 방지하기 위해 푸시를 차단할 수 있습니다.

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

시크릿 푸시 보호를 사용하면 GitLab이 커밋 히스토리에서 시크릿을 감지했을 때 누출을 방지하기 위해 푸시를 차단할 수 있습니다. 시크릿 푸시 보호를 활성화하면 민감한 데이터에 대한 커밋을 검토하고 누출이 발생했을 때 수정하는 데 소요되는 시간을 줄이는 좋은 방법입니다.

이 튜토리얼에서는 시크릿 푸시 보호를 구성하고 가짜 시크릿을 커밋하려 할 때 어떤 일이 발생하는지 확인합니다. 또한 오탐지를 우회해야 하는 경우에 대비하여 시크릿 푸시 보호를 건너뛰는 방법도 알아봅니다.

이 튜토리얼은 다음 GitLab Unfiltered 동영상에서 발췌했습니다:

시작하기 전에#

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

  • GitLab Ultimate 구독.
  • 테스트 프로젝트. 원하는 프로젝트를 사용할 수 있지만, 이 튜토리얼 전용 테스트 프로젝트를 만드는 것을 고려하세요.
  • 커맨드 라인 Git에 대한 기본적인 지식.

또한 GitLab Self-Managed에서만 시크릿 푸시 보호가 인스턴스에서 활성화되어 있는지 확인합니다.

시크릿 푸시 보호 활성화#

시크릿 푸시 보호를 사용하려면 보호하려는 각 프로젝트에 대해 활성화해야 합니다. 테스트 프로젝트에서 활성화하는 것부터 시작해 봅시다.

  1. 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Secure > Security configuration을 선택합니다.
  3. Secret push protection 토글을 켭니다.

다음으로 시크릿 푸시 보호를 테스트합니다.

프로젝트에 시크릿 푸시 시도#

GitLab은 글자, 숫자, 기호의 특정 패턴을 매칭하여 시크릿을 식별합니다. 이러한 패턴은 시크릿의 유형을 식별하는 데도 사용됩니다. 가짜 시크릿 glpat-12345678901234567890을 프로젝트에 추가하여 이 기능을 테스트해 봅시다:

  1. 프로젝트에서 새 브랜치를 체크아웃합니다:

    git checkout -b push-protection-tutorial
    
  2. 다음 내용으로 새 파일을 만듭니다. 개인 액세스 토큰의 정확한 형식과 일치하도록 - 앞뒤의 공백을 제거하세요:

    hello, world!
    
    # To make the example work, remove
    # the spaces before and after the dash:
    glpat - 12345678901234567890
    
  3. 파일을 브랜치에 커밋합니다:

    git add .
    git commit -m "Add fake secret"
    

    이제 시크릿이 커밋 히스토리에 입력되었습니다. 시크릿 푸시 보호는 시크릿을 커밋하는 것을 막지 않습니다; 푸시할 때만 경고합니다.

  4. 변경 사항을 GitLab에 푸시합니다. 다음과 같은 것을 볼 수 있습니다:

    $ git push
    remote: GitLab:
    remote: PUSH BLOCKED: Secrets detected in code changes
    remote:
    remote: Secret push protection found the following secrets in commit: 123abc
    remote: -- myFile.txt:2 | GitLab Personal Access Token
    remote:
    remote: To push your changes you must remove the identified secrets.
    To gitlab.com:
     ! [remote rejected] push-protection-tutorial -> main (pre-receive hook declined)
    

    GitLab이 시크릿을 감지하고 푸시를 차단합니다. 오류 보고서에서 다음을 확인할 수 있습니다:

    • 시크릿이 포함된 커밋 (123abc)
    • 시크릿이 포함된 파일 및 줄 번호 (myFile.txt:2)
    • 시크릿의 유형 (GitLab Personal Access Token)

변경 사항을 성공적으로 푸시했다면, 시크릿을 폐기하고 교체하는 데 상당한 시간과 노력이 필요했을 것입니다. 대신 커밋 히스토리에서 시크릿을 제거하고 시크릿 누출을 막았다는 안도감을 가질 수 있습니다.

시크릿 푸시 보호 건너뛰기#

때로는 시크릿 푸시 보호가 시크릿을 식별했더라도 커밋을 푸시해야 할 때가 있습니다. 이는 GitLab이 오탐지를 감지할 때 발생할 수 있습니다. 이를 시연하기 위해 마지막 커밋을 GitLab에 푸시합니다.

푸시 옵션 사용#

푸시 옵션을 사용하여 시크릿 감지를 건너뛸 수 있습니다:

  • secret_detection.skip_all 옵션으로 커밋을 푸시합니다:

    git push -o secret_detection.skip_all
    

시크릿 감지가 건너뛰어지고 변경 사항이 원격에 푸시됩니다.

커밋 메시지 사용#

커맨드 라인에 액세스할 수 없거나 푸시 옵션을 사용하지 않으려면:

  • 커밋 메시지에 [skip secret push protection] 문자열을 추가합니다. 예를 들면:

    git commit --amend -m "Add fake secret [skip secret push protection]"
    

여러 커밋이 있더라도 변경 사항을 푸시하려면 커밋 메시지 중 하나에만 [skip secret push protection]을 추가하면 됩니다.

다음 단계#

프로젝트의 보안을 더욱 향상시키려면 파이프라인 시크릿 감지 활성화를 고려해 보세요.

튜토리얼: 시크릿 푸시 보호로 프로젝트 보호하기

GitLab v19.2
원문 보기
요약

애플리케이션이 외부 리소스를 사용하는 경우, 일반적으로 토큰이나 키와 같은 시크릿으로 애플리케이션을 인증해야 합니다. 시크릿 푸시 보호를 사용하면 GitLab이 커밋 히스토리에서 시크릿을 감지했을 때 누출을 방지하기 위해 푸시를 차단할 수 있습니다.

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

시크릿 푸시 보호를 사용하면 GitLab이 커밋 히스토리에서 시크릿을 감지했을 때 누출을 방지하기 위해 푸시를 차단할 수 있습니다. 시크릿 푸시 보호를 활성화하면 민감한 데이터에 대한 커밋을 검토하고 누출이 발생했을 때 수정하는 데 소요되는 시간을 줄이는 좋은 방법입니다.

이 튜토리얼에서는 시크릿 푸시 보호를 구성하고 가짜 시크릿을 커밋하려 할 때 어떤 일이 발생하는지 확인합니다. 또한 오탐지를 우회해야 하는 경우에 대비하여 시크릿 푸시 보호를 건너뛰는 방법도 알아봅니다.

이 튜토리얼은 다음 GitLab Unfiltered 동영상에서 발췌했습니다:

시작하기 전에#

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

  • GitLab Ultimate 구독.
  • 테스트 프로젝트. 원하는 프로젝트를 사용할 수 있지만, 이 튜토리얼 전용 테스트 프로젝트를 만드는 것을 고려하세요.
  • 커맨드 라인 Git에 대한 기본적인 지식.

또한 GitLab Self-Managed에서만 시크릿 푸시 보호가 인스턴스에서 활성화되어 있는지 확인합니다.

시크릿 푸시 보호 활성화#

시크릿 푸시 보호를 사용하려면 보호하려는 각 프로젝트에 대해 활성화해야 합니다. 테스트 프로젝트에서 활성화하는 것부터 시작해 봅시다.

  1. 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Secure > Security configuration을 선택합니다.
  3. Secret push protection 토글을 켭니다.

다음으로 시크릿 푸시 보호를 테스트합니다.

프로젝트에 시크릿 푸시 시도#

GitLab은 글자, 숫자, 기호의 특정 패턴을 매칭하여 시크릿을 식별합니다. 이러한 패턴은 시크릿의 유형을 식별하는 데도 사용됩니다. 가짜 시크릿 glpat-12345678901234567890을 프로젝트에 추가하여 이 기능을 테스트해 봅시다:

  1. 프로젝트에서 새 브랜치를 체크아웃합니다:

    git checkout -b push-protection-tutorial
    
  2. 다음 내용으로 새 파일을 만듭니다. 개인 액세스 토큰의 정확한 형식과 일치하도록 - 앞뒤의 공백을 제거하세요:

    hello, world!
    
    # To make the example work, remove
    # the spaces before and after the dash:
    glpat - 12345678901234567890
    
  3. 파일을 브랜치에 커밋합니다:

    git add .
    git commit -m "Add fake secret"
    

    이제 시크릿이 커밋 히스토리에 입력되었습니다. 시크릿 푸시 보호는 시크릿을 커밋하는 것을 막지 않습니다; 푸시할 때만 경고합니다.

  4. 변경 사항을 GitLab에 푸시합니다. 다음과 같은 것을 볼 수 있습니다:

    $ git push
    remote: GitLab:
    remote: PUSH BLOCKED: Secrets detected in code changes
    remote:
    remote: Secret push protection found the following secrets in commit: 123abc
    remote: -- myFile.txt:2 | GitLab Personal Access Token
    remote:
    remote: To push your changes you must remove the identified secrets.
    To gitlab.com:
     ! [remote rejected] push-protection-tutorial -> main (pre-receive hook declined)
    

    GitLab이 시크릿을 감지하고 푸시를 차단합니다. 오류 보고서에서 다음을 확인할 수 있습니다:

    • 시크릿이 포함된 커밋 (123abc)
    • 시크릿이 포함된 파일 및 줄 번호 (myFile.txt:2)
    • 시크릿의 유형 (GitLab Personal Access Token)

변경 사항을 성공적으로 푸시했다면, 시크릿을 폐기하고 교체하는 데 상당한 시간과 노력이 필요했을 것입니다. 대신 커밋 히스토리에서 시크릿을 제거하고 시크릿 누출을 막았다는 안도감을 가질 수 있습니다.

시크릿 푸시 보호 건너뛰기#

때로는 시크릿 푸시 보호가 시크릿을 식별했더라도 커밋을 푸시해야 할 때가 있습니다. 이는 GitLab이 오탐지를 감지할 때 발생할 수 있습니다. 이를 시연하기 위해 마지막 커밋을 GitLab에 푸시합니다.

푸시 옵션 사용#

푸시 옵션을 사용하여 시크릿 감지를 건너뛸 수 있습니다:

  • secret_detection.skip_all 옵션으로 커밋을 푸시합니다:

    git push -o secret_detection.skip_all
    

시크릿 감지가 건너뛰어지고 변경 사항이 원격에 푸시됩니다.

커밋 메시지 사용#

커맨드 라인에 액세스할 수 없거나 푸시 옵션을 사용하지 않으려면:

  • 커밋 메시지에 [skip secret push protection] 문자열을 추가합니다. 예를 들면:

    git commit --amend -m "Add fake secret [skip secret push protection]"
    

여러 커밋이 있더라도 변경 사항을 푸시하려면 커밋 메시지 중 하나에만 [skip secret push protection]을 추가하면 됩니다.

다음 단계#

프로젝트의 보안을 더욱 향상시키려면 파이프라인 시크릿 감지 활성화를 고려해 보세요.