如何在 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.
我的输出截图:
我使用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.
我的输出截图: