Web IDE 확장 호스트 도메인
Offering: GitLab Self-Managed
확장 호스트 도메인은 Web IDE가 Extension Marketplace를 사용하여 설치된 서드파티 코드를 격리하는 데 사용하는 와일드카드 도메인 이름입니다. GitLab은 기본적으로 모든 GitLab 제공에서 사용 가능한 기본 확장 호스트 도메인 *.cdn.web-ide.gitlab-static.net을 제공합니다.
확장 호스트 도메인은 Web IDE가 Extension Marketplace를 사용하여 설치된 서드파티 코드를 격리하는 데 사용하는 와일드카드 도메인 이름입니다. Web IDE는 샌드박스 환경에서 확장을 실행하기 위해 웹 브라우저의 동일 출처 정책에 의존합니다.
GitLab은 기본적으로 모든 GitLab 제공에서 사용 가능한 기본 확장 호스트 도메인 *.cdn.web-ide.gitlab-static.net을 제공합니다. 이 와일드카드 도메인은 VS Code 정적 자산을 호스팅하는 외부 HTTP 서버를 가리킵니다. 각 확장은 자체 서브도메인에서 제공됩니다.
오프라인 환경에서는 사용자의 웹 브라우저가 이 외부 HTTP 서버에 연결할 수 없어 Web IDE의 기능이 제한됩니다.
이 제한을 우회하기 위해 GitLab 인스턴스 관리자는 사용자 정의 확장 호스트 도메인을 설정할 수 있습니다. 사용자 정의 확장 호스트 도메인은 기본 솔루션과 마찬가지로 VS Code 정적 자산을 제공할 수 있는 GitLab 인스턴스 자체를 가리킵니다.
Web IDE 확장 호스트 도메인에서 지나치게 광범위한 와일드카드 도메인을 구성하면 심각한 보안 위험이 발생합니다. 잘못된 구성은 GitLab 인스턴스 및 관련 데이터의 침해로 이어질 수 있습니다.
사용자 정의 확장 호스트 도메인 설정#
사전 요건:
- 관리자여야 합니다.
이 지침은 기본 NGINX 설치를 사용하는 Linux 패키지 설치를 위한 것입니다. GitLab 관리자와 DevOps 엔지니어는 이 가이드를 다른 설치 방법에 맞게 조정해야 합니다.
-
NGINX 구성에 사용자 정의 설정 삽입 가이드에 따라
server블록을 추가합니다. 이 블록은 확장 호스트 도메인에 대한 요청을 처리하도록 NGINX를 구성합니다. 다음 코드 스니펫은 참조 구성을 제공합니다.<extension-host-domain-placeholder>를 Web IDE 확장 호스트 도메인의 와일드카드 도메인 이름으로 바꿉니다:server { listen *:443 ssl; server_name *.<extension-host-domain-placeholder>; ssl_certificate /etc/gitlab/ssl/<extension-host-domain-placeholder>.pem; ssl_certificate_key /etc/gitlab/ssl/<extension-host-domain-placeholder>-key.pem; ## Individual nginx logs for this GitLab vhost access_log /var/log/gitlab/nginx/gitlab_access.log gitlab_access; error_log /var/log/gitlab/nginx/gitlab_error.log; location /assets/ { client_max_body_size 0; gzip off; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://gitlab-workhorse; } } -
파일을 저장하고 변경 사항을 적용하기 위해 GitLab을 재구성합니다. 그런 다음 GitLab 애플리케이션을 엽니다.
-
오른쪽 상단에서 관리자를 선택합니다.
-
왼쪽 사이드바에서 설정 > 일반을 선택합니다.
-
Web IDE를 펼칩니다.
-
확장 호스트 도메인 텍스트 상자에 사용자 정의 확장 호스트 도메인을 입력합니다.
-
변경 사항 저장을 선택합니다.
변경 사항을 저장한 후 Web IDE에서 프로젝트를 열어 사용자 정의 확장 호스트가 에디터에서 사용되는지 확인할 수 있습니다.
단일 출처 폴백#
단일 출처 폴백은 기본적으로 활성화되어 있으며 보안 위험이 있습니다. 폴백을 비활성화하고, 대신 CORS 구성, 웹 브라우저 보안 정책 또는 프록시 서버가 확장 호스트 도메인을 차단하지 않도록 해야 합니다.
기본적으로 Web IDE는 별도의 확장 호스트 도메인에서 VS Code 정적 자산을 제공하는 다중 출처 모드에서 실행됩니다. 이 격리는 악의적인 행위자가 확장 호스트를 악용하여 GitLab 인스턴스에 인증된 요청을 만드는 것을 방지합니다.
그러나 확장 호스트 도메인이 네트워크 또는 CORS 제한으로 인해 도달할 수 없을 때 Web IDE는 자동으로 단일 출처 모드로 폴백합니다. 이 모드에서 Web IDE는 GitLab 애플리케이션과 동일한 출처에서 VS Code 자산을 제공하여 공격 표면을 늘리고 보안 취약점을 만듭니다.
단일 출처 폴백 활성화 설정은 확장 호스트 도메인에 도달할 수 없을 때 Web IDE가 단일 출처 모드로 폴백할 수 있는지 여부를 제어합니다.
사전 요건:
- 관리자 액세스.
이 설정을 구성하려면:
- 오른쪽 상단에서 관리자를 선택합니다.
- 왼쪽 사이드바에서 설정 > 일반을 선택합니다.
- Web IDE를 펼칩니다.
- 단일 출처 폴백 활성화 체크박스를 선택하거나 선택 취소합니다.
- 변경 사항 저장을 선택합니다.
