사용자 정의 HTML 헤더 태그
GitLab v19.4Offering: GitLab Self-Managed
요약
EU 또는 쿠키 동의 배너가 요구되는 관할 지역에서 GitLab 인스턴스를 자체 관리하는 경우, 스크립트와 스타일시트를 추가하려면 별도의 HTML 헤더 태그가 필요합니다. 이 기능을 활성화하기 전에 발생할 수 있는 보안 영향을 이해해야 합니다.
히스토리
- GitLab 17.1에서 도입되었습니다.
EU 또는 쿠키 동의 배너가 요구되는 관할 지역에서 GitLab 인스턴스를 자체 관리하는 경우, 스크립트와 스타일시트를 추가하려면 별도의 HTML 헤더 태그가 필요합니다.
보안 영향#
이 기능을 활성화하기 전에 발생할 수 있는 보안 영향을 이해해야 합니다.
이전에는 정상이던 외부 리소스가 침해되면 GitLab 인스턴스의 모든 사용자로부터 사실상 모든 데이터를 빼내는 데 악용될 수 있습니다. 따라서 신뢰할 수 없는 외부 소스의 리소스는 추가하지 않습니다. 가능하다면 서드파티 리소스에는 Subresource Integrity 같은 무결성 검사를 항상 사용하여 로드되는 리소스의 진위를 확인합니다.
HTML 헤더 태그로 추가하는 기능은 최소한으로 제한합니다. 그렇지 않으면 예를 들어 GitLab의 다른 애플리케이션 코드와 상호 작용하는 과정에서 안정성 또는 기능 문제가 발생할 수 있습니다.
사용자 정의 HTML 헤더 태그 추가#
외부 소스는 content_security_policy 옵션에서 제공되는 콘텐츠 보안 정책에
추가해야 합니다. 아래 예시에서는 script_src와 style_src를
확장해야 합니다.
사용자 정의 HTML 헤더 태그를 추가하려면 다음 절차를 수행합니다.
-
/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'] = { # extend the following directives '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", } }
-
/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" -
파일을 저장하고 GitLab을 재시작합니다.
# For systems running systemd sudo systemctl restart gitlab.target # For systems running SysV init sudo service gitlab restart