사용자 지정 HTML 헤더 태그

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

EU나 쿠키 수락 배너가 필요한 다른 관할 지역에서 GitLab 인스턴스를 스스로 관리하는 경우, 추가 HTML 헤더 태그가 필요합니다. 스크립트와 스타일시트를 추가하기 위해 필요합니다.

보안 측면

이 기능을 활성화하기 전에, 이것이 가지고 있는 보안 측면에 대해 이해해야 합니다.

이전에 문제가 없었던 외부 리소스가 침해를 당하고 나중에는 GitLab 인스턴스의 모든 사용자로부터 거의 모든 데이터를 추출하는 데 사용될 수 있습니다. 그 이유 때문에, 믿을 수 없는 외부 소스에서 리소스를 추가해서는 안 됩니다. 가능하다면, 하위 리소스 무결성(Subresource Integrity)와 같은 무결성 검사를 항상 사용하여 타사 리소스의 진위를 확인해야 합니다.

최소한의 기능만 추가하여 HTML 헤더 태그를 사용하세요. 그렇지 않으면, GitLab에서 다른 애플리케이션 코드와 상호 작용하는 경우 안정성 또는 기능 문제가 발생할 수 있습니다.

사용자 지정 HTML 헤더 태그 추가

사용자 지정 HTML 헤더 태그를 추가해야 합니다:

Linux 패키지 (Omnibus)
  1. /etc/gitlab/gitlab.rb 파일을 편집하고 구성을 추가합니다. 예를 들어:

    gitlab_rails['custom_html_header_tags'] = <<-'EOS'
    <script src="https://example.com/cookie-consent.js" integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://example.com/cookie-consent.css" integrity="sha384-+/M6kredJcxdsqkczBUjMLvqyHb1K/JThDXWsBVxMEeZHEaMKEOEct339VItX1zB" crossorigin="anonymous">
    EOS
    
    gitlab_rails['content_security_policy'] = {
    # 다음 지시문을 확장
      'directives' => {
        'script_src' => "'self' 'unsafe-eval' https://example.com https://www.google.com/recaptcha/ https://www.recaptcha.net/ https://www.gstatic.com/recaptcha/ https://apis.google.com",
        'style_src' => "'self' 'unsafe-inline' https://example.com",
      }
     }
    
  2. 파일을 저장한 후, 재구성하고 GitLab을 재시작합니다.

직접 컴파일(소스)
  1. /home/git/gitlab/config/gitlab.yml 파일을 편집합니다:

    production: &base
      gitlab:
        custom_html_header_tags: |
          <script src="https://example.com/cookie-consent.js" integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"         crossorigin="anonymous"></script>
          <link rel="stylesheet" href="https://example.com/cookie-consent.css" integrity="sha384-+/M6kredJcxdsqkczBUjMLvqyHb1K/JThDXWsBVxMEeZHEaMKEOEct339VItX1zB"        crossorigin="anonymous">
        content_security_policy:
          directives:
            script_src: "'self' 'unsafe-eval' https://example.com http://localhost:* https://www.google.com/recaptcha/ https://www.recaptcha.net/ https://www.gstatic.com/recaptcha/ https://apis.google.com"
            style_src: "'self' 'unsafe-inline' https://example.com"
    
  2. 파일을 저장하고 GitLab을 다시 시작합니다:

    # systemd를 실행 중인 시스템의 경우
    sudo systemctl restart gitlab.target
    
    # SysV init을 실행 중인 시스템의 경우
    sudo service gitlab restart