一个用于使用HTTPS身份验证的Pixar拖拉机的框架,可以通过Freeipa或其他PAM模块安全登录。容器需要一些特权访问,例如
X-Forwarded-For -theherers,因此代理容器使用主机网络作为透明的TLS末端代理在主机机器上(已通过岩石8.8进行了测试),安装Docker和Docker组成。将主机注入费员或其他身份验证服务。该配置使用HBAC(基于主机的访问控制)规则,允许所有用户通过名为tractor-sssd的自定义服务登录。这允许拖拉机Web控制台登录,但通过SSH限制登录。
NGINX容器使用Iptables配置其透明代理,但没有许可在主机系统上需要modprobe所需的内核模块。要在运行系统上启用它们,请运行sudo modprobe iptable_mangle x_tables xt_mark
要在启动时启用这些模块,请使用以下内容创建File /etc/modules-load.d/tractor-https.conf 。
iptable_mangle
x_tables
xt_mark
克隆这个仓库。将所有拖拉机配置文件放在config/目录中(在此存储库中)。这是拖拉机期望的文件列表:
blade.config
crews.config
db.config
limits.config
menus.config
postgresql.conf
shared.linux.envkeys
shared.macosx.envkeys
shared.windows.envkeys
tractor.config
trSiteDashboardFunctions.js
trSiteFunctions.py
trSiteLdapLoginValidator.py
trSiteLoginValidator.py
为了避免与端口80上的主机网络代理集装箱聆听的冲突,拖拉机发动机必须在端口8080上运行(或您选择的另一个端口,您需要手动配置此端口)。为此,请在config/tractor.config中设置ListenerPort :
{
...
"ListenerPort" : 8080 ,
...
}在主目录中创建一个名为env的文件。如果您打算使用机组同步模块,请在此处定义WRANGLER_GROUP和ADMIN_GROUP 。这些是CREW SYNC服务将检查的UNIX组名称。如果使用PIXAR_LICENSE_FILE变量,也可以在此处定义它。示例配置:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
创建一个名为admin_user.txt的文件。这包含凭证,该凭证将在freeipa中更新组后,将使用机组人员使用来自动加载船员配置。确保在此文件上适当设置权限,以便docker组和其他必要的管理用户可以看到它:
username
password
将拖拉机安装rpm放置在tractor-base文件夹中的Pixar中。 (Docker寻找一个名为Tractor-2.4.x86_64.rpm的文件)
命名您的SSL证书文件cert.crt和cert.key并将其放在certs文件夹中
毕竟,您的目录应该像这样:
.
├── admin_user.txt
├── certs
│ ├── cert.crt
│ └── cert.key
├── config
│ ├── blade.config
│ ├── crews.config
│ ├── db.config
│ ├── limits.config
│ ├── menus.config
│ ├── postgresql.conf
│ ├── shared.linux.envkeys
│ ├── shared.macosx.envkeys
│ ├── shared.windows.envkeys
│ ├── tractor.config
│ ├── trSiteDashboardFunctions.js
│ ├── trSiteFunctions.py
│ ├── trSiteLdapLoginValidator.py
│ └── trSiteLoginValidator.py
├── crew-sync.sh
├── docker-compose.yml
├── env
├── proxy
│ ├── networking.sh
│ └── nginx.conf
├── README.md
├── tractor-base
│ ├── Dockerfile
│ ├── sssd-tractor
│ └── Tractor-2.4.x86_64.rpm
└── TrHttpRPC.py.patch
在config/crews.config中,将ValidLogins更改为外部登录名,并将SitePasswordValidator设置为internal:PAM:sssd-tractor :
{
...
"Crews" : {
"ValidLogins" : [ " @externlogins " ],
...
},
...
"SitePasswordValidator" : " internal:PAM:sssd-tractor "
}机组同步模块检查对env文件中定义的UNIX组的更新,并使用这些用户名填充文件config/admins config/wranglers 。要将这些文件包括在您的config/crews.config中,进行以下更改:
{
...
"Crews" : {
...
"Wranglers" : [ " @merge('wranglers') " , " hard-coded users or other config " ],
"Administrators" : [ " @merge('admins') " , " hard-coded users or other config " ]
},
...
}要禁用机组人员同步模块,请在docker-compose.yml中评论crew-sync块。
最后,您应该能够构建并启动容器:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logs为了使拖拉机叶片通过SSL与发动机正确通信,我们需要使用Beta Python 3式拖拉机的构建。在撰写本文时,可以从Renderman论坛下载此构建。最近的Renderman Pro服务器安装中还包括Python 3 API。
需要修补文件TrHttpRPC.py ,以使用此git repo中包含的补丁( TrHttpRPC.py.patch )中使用SSL固定连接。这取决于OpenSSL 10库,该库可以通过软件包管理器安装(以下在Rocky 8.8上测试的命令)。
修补Renderman Pro服务器安装:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patch修补拖拉机3 Beta刀片:
dnf install -y compat-openssl10
# as of this writing, the beta build is `tractor-blade3b1.2308.pyz`
# unzip the tractor-blade python executable
mkdir tractor-blade3b1.2308
unzip tractor-blade3b1.2308.pyz -d tractor-blade3b1.2308
cd tractor-blade3b1.2308
# patch the file
patch ./TrHttpRPC.py path/to/TrHttpRPC.py.patch
# re-zip the executable (this assumes that you have rmanpy3 in your PATH)
cd ../
rmanpy3 -m zipapp tractor-blade3b1.2308 -p ' /usr/bin/env rmanpy3 '在tractor-blade过程的标志中(通过SYSCONFIG或其他方式配置),请确保指定拖拉机引擎的端口号和完全合格的主机名(SSL要求主机名具有完全合格),例如
path/to/tractor-blade3b1.pyz --engine=tractor-engine.example.com:443参考