【问题标题】:How to securely store database credentials in windows?如何在 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']
... 

如何正确存储凭据以自动使用数据库?

【问题讨论】:

    标签: python sql-server windows pymssql database-security


    【解决方案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

        在该代码中,我们提供了原始密码,但它存储在数据库中 按加密值表。

        我的输出截图:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          • 1970-01-01
          • 2021-11-24
          • 1970-01-01
          相关资源
          最近更新 更多