보안 파일 관리

Tier: Free, Premium, Ultimate Offering: Self-managed
  • 일반 제공 및 GitLab 15.7에서 기능 플래그 ci_secure_files 제거.

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

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

통합 객체 저장소

모든 객체 유형에 대해 통합 형식으로 객체 저장소를 사용하는 것이 권장됩니다.

저장소 특정 객체 저장소

다음 설정이 있습니다:

  • 자체 컴파일된 설치에서 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. 기존 로컬 상태를 객체 저장소로 마이그레이션합니다.

객체 저장소로 마이그레이션

경고:
객체 저장소에서 로컬 저장소로 보안 파일을 마이그레이션하는 것은 불가능하므로 주의해서 진행하세요.

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

  • Linux 패키지 설치의 경우:

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

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