你在储存库秘密和伟大的超越之间的联系。

locksmith的Python项目详细描述


锁匠

repository secrets和beyond之间的联系。

概述

locksmith充当机密和使用它们的python代码之间的接口。

用例

请考虑以下场景:您的酷新应用程序需要一个光滑的、唯一的api密钥才能运行。也许您的框架要求您将这个api密钥放在manifest.jsonAppDelegate文件中。但是,需要将清单文件签入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,在这里您有两个用户,比如wcarhartfriend_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")

如果传入无效的parameterlocksmith将引发ValueErrorLookupError

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
servlets Java EE+GlassFish:如果用户在其他地方登录,则强制用户注销   java在不更改源代码的情况下添加钩子   安卓 Java TextView Onclick()返回表达式错误   java Excel文件未使用Apache存储内部内存   java getRowCount()和getSelectedColumn()不起作用   无法在java中生成视图绑定。util。Android Gradle插件2.1的NoTouchElementException   Java中的类型转换运算符百分比计算为零   主java中的调用方法   java在Javasound中播放多个示例   java如何知道webDriver成功打开URL   java jmock,每次调用时返回新对象   eclipse使用Java在Selenium WebDriver中生成可执行文件   macos捆绑Java OS X应用程序默认为MacRoman编码   java我应该把我的休息网关变成一个图书馆吗?   java Eclipse插件:查找包含子字符串的行号无效   Java IOException:在Linux上发送UDP数据包时没有可用的缓冲区空间   java无法解析jaxbxjc2中的名称“xjc:globalJavaType”。2.52.罐子   java是否有HibernateAPI来检查是否创建了数据库?