사용자 정의 HTML 헤더 태그

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

EU 또는 쿠키 동의 배너가 필요한 관할권에서 GitLab 인스턴스를 자체 관리하는 경우

추가 HTML 헤더 태그가 필요한데, 이는 스크립트와 스타일시트를 추가하기 위함입니다.

보안 암시

이 기능을 활성화하기 전에 이로 인해 발생할 수 있는 보안 암시를 이해해야 합니다.

이전에 합법적인 외부 리소스가 손상된 후 GitLab 인스턴스의 모든 사용자로부터
거의 모든 데이터를 추출하는 데 사용될 수 있습니다. 그런 이유로 신뢰할 수 없는
외부 소스의 리소스를 절대 추가해서는 안 됩니다. 가능하다면 항상
서브 리소스 무결성와 같은 무결성 검사를
서드파티 리소스에 사용하여 로드되는 리소스의 진위를 확인해야 합니다.

HTML 헤더 태그를 사용하여 추가하는 기능은 최소한으로 제한해야 합니다.

그렇지 않으면 예를 들어 GitLab의 다른 애플리케이션 코드와 상호작용할 경우
안정성이나 기능 문제를 발생시킬 수도 있습니다.

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

외부 소스를 content_security_policy 옵션에서 사용할 수 있도록 추가해야 합니다.

다음 예시에서는 script_srcstyle_src를 확장해야 합니다.

사용자 정의 HTML 헤더 태그를 추가하려면:

리눅스 패키지 (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