프로젝트 레벨 보안 파일
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 기능은 Mobile DevOps의 일부입니다. CI/CD 파이프라인에서 사용하기 위한 최대 100개의 파일을 보안 파일로 안전하게 저장할 수 있습니다. 보안 파일은 프로젝트 설정에서 또는 보안 파일 API로 관리할 수 있습니다.
히스토리
- GitLab 15.7에서 일반적으로 사용 가능해지고 기능 플래그
ci_secure_files제거됨.
이 기능은 Mobile DevOps의 일부입니다. 기능은 아직 개발 중이지만 다음을 할 수 있습니다:
CI/CD 파이프라인에서 사용하기 위한 최대 100개의 파일을 보안 파일로 안전하게 저장할 수 있습니다. 이 파일들은 프로젝트 리포지터리 외부에 안전하게 저장되며 버전 관리되지 않습니다. 이 파일에 민감한 정보를 저장하는 것이 안전합니다. 보안 파일은 일반 텍스트와 바이너리 파일 유형을 모두 지원하지만 5 MB 이하여야 합니다.
보안 파일은 프로젝트 설정에서 또는 보안 파일 API로 관리할 수 있습니다.
보안 파일은 glab securefile 명령을 사용하여 CI/CD job에서 다운로드하고 사용할 수 있습니다.
프로젝트에 보안 파일 추가#
프로젝트에 보안 파일을 추가하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > CI/CD를 선택합니다.
- Secure Files 섹션을 펼칩니다.
- Upload File을 선택합니다.
- 업로드할 파일을 찾아 Open을 선택하면 파일 업로드가 즉시 시작됩니다. 업로드가 완료되면 목록에 파일이 표시됩니다.
CI/CD job에서 보안 파일 사용#
보안 파일의 콘텐츠는 job 로그 출력에서 마스킹되지 않습니다. 특히 민감한 정보가 포함될 수 있는 로깅 출력 시 job 로그에 보안 파일 콘텐츠가 출력되지 않도록 주의하세요.
glab 도구 사용#
glab을 사용하여 하나 이상의 보안 파일을 다운로드하려면 CI/CD job에서 cli Docker 이미지를 사용할 수 있습니다.
프로젝트의 모든 파일 다운로드#
프로젝트의 모든 보안 파일을 다운로드하려면:
test:
image: registry.gitlab.com/gitlab-org/cli:latest
script:
- glab auth login --job-token $CI_JOB_TOKEN --hostname $CI_SERVER_FQDN --api-protocol $CI_SERVER_PROTOCOL
- glab -R $CI_PROJECT_PATH securefile download --all --output-dir="where/to/save"
이 예시에서 모든 변수는 자동으로 사용 가능한 사전 정의된 변수입니다.
프로젝트에서 단일 파일 다운로드#
test:
image: registry.gitlab.com/gitlab-org/cli:latest
script:
- glab auth login --job-token $CI_JOB_TOKEN --hostname $CI_SERVER_FQDN --api-protocol $CI_SERVER_PROTOCOL
- glab -R $CI_PROJECT_PATH securefile download $SECURE_FILE_ID --path="where/to/save/file.txt"
SECURE_FILE_ID CI/CD 변수는 job에 명시적으로 전달되어야 합니다. 예를 들어
CI/CD 설정에서 또는 파이프라인을 수동으로 실행할 때 전달합니다.
다른 모든 변수는 자동으로 사용 가능한 사전 정의된 변수입니다.
또는 Docker 이미지를 사용하는 대신 바이너리를 다운로드하여 CI/CD job에서 사용할 수 있습니다.
download-secure-files 도구 사용 (더 이상 사용되지 않음)#
히스토리
- GitLab 18.6에서 더 이상 사용되지 않음.
이 방법은 더 이상 사용되지 않습니다.
CI/CD job에서 보안 파일을 사용하려면 download-secure-files 도구를 사용하여 job에서 파일을 다운로드할 수 있습니다. 다운로드된 후 다른 스크립트 명령과 함께 사용할 수 있습니다.
job의 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
보안 세부 정보#
프로젝트 레벨 보안 파일은 Ci::SecureFileUploader 인터페이스를 사용하여 Lockbox Ruby gem으로 업로드 시 암호화됩니다. 이 인터페이스는 업로드 중에 소스 파일의 SHA256 체크섬을 생성하며, 이는 데이터베이스의 레코드와 함께 저장되어 다운로드 시 파일 콘텐츠를 검증하는 데 사용됩니다.
파일을 만들 때 각 파일에 대해 고유한 암호화 키가 생성되어 데이터베이스에 저장됩니다. 암호화된 업로드된 파일은 GitLab 인스턴스 구성에 따라 로컬 스토리지 또는 객체 스토리지에 저장됩니다.
개별 파일은 보안 파일 다운로드 API로 가져올 수 있습니다.
메타데이터는 목록 또는 표시 API 엔드포인트로 가져올 수 있습니다. 파일은 glab securefile 명령으로도 가져올 수 있습니다. 이 명령은 다운로드 시 각 파일의 체크섬을 자동으로 검증합니다.
Developer, Maintainer 또는 Owner 권한이 있는 모든 프로젝트 멤버가 프로젝트 레벨 보안 파일에 액세스할 수 있습니다. 프로젝트 레벨 보안 파일과의 상호 작용은 감사 이벤트에 포함되지 않지만, 이슈 117에서 이 기능을 추가하는 방안을 제안하고 있습니다.
