将用户名和密码存储在 python 变量中是否安全
Is it safe storing username and password in python variable
所以我使用 docker 和 docker-compose 部署我的 python 项目,我想使用 pymongo 连接 mongodb(它不在同一主机上)并且我看到一些示例在这样的连接字符串中包含它们的 username/password。
from pymongo import MongoClient
username = 'pattypatty'
password = 'notrealpwd'
host = 'db.pattypatty.com'
port = '27017'
connection_str = f'mongodb://{username}:{password}@{host}:{port}'
client = MongoClient(connection_str)
我想试试,但是,在 python 代码中包含您的用户名和密码安全吗?如果不是,我应该如何保护我的用户名和密码。
我在网络方面没有太多经验,但我想你应该将你的配置变量存储在 .env 文件中
您可以使用这个 github:
https://github.com/henriquebastos/python-decouple
切勿对敏感信息进行硬编码。
这样做的第一个原因是,如果您将脚本放入源代码管理(如 git),即使在您删除它之后,它也会一直存在于提交历史记录中(除非您专门改写你的历史)。
配置文件是下一步。将它们保留在 .gitignore
中是个好主意,以防止在有人执行类似 git add .
的操作时出现同样的问题。但是您的密码仍然是纯文本形式,因此任何有权访问配置文件的人和任何事物都可以访问。在您的示例中,这将存储在您周围的任何 docker 图像中,将在 docker 服务之间传递,并可能打印到某处的标准输出。
但实际上,您应该有某种机制以加密形式存储您的密码。
在 Docker 的上下文中,有一种名为 docker secrets 的机制可以加密您的敏感信息,将其挂载到容器中的文件中(在 /etc/secrets
下),并且为您的容器提供解密它的能力。如果它被打印到日志中,它会自动出现为“****”。然后,您可以在 python 脚本中读取该文件。
所以我使用 docker 和 docker-compose 部署我的 python 项目,我想使用 pymongo 连接 mongodb(它不在同一主机上)并且我看到一些示例在这样的连接字符串中包含它们的 username/password。
from pymongo import MongoClient
username = 'pattypatty'
password = 'notrealpwd'
host = 'db.pattypatty.com'
port = '27017'
connection_str = f'mongodb://{username}:{password}@{host}:{port}'
client = MongoClient(connection_str)
我想试试,但是,在 python 代码中包含您的用户名和密码安全吗?如果不是,我应该如何保护我的用户名和密码。
我在网络方面没有太多经验,但我想你应该将你的配置变量存储在 .env 文件中
您可以使用这个 github: https://github.com/henriquebastos/python-decouple
切勿对敏感信息进行硬编码。
这样做的第一个原因是,如果您将脚本放入源代码管理(如 git),即使在您删除它之后,它也会一直存在于提交历史记录中(除非您专门改写你的历史)。
配置文件是下一步。将它们保留在 .gitignore
中是个好主意,以防止在有人执行类似 git add .
的操作时出现同样的问题。但是您的密码仍然是纯文本形式,因此任何有权访问配置文件的人和任何事物都可以访问。在您的示例中,这将存储在您周围的任何 docker 图像中,将在 docker 服务之间传递,并可能打印到某处的标准输出。
但实际上,您应该有某种机制以加密形式存储您的密码。
在 Docker 的上下文中,有一种名为 docker secrets 的机制可以加密您的敏感信息,将其挂载到容器中的文件中(在 /etc/secrets
下),并且为您的容器提供解密它的能力。如果它被打印到日志中,它会自动出现为“****”。然后,您可以在 python 脚本中读取该文件。