从外部安全访问docker容器而不暴露它

时间:2019-01-30 10:46:52

标签: docker security docker-swarm database-administration

我当前正在设置一个docker swarm模式集群,其中包含多个节点,并且在所述节点上运行堆栈。

节点的唯一入口点是端口80、443(前代理)和22(ssh)。我所有的容器都与外部隔离,并连接到Docker覆盖网络(节点之间的专用VLAN),以进行容器间通信。只要我不必从外部访问服务,它就可以很好地工作。

schema

当前的难题是如何从远程工作站安全地管理在我的群集模式集群上运行的mysql数据库,而不会将3306端口暴露给Internet。理想情况下,我希望能够简单地在Workbench中键入容器/服务名称以到达所需的容器,而不必手动找出IP。不允许通过SSH访问终端计算机。

到目前为止,我的领导力是在群集上设置一个openvpn服务器,该服务器可以访问我希望从外部访问的所有容器网络,并在工作站上登录该vpn,但我不确定那是否是最好的方法

您如何安全地远程访问服务而不暴露它们?

1 个答案:

答案 0 :(得分:0)

一种方便的方法是VPN。但是您需要公开服务,然后在网关/节点防火墙上禁止从Internet到内部访问。如果您要进行目标NAT,请不要发布内部服务(例如mysql)。

然后,您可以为每个服务分配一个内部DNS名称,该名称指向群集中的所有节点,因此无论容器在哪个节点上运行,您都可以连接到DNS名称。这样,您只需要连接VPN(它将内部DNS设置添加到您的工作站)并将工作台连接到mysql或任何其他内部应用程序即可。