에셋 프록시
Offering: GitLab Self-Managed, GitLab Dedicated
공개용 GitLab 인스턴스를 관리할 때 발생할 수 있는 보안 우려는 이슈 및 코멘트에서 이미지를 참조하여 사용자의 IP 주소를 도용할 수 있는 가능성입니다. 예를 들어 이슈 설명에 를 추가하면 이미지가 외부 서버에서 로드되어 표시됩니다.
공개용 GitLab 인스턴스를 관리할 때 발생할 수 있는 보안 우려는 이슈 및 코멘트에서 이미지를 참조하여 사용자의 IP 주소를 도용할 수 있는 가능성입니다.
예를 들어 이슈 설명에 를 추가하면 이미지가 외부 서버에서 로드되어 표시됩니다. 그러나 이를 통해 외부 서버가 사용자의 IP 주소를 기록할 수 있습니다.
이를 완화하는 한 가지 방법은 제어하는 서버로 외부 이미지를 프록시하는 것입니다.
GitLab은 이슈 및 코멘트에서 외부 이미지/동영상/오디오를 요청할 때 에셋 프록시 서버를 사용하도록 구성할 수 있습니다. 이렇게 하면 악성 이미지가 가져올 때 사용자의 IP 주소를 노출하지 않도록 할 수 있습니다.
현재 동영상, 오디오 프록시를 지원하고 더 구성 가능한 cactus/go-camo 사용을 권장합니다.
Camo 서버 설치#
Camo 서버는 프록시 역할을 합니다.
에셋 프록시로 Camo 서버를 설치하려면:
-
go-camo서버를 배포합니다. cactus/go-camo 빌드에서 유용한 지침을 찾을 수 있습니다.[!warning] 에셋 프록시 서버는
form-action 'none'(기본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 서버로 프록시됩니다.
예를 들어 다음은 Markdown의 이미지 링크입니다:

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