跳转到主要内容

一个将配置和认证与程序逻辑分离的库

项目描述

orthauth

PyPI version Build Status Coverage Status

一个将配置和认证与程序逻辑分离的库

这不是加密的

这不是密码管理器

这不是安全的秘密存储系统

使用这个可能会自食其果

使用orthauth存储的秘密没有进行加密。Orthauth可以从多种来源获取凭证,但它是有意为之的不安全的。

如果您不理解这个用例以及在不安全环境中使用时的风险,那么请不要使用它。如果您被攻击,没有人能帮您。

用例

orthauth的主要用例是防止API密钥泄漏到源代码中,并最终出现在公共仓库中。orthauth不提供任何它使用的认证存储的操作安全。用户需要根据自身情况来确保这些存储和它们所在系统的安全性。

虽然orthauth试图防止秘密通过调试消息或日志泄露,但它不了解它返回的值的机密性,一旦它返回了该值,就取决于消费代码防止该值内容的泄露。

orthauth旨在统一两种常见的管理配置变量和凭证的方式:设置环境变量,以及将它们包含在权限设置为0600(最好保持在0700设置的文件夹中)的纯文本文件中。

例如,以下方式运行程序:export API_KEY=lolplzdonotstealthis; ./my-script-that-needs-the-key 或使用类似 ~/.pgpass 或 emacs .authinfo 的文件。请注意,对于大多数Python实现,pgpass可能不应该是一个来源,因为像psycopg2这样的库能够直接读取它。然而,在其他没有直接支持从pgpass读取的库的语言中,pgpass将是一个有用的来源。

通过提供多种方式无缝提供凭证,希望减少在不同环境中使用不同解决方案的需求,同时避免维护一个管理的认证基础设施的巨大复杂性。

方法

  1. 装饰器
  2. 在代码库中的名称和配置/秘密结构之间增加一层间接性。
  3. 明确了解什么应被视为公共信息。这样就可以防止将存储为秘密的信息用作找到另一个秘密的密钥。
  4. 存储静态配置信息的最低要求,任何更多都应该在消费配置的语言中实现,而不是在配置中实现。

当前支持的配置格式

格式 支持 安装
json 内置 pip安装orthauth
python字典字面量 内置 pip安装orthauth
yaml 需要pyyaml pip install orthauth[yaml]

使用

import orthauth as oa
auth = oa.AuthConfig('path/to/config.yaml')

@auth.tangential_init('api_key', 'some-service-api-key')
class ThatNeedsAuth:
    """ needs authenticated connection to some-service """

tna = ThatNeedsAuth()
print(tna.api_key)

还没有被吓倒吗?查看 开发者指南 了解更多示例。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

orthauth-0.0.18.tar.gz (31.8 kB 查看哈希)

上传于

构建分发

orthauth-0.0.18-py2.py3-none-any.whl (19.0 kB 查看哈希值)

上传于 Python 2 Python 3

由以下支持