【问题标题】:How to hide SQL Plus password in Python script如何在 Python 脚本中隐藏 SQL Plus 密码
【发布时间】:2018-06-19 13:43:37
【问题描述】:

我创建了截断 Oracle 表的 Python 脚本。我使用 SQL Plus,但问题是我现在必须隐藏纯文本密码。我有这样的论点:

db_name = "DB_NAME"
db_user = "DB_USER"
db_password = "DB_PASS"

然后我运行如下命令:

sqlplus_delete_table = 'echo "TRUNCATE TABLE ' + db_user + '.' + table + ' DROP STORAGE;"'
sqlplus_connection = db_user + '/' + db_password + '@' + db_name
os.system(sqlplus_delete_table + ' | sqlplus -s ' + sqlplus_connection)

一切正常,但问题是密码。据我所知,SQL Plus 不使用 jceks 文件。那么还有哪些隐藏密码的解决方案呢?

【问题讨论】:

  • 尝试获取环境变量或从其他配置脚本/文件加载

标签: python sql sqlplus


【解决方案1】:

您可以使用 Django 的SECRET_KEY 之类的解决方案,我将其存储在一个不在项目存储库中的文件中。从这个文件中,我在settings.py 中加载这样的键:

with open(os.path.join(ROOT_DIR, 'etc/secret_key.txt')) as f:
    SECRET_KEY = f.read().strip()

在上面的示例中,文本文件的内容只是关键,但您可以使用 JSON、YAML 甚至 Python 文件等结构化格式并导入它。

Python 秘密文件示例:

# secret.py
DB_PSSWD='pswd'
DB_USER='user'

简单地在您的源代码中:

import secret

print(DB_USER)

YAML 机密文件示例:

# secret.yaml
db_psswd: pswd
db_user: user

简单地在您的源代码中:

import yaml

with open('secret.yaml') as yaml_secret:
    rules = yaml.load(cfg)
print(rules['db_user'])

【讨论】:

    【解决方案2】:

    在 Linux 上,可以创建 bash 脚本,例如:

    # sql.env
    export db_PSSWD='pswd'
    export db_USER='user'
    

    在运行python之前,先运行bash-script初始化环境变量:

    source sql.env
    

    然后,在python

    db_psswd = os.environ.get("db_PSSWD")
    db_user = os.environ.get("db_USER")
    

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 2010-10-10
      • 1970-01-01
      • 2022-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      相关资源
      最近更新 更多