如何在 windows 中安全地存储数据库凭据?

How to securely store database credentials in windows?

我使用python和SQL-server来管理数据库,但是我"good practices"不懂数据库管理,对安全信息知之甚少。

将 Windows 中的数据库凭据保存为环境变量并将其用于 os.environ 的脚本是否安全?像这样:

import os
DB_HOST = os.environ['DBHOST']
DB_USER = os.environ['DBUSER']
... 

存储凭据以自动使用数据库的正确方法是什么?

如果您询问是否应该为您的笔记本电脑永久设置环境变量 - 我会避免这种情况,因为任何进程都可以列出 PC 上的 所有 环境变量和相关的存储值很容易。

相反 - 我建议查看 Keyring。这将使用 Windows Credential Locker(或其他 OS 特定密钥环服务)。

通常安全凭据存储在与您当前环境相关的 .env 文件中,然后从您的代码中获取。例如 DB_HOST = env('DBHOST').

基本上是您现在正在做的事情,但存储在一个文件中(尽可能安全,可能是加密的)而不是直接作为环境变量,因为它们可以从整台机器访问。

通过在sql server中使用Encryptbypassphrase('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

In that code we are provide the original password but it stored in the database table by encrypted value.

我的输出截图: