在Jupyter笔记本中存储密码
将您的凭证存储在JSON或YAML中,让笔记本解析必要的部分。
import json
with open('credentials.json') as f:
data = json.load(f)
username = data['username']
password = data['password']
您应该避免在单元输出中打印秘密,否则任何您选择的技术都将被挫败。
嗯......这个有效的隐藏它从平淡的看法,但问题是,访问笔记本的人仍然可以获得秘密。我猜没有办法阻止访问笔记本的人访问秘密...... – sargeMonkey
有什么办法可以阻止访问笔记本的人访问秘密? – sargeMonkey
不是我能想到的。如果脚本(笔记本)可以访问秘密进行身份验证,则笔记本用户可以使用相同的方法查看秘密。 – cco
cco's answer is good,但如果你正在寻找一个更简单的解决方案,许多人使用环境变量来保持秘密与源代码隔离。
例如,你可以在shell执行你的脚本时,为他们提供:
$ API_TOKEN=abc123 python script.py
在你的源代码:
import os
API_TOKEN = os.environ.get("API_TOKEN")
为了您Jupyter笔记本电脑,您可以使用python-dotenv
或类似的包来“检索”一个.env
文件,该文件包含项目的秘密并且被版本控制系统忽略。
一旦你创建了.env
文件(手动或使用the package's command line tool),你可以像这样在Jupyter(或IPython中)使用python-dotenv
:
%load_ext dotenv
%dotenv
import os
os.environ.get("API_TOKEN")
有什么办法可以阻止访问笔记本的人访问这个秘密? – sargeMonkey
@sargeMonkey秘密将在命令行或'.env'文件中提供。如果它在'.env文件中,你根本不会把这个文件给其他人。 –
是的,但具有笔记本访问权限的人可以通过简单地执行os.environ.get(“API_TOKEN”)来访问密钥,对吧? – sargeMonkey
你真的需要封装的API访问您的自己的安全服务。 –
感谢Kenny ......我最终这样做了......创建了一个exe文件来读取机器商店中的秘密,执行特权命令并返回输出 - 我把这个exe文件从笔记本电脑 – sargeMonkey