자산 프록시 설정
GitLab v19.5Offering: GitLab Self-Managed, GitLab Dedicated
요약
공개된 GitLab 인스턴스를 운영할 때 발생할 수 있는 보안 우려 중 하나는 이슈와 댓글에 삽입된 이미지를 통해 사용자의 IP 주소를 탈취당할 수 있다는 점입니다. 예를 들어 이슈 설명에 를 추가하면 외부 서버에서 이미지를 불러와 표시합니다.
공개된 GitLab 인스턴스를 운영할 때 발생할 수 있는 보안 우려 중 하나는 이슈와 댓글에 삽입된 이미지를 통해 사용자의 IP 주소를 탈취당할 수 있다는 점입니다.
예를 들어 이슈 설명에 를
추가하면 외부 서버에서 이미지를 불러와 표시합니다. 하지만 이 과정에서
외부 서버가 해당 사용자의 IP 주소를 기록할 수 있습니다.
이를 완화하는 방법 중 하나는 외부 이미지를 직접 관리하는 서버를 거쳐 프록시하는 것입니다.
GitLab은 이슈와 댓글에서 외부 이미지/동영상/오디오를 요청할 때 자산 프록시 서버를 사용하도록 구성할 수 있습니다. 이를 통해 악의적인 이미지를 가져올 때 사용자의 IP 주소가 노출되지 않도록 보장합니다.
video와 audio 프록시를 지원하고 설정 자유도가 더 높은 cactus/go-camo를 사용하는 것을 권장합니다.
Camo 서버 설치#
Camo 서버는 프록시 역할을 수행하는 데 사용됩니다.
자산 프록시로 Camo 서버를 설치하려면 다음을 진행합니다.
-
go-camo서버를 배포합니다. 도움이 되는 안내는 building cactus/go-camo에서 확인할 수 있습니다.[!warning] 자산 프록시 서버는 (기본
go-camo헤더와 함께)form-action 'none'과 같이 올바른 콘텐츠 보안 정책(Content Security Policy) 헤더를 사용하도록 구성해야 합니다. -
GitLab 인스턴스가 실행 중인지 확인하고, 비공개 API 토큰을 생성합니다. API를 사용해 GitLab 인스턴스의 자산 프록시 설정을 구성합니다. 예:
curl --request "PUT" "https://gitlab.example.com/api/v4/application/settings?\ asset_proxy_enabled=true&\ asset_proxy_url=https://proxy.gitlab.example.com&\ asset_proxy_secret_key=<somekey>" \ --header 'PRIVATE-TOKEN: <my_private_token>'다음 설정을 지원합니다.
속성 설명 asset_proxy_enabled자산 프록시를 켭니다. 켜는 경우 asset_proxy_url이 필요합니다.asset_proxy_secret_key자산 프록시 서버와 공유하는 시크릿입니다. asset_proxy_url자산 프록시 서버의 URL 입니다. asset_proxy_whitelist(지원 중단: 대신 asset_proxy_allowlist를 사용합니다) 이 도메인과 일치하는 자산은 프록시되지 않습니다. 와일드카드를 사용할 수 있습니다. GitLab 설치 URL은 자동으로 허용됩니다.asset_proxy_allowlist이 도메인과 일치하는 자산은 프록시되지 않습니다. 와일드카드를 사용할 수 있습니다. GitLab 설치 URL은 자동으로 허용됩니다. -
변경 사항을 적용하려면 서버를 재시작합니다. 자산 프록시 값을 변경할 때마다 서버를 재시작해야 합니다.
Camo 서버 사용#
Camo 서버가 실행 중이고 GitLab 설정을 켜면, 외부 소스를 참조하는 모든 이미지, 동영상, 오디오가 Camo 서버로 프록시됩니다.
예를 들어 다음은 Markdown에서 이미지로 연결되는 링크입니다.

다음은 그 결과로 생성될 수 있는 소스 링크의 예입니다.
http://proxy.gitlab.example.com/f9dd2b40157757eb82afeedbf1290ffb67a3aeeb/68747470733a2f2f61626f75742e6769746c61622e636f6d2f696d616765732f70726573732f6c6f676f2f6a70672f6769746c61622d69636f6e2d7267622e6a7067