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:
bash
pip install django-secrets-fields
To use backend that requires AWS install using:
bash
pip install django-secrets-fields[aws]
🤖 Usage
**settings.py**
python
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](https://cryptography.io/en/latest/fernet/) can be generated using the following command:
bash
python manage.py generate_fernet_key
**models.py**
python
from django.db import models
from secrets_fields.fields import SecretJSONField, SecretTextField
class MyModel(models.Model):
secret_text = SecretTextField(backend="aws")
secret_json = SecretJSONField()