보안 파일 관리

Tier: Free, Premium, Ultimate Offering: Self-Managed

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

이러한 파일의 저장 위치를 아래 설명된 옵션을 사용하여 구성할 수 있지만, 기본 위치는 다음과 같습니다.

  • Linux 패키지를 사용하는 경우: /var/opt/gitlab/gitlab-rails/shared/ci_secure_files
  • 직접 컴파일한 설치의 경우: /home/git/gitlab/shared/ci_secure_files

GitLab Helm 차트 설치에 대한 외부 객체 저장소 구성을 사용하세요.

안전한 파일 비활성화

GitLab 전체 인스턴스에서 안전한 파일을 비활성화할 수 있습니다. 디스크 공간을 줄이거나 기능에 대한 액세스를 제거하기 위해 안전한 파일을 비활성화하려면 다음 단계를 따르세요.

전제 조건:

  • 관리자여야 합니다.

Linux 패키지 설치의 경우

  1. /etc/gitlab/gitlab.rb 파일을 편집하고 다음 라인을 추가하세요:

    gitlab_rails['ci_secure_files_enabled'] = false
    
  2. 파일을 저장하고 GitLab을 다시 구성하세요.

직접 컴파일한 설치의 경우

  1. /home/git/gitlab/config/gitlab.yml 파일을 편집하고 다음 라인을 추가하거나 수정하세요:

    ci_secure_files:
      enabled: false
    
  2. 파일을 저장하고 변경 사항이 적용되려면 GitLab을 다시 시작하세요.

로컬 저장소 사용

기본 구성에서는 로컬 저장소가 사용됩니다. 안전한 파일이 로컬로 저장되는 위치를 변경하려면 아래 단계를 따르세요.

Linux 패키지 설치의 경우

  1. 저장소 경로를 /mnt/storage/ci_secure_files와 같이 변경하려면, /etc/gitlab/gitlab.rb 파일을 편집하고 다음 라인을 추가하세요:

    gitlab_rails['ci_secure_files_storage_path'] = "/mnt/storage/ci_secure_files"
    
  2. 파일을 저장하고 GitLab을 다시 구성하세요.

직접 컴파일한 설치의 경우

  1. 저장소 경로를 /mnt/storage/ci_secure_files와 같이 변경하려면, /home/git/gitlab/config/gitlab.yml 파일을 편집하고 다음 라인을 추가하거나 수정하세요:

    ci_secure_files:
      enabled: true
      storage_path: /mnt/storage/ci_secure_files
    
  2. 파일을 저장하고 변경 사항이 적용되려면 GitLab을 다시 시작하세요.

객체 저장소 사용

Tier: Free, Premium, Ultimate Offering: Self-Managed

디스크에 안전한 파일을 저장하는 대신 지원되는 객체 저장소 옵션 중 하나를 사용해야 합니다. 이 구성은 이미 유효한 자격 증명이 구성되어 있어야 합니다.

통합된 객체 저장소

  • 통합된 객체 저장소 지원은 GitLab 17.0에서 소개되었습니다.

객체 저장소의 통합된 형식 사용이 권장됩니다.

저장소별 객체 저장소

다음 설정은 다음과 같습니다:

  • 직접 컴파일한 설치에서 ci_secure_files: 밑에 object_store:로 중첩됩니다.
  • Linux 패키지 설치에서는 ci_secure_files_object_store_로 접두어가 붙습니다.
설정 설명 기본값
enabled 객체 저장소를 활성화/비활성화 false
remote_directory 안전한 파일이 저장된 버킷 이름  
connection 아래에 설명된 다양한 연결 옵션  

S3 호환 연결 설정

다양한 제공업체에 대한 사용 가능한 연결 설정을 참조하세요.

Linux 패키지 (Omnibus)
  1. /etc/gitlab/gitlab.rb 파일을 편집하고 다음 라인을 추가하세요. 원하는 값을 사용하세요:

    gitlab_rails['ci_secure_files_object_store_enabled'] = true
    gitlab_rails['ci_secure_files_object_store_remote_directory'] = "ci_secure_files"
    gitlab_rails['ci_secure_files_object_store_connection'] = {
      'provider' => 'AWS',
      'region' => 'eu-central-1',
      'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
      'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY'
    }
    

    참고: AWS IAM 프로필을 사용하는 경우 AWS 액세스 키 및 비밀 액세스 키/값을 생략해야 합니다:

    gitlab_rails['ci_secure_files_object_store_connection'] = {
      'provider' => 'AWS',
      'region' => 'eu-central-1',
      'use_iam_profile' => true
    }
    
  2. 파일을 저장하고 GitLab을 다시 구성하세요:

    sudo gitlab-ctl reconfigure
    
  3. 기존 로컬 상태를 객체 저장소로 이동하세요.

직접 컴파일 (소스)
  1. /home/git/gitlab/config/gitlab.yml 파일을 편집하고 다음 라인을 추가하거나 수정하세요:

    ci_secure_files:
      enabled: true
      object_store:
        enabled: true
        remote_directory: "ci_secure_files"  # 버킷 이름
        connection:
          provider: AWS  # 현재 AWS만 지원됨
          aws_access_key_id: AWS_ACCESS_KEY_ID
          aws_secret_access_key: AWS_SECRET_ACCESS_KEY
          region: eu-central-1
    
  2. 파일을 저장하고 GitLab을 다시 시작하세요:

    # systemd를 실행하는 시스템의 경우
    sudo systemctl restart gitlab.target
    
    # SysV init을 실행하는 시스템의 경우
    sudo service gitlab restart
    
  3. 기존 로컬 상태를 객체 저장소로 이동하세요.

객체 저장소로 이전하기

경고: 보안 파일을 객체 저장소에서 로컬 저장소로 다시 이전하는 것은 불가능하므로 주의하여 진행하십시오.

보안 파일을 객체 저장소로 이전하려면 아래 지침을 따르세요.

  • 리눅스 패키지 설치의 경우:

    sudo gitlab-rake gitlab:ci_secure_files:migrate
    
  • 자체 컴파일된 설치의 경우:

    sudo -u git -H bundle exec rake gitlab:ci_secure_files:migrate RAILS_ENV=production