你在储存库秘密和伟大的超越之间的联系。
locksmith的Python项目详细描述
锁匠
repository secrets和beyond之间的联系。
概述
locksmith
充当机密和使用它们的python代码之间的接口。
用例
请考虑以下场景:您的酷新应用程序需要一个光滑的、唯一的api密钥才能运行。也许您的框架要求您将这个api密钥放在manifest.json
或AppDelegate
文件中。但是,需要将清单文件签入github,从而公开宝贵的api密钥。locksmith
提供了一个安全层,防止您在存储库中的任何位置以明文形式键入机密。
工作原理
locksmith
使用^{locksmith
公开一个简单的api来访问代码中的秘密,而不是键入类似API_KEY = "something_that_shouldn't_be_shared"
的内容。
安装
安装时使用pip
:
pip3 install locksmith
另外,确保安装了gpg
。您可以使用^{
brew install gpg
如果您也想使用pinentry
,并且您使用的是Mac,请安装pinentry-mac
:
brew install pinentry-mac
设置和背景
首先,决定谁会利用你的秘密。locksmith
根据程序员定义的用户查找机密。例如,如果我是repo的唯一用户,那么唯一的用户就是wcarhart
。然而,也许您正在合作一个repo,在这里您有两个用户,比如wcarhart
和friend_user
。或者,您可能正在协作一个repo,但您只想为locksmith
使用一个联合用户,例如locksmith_user
。
如果您有一个用户locksmith_user
,请将以下文件locksmith_user.lcksmth
添加到存储库中(但不要将其签入版本控制!):
secret0=secret_value0
secret1=secret_value1
...
secretN=secret_valueN
此文件的实际值示例如下:
API_KEY=3eWhJtewSr0sSshNX9STOLUV1nGtFznxQM8UfyYH
DATABASE_USER=admin
DATABASE_AUTH=password
如果您将此文件命名为locksmith_user.lcksmth
,则这些机密将对用户locksmith_user
或任何知道locksmith_user
密码的用户可用。
现在,使用gpg
:
gpg -c locksmith_user.lcksmth
输入所需的密码。这将生成一个文件locksmith_user.lcksmth.gpg
。现在可以安全地将其签入到版本控制中。
用法和API
使用量
首先,确保在python代码中包含locksmith
:
from locksmith import Locksmith
然后,根据您定义的用户创建一个Locksmith
对象:
l = Locksmith("locksmith_user")
执行上述行时,将提示您输入locksmith_user
的密码。只有当您安装了一个新的Locksmith
对象,而不是每次访问机密时,才会发生这种情况。
api
locksmith
公开以下api供您使用:
get_secret(parameter)
get_secret
函数允许您获取由parameter
指定的特定机密。像这样使用:
secret_value = l.get_secret("API_KEY")
如果传入无效的parameter
,locksmith
将引发ValueError
或LookupError
。