如何在 Windows 中安全地存储数据库凭据?
Posted
技术标签:
【中文标题】如何在 Windows 中安全地存储数据库凭据?【英文标题】:How to securely store database credentials in windows? 【发布时间】:2018-08-15 13:52:50 【问题描述】:我使用 python 和 SQL-server 来管理数据库,但我不知道有关数据库管理的“良好做法”,对安全信息知之甚少。
在 Windows 中将数据库凭据保存为环境变量并将其用于带有os.environ
的脚本是否安全?像这样:
import os
DB_HOST = os.environ['DBHOST']
DB_USER = os.environ['DBUSER']
...
如何正确存储凭据以自动使用数据库?
【问题讨论】:
【参考方案1】:如果您询问是否应该为您的笔记本电脑永久设置环境变量 - 我会避免这样做,因为任何进程都可以很容易地列出 PC 上的所有环境变量以及相关的存储值。
相反 - 我建议查看 Keyring。这将使用 Windows Credential Locker(或其他操作系统特定的密钥环服务)。
【讨论】:
【参考方案2】:通常安全凭据存储在与您当前环境相关的 .env 文件中,然后从您的代码中获取。例如 DB_HOST = env('DBHOST')。
基本上是您现在正在做的事情,但存储在文件中(尽可能安全,可能已加密),而不是直接作为环境变量,因为它们可以从整台机器访问。
【讨论】:
【参考方案3】:通过在 sqlserver 中使用 Encryptedbypassphrase('key','Your_Password') 方法, 例如,
create table #temp(id int identity(1,1),Password varbinary(max))
insert into #temp(Password) values(encryptbypassphrase('12','Passw0rd'))
select * from #temp
在该代码中,我们提供了原始密码,但它存储在数据库中 按加密值表。
我的输出截图:
【讨论】:
以上是关于如何在 Windows 中安全地存储数据库凭据?的主要内容,如果未能解决你的问题,请参考以下文章