Linux/Python:如何在Python文件中隐藏敏感信息,以便环境中的开发人员无法访问它?

2024-05-29 11:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django项目在Ubuntu服务器上运行。还有其他的开发人员能够通过ssh连接到设备中并查看文件。我希望这样做,以便settings.py中的mysql凭据和api密钥可能被分离到一个不同的文件中,该文件只能由root用户查看,但也可以由django项目运行。在

我以前的方法是使密码文件只能访问根:根chmod 600,但mysettings.py在尝试导入密码文件的变量时抛出一个ImportError。我读过关于setuid的文章,但这似乎一点都不安全。我想做的事情有什么好办法?谢谢。在


Tags: 文件项目django用户py服务器apisettings
3条回答

我将把密码文件放在Django用户拥有600个权限的目录中。Django用户可以做它需要做的事情,其他人甚至不能在目录中查找(除了root和Django)

您可以做的另一件事是将它存储在数据库中并设置它,以便数据库中的root用户和Django用户具有唯一的密码,这样只有拥有这些密码的人才能访问它。IE系统根不再与DB根相同。在

看看文件系统ACL,setfacl manpage。在

您可以让questibled中的文件仅由root用户拥有和可读,但也允许Django代码以任何用户身份(您的用户名、apache用户等)具有读取权限。文件系统ACL允许比标准所有者/组/其他文件权限更精细的访问控制

这正是创建dj-database-url的目的!在

使用这个包,您可以在用户的环境变量中存储数据库信息。从不同帐户登录的任何人都无法访问数据库详细信息

如何使用?在

在中配置数据库设置.py从DATABASE_URL(默认为可选):

import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://...')}

然后在你的壳里

^{pr2}$

这将使用您指定的连接运行服务器,如果DATABASE_URL未定义,则假定连接由可选的default参数传递。在

理想的情况是

^{3}$

在主目录中的.bashrc文件中,以便只有您可以读取它

相关问题 更多 >

    热门问题