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

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第三方库


热门话题
java Android Action_Edit Intent无法像以前一样调用App Gallery来编辑图片   确保JRE兼容性的java适当程序(32或64位)   java JSONArray。for循环中的add(JSONObject)正在替换for循环中的旧值,数组由循环中的最后一个值组成   java需要帮助创建一个返回数组的方法,该数组的元素是另一个数组的平方   使用SmbFile w/groovy XmlSluper()创建xml。解析()Java   检查大小后的java ArrayIndexOutOfBoundsException   乘法表中的第k个最小元素   java 401 on请求,其中指定了'permitAll()'   java如何附加ORC文件   java hibernate类模型   java IDEA没有看到由自定义注释处理器生成的方法   Servlet中未声明java SerialVersionId   java linkedlist到达列表末尾时   java如何正确对齐EditText光标?   java 6编译器1.6上的eclipse重写方法错误   java如何在基于Jersey的RESTful Web服务中读取post数据   java如何在活动中正确使用接口?   Java的JIT编译器的工作速度有多快?