Skip to content

1.0.0

Choose a tag to compare

@ryan-shaw ryan-shaw released this 29 Jan 11:48
· 37 commits to main since this release
38c0c19

Django encrypted fields with support for multiple backends, currently supports symmetric encryption using Fernet and AWS Secrets Manager. Two fields types are currently supported, SecretTextField and SecretJSONField.

⚙️ Installation

Install django-secrets-fields:

pip install django-secrets-fields

To use backend that requires AWS install using:

pip install django-secrets-fields[aws]

🤖 Usage

settings.py

DJANGO_SECRET_FIELDS = {
    "default": {
        "backend": "secrets_fields.backends.encrypted.EncryptedBackend",
        "encryption_key": b"<fernet key>",
    },
    "aws": {
        "backend": "secrets_fields.backends.secretsmanager.SecretsManagerBackend",
        "prefix": "/path/",
    },
}

A Fernet can be generated using the following command:

python manage.py generate_fernet_key

models.py

from django.db import models
from secrets_fields.fields import SecretJSONField, SecretTextField


class MyModel(models.Model):
	secret_text = SecretTextField(backend="aws")
	secret_json = SecretJSONField()