一个用于存储和安全的访问1Password保险库项目的自定义Django字段。
项目描述
django-opfield
一个自定义的Django字段,它通过集成1Password的op
CLI,允许通过op://
秘密引用URI安全地访问秘密。
需求
- Python 3.8, 3.9, 3.10, 3.11, 3.12
- Django 4.2, 5.0
- 1Password CLI和1Password服务账户
入门
-
从PyPI安装软件包
python -m pip install django-opfield
-
安装1Password
op
CLI工具,确保它可以从您的应用程序运行的位置调用。 -
创建1Password服务账户并将服务账户的令牌提供给您的应用程序。
选择一个选项
-
设置
OP_SERVICE_ACCOUNT_TOKEN
环境变量 -
在您的应用程序的
settings.py
中进行配置# settings.py DJANGO_OPFIELD = { # Explicitly set here only as an example # Use whatever configuration/environment library you prefer # (`python-dotenv`, `django-environs`, `environs`, etc.) "OP_SERVICE_ACCOUNT_TOKEN": "super-secret-token", }
-
用法
OPField
允许Django模型安全地访问存储在1Password保险库中的秘密,从而在不直接在代码库中暴露敏感数据的情况下集成敏感数据。秘密使用op://
URI方案存储,可以通过相应的模型属性动态检索,即<field_name>_secret
。
定义模型
首先,让我们定义一个包含 OPField
的模型。这个字段将存储 1Password 中密钥的引用,而不是密钥本身。
from django.db import models
from django_opfield.fields import OPField
class APIService(models.Model):
name = models.CharField(max_length=255)
api_key = OPField()
def __str__(self):
return self.name
访问密钥
假设您在名为 "my_vault" 的 1Password 保险库中的 "my_api" 项目下有一个名为 "api_key" 的字段中存储了一个密钥 API。以下是您如何在 Django 项目中存储和访问此密钥的方法
>>> from example.models import APIService
>>> my_api = APIService.objects.create(
... name="My API", api_key="op://my_vault/my_api/api_key"
... )
>>> print(my_api)
<APIService: My API>
>>> print(my_api.name)
'My API'
>>> print(my_api.api_key)
'op://my_vault/my_api/api_key'
>>> # Retrieving the actual secret value is done using the automatically generated '_secret' attribute
>>> print(my_api.api_key_secret)
'your_super_secret_api_token_here'
存储引用,而不是密钥
仅在 Django 管理界面和数据库中存储和公开密钥的 URI 引用。实际的密钥本身从未存储,仅在访问时动态检索。这种方法使您能够在整个 Django 应用程序中安全地管理和访问密钥,从而保护免受与直接公开相关的潜在安全漏洞。
文档
有关更多信息,请参阅文档。
许可证
django-opfield
使用 MIT 许可证。有关更多信息,请参阅LICENSE
文件。
项目详情
关闭
django_opfield-0.1.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2dd37e8fca34a523cf8f3b2d9ff6d36eece2c0896d6b7679272f35e61f93261e |
|
MD5 | 739fe1be5f4551afa1e2889db43f245f |
|
BLAKE2b-256 | 0fd68a356649e76d948c360cf623ba20d9e7e3f84442db82d82b597dad14e7f6 |
关闭
django_opfield-0.1.1-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 22a5cfa5e12f991a727416636cf697ad5e357827d7a3bdc4fb4e6231537d8be7 |
|
MD5 | 2a5308586504f5ba364722381110df1a |
|
BLAKE2b-256 | 09a51de7c41b1aa70e39ee6cb1aa1f31a3b6b133831619edc2ebc33529224eea |