Web IDE 확장 호스트 도메인
GitLab v19.5Offering: 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 인스턴스 관리자는 사용자 정의 확장 호스트 도메인을 설정할 수 있습니다. 사용자 정의 확장 호스트 도메인은 GitLab 인스턴스 자체를 가리키며, 이 인스턴스도 기본 방식과 동일하게 VS Code 정적 자산을 제공할 수 있습니다.
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 애플리케이션을 엽니다.
-
오른쪽 상단에서 Admin을 선택합니다.
-
왼쪽 사이드바에서 Settings > General을 선택합니다.
-
Web IDE를 확장합니다.
-
Extension host domain 텍스트 상자에 사용자 정의 확장 호스트 도메인을 입력합니다.
-
Save changes를 선택합니다.
변경 사항을 저장한 후 Web IDE에서 프로젝트를 열어 에디터가 사용자 정의 확장 호스트를 사용하는지 확인할 수 있습니다.
단일 출처 폴백#
단일 출처 폴백은 기본적으로 활성화되어 있으며 보안 위험이 있습니다. 이 폴백을 비활성화하고, 대신 CORS 구성, 웹 브라우저 보안 정책, 프록시 서버가 확장 호스트 도메인을 차단하지 않도록 구성합니다.
기본적으로 Web IDE는 VS Code 정적 자산을 별도의 확장 호스트 도메인에서 제공하는 다중 출처 모드로 실행됩니다. 이러한 격리는 공격자가 확장 호스트를 악용하여 GitLab 인스턴스에 인증된 요청을 보내는 것을 막습니다.
다만 네트워크 또는 CORS 제한으로 확장 호스트 도메인에 연결할 수 없으면 Web IDE는 자동으로 단일 출처 모드로 폴백합니다. 이 모드에서 Web IDE는 GitLab 애플리케이션과 동일한 출처에서 VS Code 자산을 제공하므로 공격 표면이 넓어지고 보안 취약점이 발생합니다.
Enable single origin fallback 설정은 확장 호스트 도메인에 연결할 수 없을 때 Web IDE가 단일 출처 모드로 폴백할 수 있는지 여부를 제어합니다.
사전 요구 사항:
- 관리자 접근 권한.
이 설정을 구성하려면 다음 단계를 수행합니다.
- 오른쪽 상단에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Web IDE를 확장합니다.
- Enable single origin fallback 체크박스를 선택하거나 선택 해제합니다.
- Save changes를 선택합니다.