设置网关服务器

本文介绍了如何允许对托管 Shotgun 站点的访问,同时满足您工作室实施的 Internet 限制策略。

适用对象和假设

本文档适用于系统和 Shotgun 管理员。

假定读者基本了解代理、网络和 HTTP 协议。

使用网关服务器在线访问 Shotgun

网关服务器允许用户有权访问其托管 Shotgun 站点,而无权访问 Internet 的其余部分。它将过滤的请求转发至 Shotgun 端点,但阻止所有其他请求。这意味着,当用户请求 *.shotgunstudio.com 时,请求将会通过。但是,如果用户请求未授权的站点,请求将不会通过。

SGCS_-_Shotgun_Ecosystem___Gateway.png

为什么使用网关服务器?

  • 您希望将自己的网络与 Internet 隔离,但仍允许用户访问您的 Shotgun 托管实例;
  • 您希望使用已弃用的连接/加密协议连接到 Shotgun(执行此操作的风险自负)。

我们建议您使用网关服务器,而不是为 Shotgun 设置代理服务器。使用网关服务器:

  • 您不必将可能会随时间变化的复杂 IP 范围添加到白名单中;
  • 您仍然可以受益于每个 Shotgun 托管站点中包含的所有 Web 加速功能;
  • 与 S3 代理解决方案相比,使用 Amazon S3 时的性能更高;
  • 与 S3 代理解决方案相比,使用全部播放和全部上传时的性能更高。

快速入门

实施网关服务器有三个主要步骤。

  1. 实施水平分割域名系统 (DNS)。
  2. 使用 HAProxy 设置网关服务器。
  3. 配置用户环境以使用您的网关。

步骤 0:准备

为了正确配置网关服务器,您将需要以下信息:

步骤 1:水平分割 DNS

水平分割 DNS 允许根据查询来源为查询提供不同的响应(在这种情况下,为 URL 解析)。对于您工作室中的人员,您的水平分割 DNS 将您的 Shotgun URL 解析为内部 IP 地址(网关服务器),而不是解析为 Shotgun 公用 IP。

网关服务器将所有请求转发到 Shotgun IP。网关服务器具有不受限制的访问权限,可以将请求向外传送到 Internet,但所有美工人员看到的只是内部服务器,因此将访问范围仅限制于 Shotgun Internet 资源。

按照此类配置设置 DNS 需要一些基本的 IT 技能。此处是如何进行相关设置的一些示例:

如果您还没有 DNS 服务器,可能希望订购或专门指定一台服务器来执行此任务。此文章中的示例针对的是 Linux 系统。

步骤 2:将 HAProxy 配置为 Shotgun 网关

为了实施网关服务器,我们建议您使用 HAProxyHAProxy 是一个可靠、简单和高性能的 TCP/HTTP 负载平衡器,使用它可以轻松地实施网关服务器。我们建议您至少使用版本 1.6。

在附录 2 中提供了 HAProxy 配置文件示例。

步骤 3:配置用户的环境

对于所有用户

更新您的路由器或您的用户的计算机来公布此新 DNS 服务器。

对于浏览器用户

将证书颁发机构添加到您的密钥链,否则 Chrome 会警告证书不安全

对于 Python API 用户

将证书颁发机构添加到您的密钥链或设置 SHOTGUN_API_CACERTS

对于 REST API 用户

将证书颁发机构添加到您的密钥链,或者将其传递到请求或您使用的库

Toolkit 用户 将证书颁发机构添加到您的密钥链或设置 SHOTGUN_API_CACERTS
检查事项 toolkit.ini 可能具有一个 shogun_api_cacerts 设置,因此不需要环境变量。

其他检查事项:

  • toolkit.ini 可能具有一个 shogun_api_cacerts 设置,因此不需要环境变量。

后续步骤

您的 Shotgun 站点实施的 IP 访问限制

如果您设置网关服务器,则可能希望您的 Shotgun 站点仅接受来自您工作室 IP 的请求。有关更多详细信息,请参见 Shotgun 帮助中心中的“IP 白名单”

常见问题解答

网关服务器是否会使美工人员的设置变得复杂?

不会,网关服务器不会更改美工人员的 Internet 访问权限。如果美工人员当前已被允许以受限方式浏览特定站点,他们仍可以这样。从美工人员的角度来看,察觉不到变化。

所有 URL 将像以前一样继续有效。这同样适用于电子邮件和 Shotgun 生成的电子邮件中的 URL。

网关服务器是否会影响站点的速度?

不会,速度将会与直接访问一样。由于网关进行的连接缓存,速度甚至可能会更快。

是否可以监控转发内容?

可以,您可以记录通过转发代理路由的所有通信。可以从外部角度监控活动、跟踪哪些 IP 正在使用 Shotgun、发出了多少请求等。但是,由于通过 HTTPS 传输的通信会加密,因此请求的内容将会加密。

使用网关服务器时,其他工具是否可以运行?

可以,所有其他工具将继续运行。其中包括 Toolkit、Shotgun API、RV 等。

为什么 tank.shotgunstudio.com 也需要转发?

Tank.shotgunstudio.com 是 Toolkit 应用商店。Toolkit 没有它也可以运行,但还必须转发对该站点的调用,才能成功完成 Toolkit 更新。

附录 1 - 水平分割 DNS (Ubuntu)

以下步骤已在 Debian 上完成。对于不同的平台,步骤和配置文件的位置可能会有所不同。

sudo apt-get install bind9

打开 /etc/bind/named.conf 并配置 named。下面是 bind9 的一个最小 DNS 配置文件

options {
    directory "/var/cache/bind";
    # tells the dns that zones it doesn't understand should be handled by another DNS
    forwarders {
        8.8.8.8; # Google's DNS.
         //you can add here other DNS servers
    };
    dnssec-validation auto;
 
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};
logging {
    channel bind.query.log {
        file "/var/log/dns.query.log";
        print-time yes;
        severity debug 3;
    };
    category queries { bind.query.log; };
};

# Defines a zone we want to answer DNS query for
zone "shotgunstudio.com" {
    type master;
    file "/etc/bind/db.shotgunstudio.com";
};

打开 /etc/bind/db.shotgunstudio.com 并为 shotgunstudio.com 粘贴此 bind9 区域的最小配置文件(将 mysite 替换为您的工作室 URL):

$TTL    1
# This is the SOA header. I lifted this from somewhere and put very small TTL
@       IN      SOA     ns.shotgunstudio.com. root.shotgunstudio.com. (
                  4     ; Serial
                  5     ; Refresh
                  5     ; Retry
                  5     ; Expire
                  5 )   ; Negative Cache TTL

@       IN              NS              ns.shotgunstudio.com.
ns.shotgunstudio.com.      IN      A       192.168.1.174 ;A Server IP...
# This is where we are mapping our internal site to our HAProxy server address
mysite.shotgunstudio.com.  IN      A       192.168.1.174 ;Another Server IP

 

附录 2 - 将 HAProxy 配置为网关

安装 haproxy。Docker 用户可以使用最新版本的 haproxy:alpine 容器:https://hub.docker.com/_/haproxy/

apt-get install haproxy

打开 /etc/haproxy/haproxy.cfg 并配置 haproxy。下面是 haproxy 1.6 的一个配置示例。将 <> 之间的部分替换为您自己的信息,包括 <> 符号。

global
 maxconn 4096
 pidfile /tmp/haproxy-queue.pid
  
defaults
 log global
 timeout connect 300000
 timeout client 300000
 timeout server 300000

# handle external ip changes
resolvers external_dns
nameserver dns1 <external_dns_ip>:53
resolve_retries 3
timeout retry 1s
hold valid 10s # in case someone enters SG address without https listen http_redirect
bind <internal_ip_address_1>:80 mode http redirect scheme https code 301 if !{ ssl_fc } listen shotgun_proxy
bind <internal_ip_address_1>:443 mode tcp server app1 <your_site_name>.shotgunstudio.com:443 listen shotgun_s3_proxy
bind <internal_ip_address_2>:443 mode tcp server app1 sg-media-usor-01.s3-accelerate.amazonaws.com:443

listen shotgun_tank_proxy
bind <internal_ip_address_3>:443
 mode tcp
 server app1 tank.shotgunstudio.com:443

启动服务

sudo service haproxy start
关注

0 评论

登录写评论。