This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned on this page are subject to change or delay. The development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed devops secure -

GitLab Secret Detection ADR 002: 동일한 저장소에 Secret Detection Gem 저장

배경

Phase 1 동안, 우리는 저장소에 비밀 정보가 커밋되는 것을 막기 위해 루비 기반의 푸시 체크 접근 방식을 사용하기로 선택했으며, 이에 따라 비밀 정보 스캔은 GitLab 내에서 이 특정 목적으로 개발된 라이브러리(또는 루비 젬)에 의해 수행되었습니다.

이 라이브러리를 생성하고 Rails 모놀리스 내에서 사용할 수 있도록 만들기 위한 일환으로, 이 라이브러리를 배포하는 가장 좋은 방법에 대한 결정을 내리기로 했습니다.

방식

두 가지 가능한 방식을 평가했습니다.

  1. 라이브러리를 동일한 저장소에 저장합니다.
  2. 라이브러리를 외부 저장소에 저장합니다.

각 방식에는 배포, 일관성, 유지 관리 및 리뷰 및 릴리스 워크플로 및 유사한 프로세스 설정에 따라 주로 장단점이 있었습니다. 자세한 내용은 아래를 참조하세요.

모놀리스 내 동일한 저장소에

라이브러리를 개발 및 저장소 내에서 유지했다는 것은 GitLab 모놀리스 자체 내에 패키지화되어 있으며, 이를 통해 종속성으로 설치할 필요가 없음을 보장했습니다. 이는 처음부터 워크플로 및 프로세스를 정의하는 유지 관리 오버헤드를 줄였습니다. 반면에 라이브러리는 넓은 커뮤니티에 노출되거나 발행되지 않기 때문에 덜 알려진 상태일 것입니다.

외부 저장소에

라이브러리를 외부 저장소에 저장하는 것은 특히 해당 젬이 RubyGems.org에 공개될 것이므로 더 많은 관심과 가능한 커뮤니티로부터 기여를 얻게 될 것입니다. 또한, 이 라이브러리는 다른 프로젝트와 애플리케이션에서 사용할 수 있을 것입니다. 그러나 이를 통해 유지 관리 오버헤드는 여러 이유로 상당히 증가할 것으로 예상됩니다:

  • 새 버전을 릴리스할 때 여러 저장소 간에 변경 사항을 조정해야 합니다.
  • 리뷰 및 릴리스 워크플로 및 유사한 프로세스를 별도로 정의해야 합니다.

결정

첫 번째 단계에서 라이브러리를 GitLab 내부에 패키지화되어 있기 때문에 더 쉬운 배포를 위해 라이브러리를 동일한 저장소에 저장하기로 결정했습니다. 이를 통해 외부 종속성을 설치할 필요 없이 즉시 사용할 수 있을 것입니다.

그렇지만, 과정을 따라 RubyGems.org에서 해당 젬의 이름을 예약하는 등의 조치를 취하여, 이름을 차지하고 제 3자에게 악성 코드를 제공하는 것을 방지하기 위해 외부에서 해당 젬을 공개할 계획은 없습니다.

적어도 Phase 2에 이르기 전까지는 비밀 탐지를 수행하기 위한 독립형 서비스를 구축하는 것을 고려하기 시작할 때까지는 해당 젬을 외부에 공개할 계획은 없습니다.