我有一个生产Web应用程序平台(节点,nginx,elasticsearch,redis)处理机密数据。 应用程序最初使用Ansibleconfigurationpipe理进行部署,然后打包为文件系统映像,以便通过RPM进行部署。
银行法规要求不同的数据集只能被不同的unix用户访问,因此整个应用程序需要在同一个物理服务器上多次安装unix用户账号。 天真的做法会导致多个用户进程尝试连接到同一个端口。
一种select是生成多个RPM,为每个用户定制。 或者编写一个RPM部署脚本,试图grep通过文件系统映像和regexpreplaceconfiguration文件中的端口号。 我想避免这种做法。
这个问题是关于networking命名空间,虚拟networking接口,可能iproute / iptables。
理想情况下,我希望每个用户允许他们的所有进程绑定到他们的默认端口,并将这些进程透明地映射到外部networking接口上的用户特定端口范围(即端口80 – > 10080)。
通过使用Docker或虚拟机和虚拟networking路由可以达到同样的效果,但这些作为安全风险已被禁止。
使用networking名称空间,如何将命令行级别的进程绑定到特定的networking名称空间? 这可以设置为特定的二进制文件的默认值? 属于特定用户的所有进程是否可以自动绑定到特定的networking名称空间?
是否有可能创build一个像jail一样的chroot,或者一组环境variables,以便用户进程只能看到他们分配的虚拟networking接口? 理想情况下,不需要root权限?
非常感谢任何想法或指针?