자산 프록시
공개 GitLab 인스턴스를 관리할 때 발생할 수 있는 가능한 보안 문제 중 하나는 이슈 및 코멘트에서 이미지를 참조하여 사용자의 IP 주소를 탈취할 수 있는 능력입니다.
예를 들어, 이슈 설명에 
를 추가하면 해당 이미지가 외부 서버에서 로드되어 표시됩니다. 그러나 이로 인해 외부 서버가 사용자의 IP 주소를 기록할 수도 있습니다.
이를 완화하기 위한 한 가지 방법은 외부 이미지를 사용자가 제어하는 서버로 프록시하는 것입니다.
GitLab은 이슈 및 코멘트에서 외부 이미지/동영상/오디오를 요청할 때 자산 프록시 서버를 사용하도록 구성할 수 있습니다. 이를 통해 악의적인 이미지가 가져올 때 사용자의 IP 주소가 노출되지 않도록 도와줍니다.
현재는 cactus/go-camo를 사용하는 것을 권장합니다. 해당 프록시 서버는 동영상 및 오디오의 프록시를 지원하고 더 많은 구성이 가능합니다.
Camo 서버 설치
Camo 서버는 프록시로 작동하는 데 사용됩니다.
자산 프록시로 Camo 서버를 설치하려면 다음을 수행하세요:
-
go-camo
서버를 배포합니다. 도움이 되는 지침은 cactus/go-camo 빌드에서 찾을 수 있습니다. -
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 서버로 프록시됩니다.
예를 들어, 다음은 마크다운에서 이미지에 대한 링크입니다:

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