gpt4 book ai didi

postgresql - 在docker网络中运行的服务是否不受外部连接(甚至来自localhost)的保护?

转载 作者:行者123 更新时间:2023-12-02 21:02:14 25 4
gpt4 key购买 nike

问题:
可以访问主机的任何人都可以连接到Docker网络,或者假设端口未暴露,仅在Docker网络中运行的服务仅对在Docker网络中运行的其他服务可见吗?

背景:
我目前有一个带有postgresql数据库后端的Web应用程序,其中两个组件都通过同一台机器上的Docker运行,并且只有Web应用程序公开了主机上的端口。 Web应用程序可以毫无问题地连接到数据库,因为它们位于同一个docker网络中。我正在考虑从数据库用户中删除密码,这样就不必将密码存储在主机上并将其作为 secret 传递到Web应用程序容器中。在此之前,我想确定 docker 网络的安全性。

这是我的docker-compose的示例:

version: '3.3'
services:

database:
image: postgres:9.5
restart: always
volumes:
#preserves the database between containers
- /var/lib/my-web-app/database:/var/lib/postgresql/data

web-app:
image: my-web-app
depends_on:
- database
ports:
- "8080:8080"
- "8443:8443"
restart: always
secrets:
- source: DB_USER_PASSWORD

secrets:
DB_USER_PASSWORD:
file: /secrets/DB_USER_PASSWORD

任何帮助表示赞赏。

最佳答案

在本地Linux主机上,拥有或可以找到容器专用IP地址的任何人都可以直接联系容器。 (使用ifconfig进行无特权的访问可以为您提供一些提示。)在非Linux上,通常有一个隐藏的Linux VM,如果可以在其中安装shell,则可以使用相同的技巧。当然,如果可以运行任何docker命令,则可以docker exec容器中的 shell 。

Docker的网络级保护不够强大,不足以确保数据库安全。仍然需要使用标准的用户名和密码凭据。

(请注意,docker exec路径特别强大:由于未加密的 secret 最终会写入到容器中的路径中,因此能够运行docker exec意味着您可以轻松地提取它们。仅将docker访问权限限制为root也是一种很好的安全做法。)

关于postgresql - 在docker网络中运行的服务是否不受外部连接(甚至来自localhost)的保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com