프로젝트 수준의 안전 파일

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

이 기능은 GitLab Incubation Engineering에서 개발된 Mobile DevOps의 일환입니다. 해당 기능은 아직 개발 중이지만 다음을 수행할 수 있습니다:

CI/CD 파이프라인에서 안전 파일로 최대 100개의 파일을 안전하게 저장할 수 있습니다. 이러한 파일들은 프로젝트 리포지토리 외부에 안전하게 저장되며 버전 관리되지 않습니다. 이러한 파일에 민감한 정보를 안전하게 저장해도 됩니다. 안전 파일은 일반 텍스트 및 이진 파일 유형을 지원하지만 5MB 이하여야합니다.

프로젝트 설정 또는 보안 파일 API를 사용하여 안전 파일을 관리할 수 있습니다.

안전 파일은 CI/CD 작업에서 다운로드 및 사용할 수 있는데 download-secure-files 도구를 사용하면 됩니다.

프로젝트에 안전 파일 추가

프로젝트에 안전 파일을 추가하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 설정 > CI/CD를 선택합니다.
  3. Secure Files 섹션을 확장합니다.
  4. 파일 업로드를 선택합니다.
  5. 업로드할 파일을 찾아 열기를 선택하면 파일 업로드가 즉시 시작됩니다. 업로드가 완료되면 파일이 목록에 표시됩니다.

CI/CD 작업에서 안전 파일 사용

CI/CD 작업에서 안전 파일을 사용하려면 작업에서 파일을 다운로드하기 위해 download-secure-files 도구를 사용해야 합니다. 다운로드 후에 다른 스크립트 명령어와 함께 사용할 수 있습니다.

작업의 script 섹션에 명령어를 추가하여 download-secure-files 도구를 다운로드하고 실행해야 합니다. 파일은 프로젝트 루트에 .secure_files 디렉토리에 다운로드됩니다. 안전 파일의 다운로드 위치를 변경하려면 SECURE_FILES_DOWNLOAD_PATH CI/CD 변수에서 경로를 설정합니다.

예시:

test:
  variables:
    SECURE_FILES_DOWNLOAD_PATH: "./where/files/should/go/"
  script:
    - curl --silent "https://gitlab.com/gitlab-org/incubation-engineering/mobile-devops/download-secure-files/-/raw/main/installer" | bash

경고: download-secure-files 도구로 로드된 파일의 내용은 작업 로그 출력에서 마스킹되지 않습니다. 작업 로그에서 안전 파일 내용을 특히 민감한 정보가 포함될 수 있는 출력을 피하도록 주의하십시오.

보안 상세정보

프로젝트 수준의 안전 파일은 Lockbox Ruby gem을 사용하여 업로드시 암호화됩니다. 업로드시 Ci::SecureFileUploader 인터페이스를 사용하여 소스 파일의 SHA256 체크섬이 생성되며 이는 다운로드시 파일 내용을 확인하는 데 사용됩니다.

각 파일마다 생성 및 데이터베이스에 유지되는 고유한 암호화 키가 생성됩니다. 암호화된 업로드된 파일은 GitLab 인스턴스 구성에 따라 로컬 저장소 또는 객체 저장소에 저장됩니다.

개별 파일은 안전 파일 다운로드 API를 사용하여 검색할 수 있습니다. 메타데이터는 list 또는 show API 엔드포인트를 통해 검색할 수 있습니다. 또한 download-secure-files 도구를 사용하여 파일을 검색할 수 있습니다. 이 도구는 각 파일의 체크섬을 자동으로 확인합니다.

최소한 Developer 역할을 가진 프로젝트 구성원은 프로젝트 수준의 안전 파일에 액세스할 수 있습니다. 프로젝트 수준의 안전 파일과의 상호작용은 감사 이벤트에 포함되지 않지만 Issue 117에서 해당 기능 추가가 제안되었습니다.