자산 프로시

Tier: Free, Premium, Ultimate Offering: Self-managed, GitLab Dedicated

공개-facing GitLab 인스턴스를 관리할 때의 잠재적인 보안 문제는
문제 및 댓글에 이미지를 참조하여 사용자의 IP 주소를 훔치는 능력입니다.

예를 들어, ![예시 이미지](http://example.com/example.png)
이슈 설명에 추가하면 이미지는 외부 서버에서 로드되어 표시됩니다. 그러나, 이는 외부 서버가
사용자의 IP 주소를 기록할 수 있도록 허용합니다.

이를 완화하는 한 가지 방법은 외부 이미지를 자신이 제어하는 서버로 프록시하는 것입니다.

GitLab은 문제가 발생하거나 댓글에서 외부 이미지/비디오/오디오를 요청할 때
자산 프록시 서버를 사용하도록 구성할 수 있습니다. 이는 악의적인 이미지가
불러올 때 사용자의 IP 주소를 노출하지 않도록 돕습니다.

우리는 현재 cactus/go-camo
를 사용하는 것을 추천합니다. 이 도구는 비디오와 오디오의 프록시를 지원하며 더 많은
구성이 가능합니다.

Camo 서버 설치

Camo 서버는 프록시로 작동하는 데 사용됩니다.

자산 프록시로 Camo 서버를 설치하려면:

  1. go-camo 서버를 배포합니다. 유용한 지침은
    building cactus/go-camo에서 확인할 수 있습니다.

  2. 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은 자동으로 허용됩니다.
  3. 변경 사항이 적용되도록 서버를 재시작합니다. 자산 프록시에 대한 값을 변경할 때마다 서버를 재시작해야 합니다.

Camo 서버 사용

Camo 서버가 실행 중이고 GitLab 설정을 활성화하면
외부 소스를 참조하는 이미지, 비디오 또는 오디오가 Camo 서버로 프록시됩니다.

예를 들어, 다음은 Markdown에서 이미지에 대한 링크입니다:

![로고](https://about.gitlab.com/images/press/logo/jpg/gitlab-icon-rgb.jpg)  

다음은 결과적으로 발생할 수 있는 소스 링크의 예입니다:

http://proxy.gitlab.example.com/f9dd2b40157757eb82afeedbf1290ffb67a3aeeb/68747470733a2f2f61626f75742e6769746c61622e636f6d2f696d616765732f70726573732f6c6f676f2f6a70672f6769746c61622d69636f6e2d7267622e6a7067