Skip to main content

Provide settings to Django from a secret store such as Google Cloud Secrets

Project description

Yet Another Django Settings Helper

This library allows secret settings to be easily changed for dev/Staging/Production etc purposes. e.g. One might obtain development settings from the process environment but later deploy to Google Compute Engine where use of Google Secret Manager is recommended. If the app later finds its way onto AWS, a suitable fetcher can be installed or written.

I tend to put all the secret settings for an environment in a single secret as a JSON document, for cost and convenience. You can also put non-secret settings in the same document or install them as environment variables as you prefer.

** I have no affiliation with Google, Amazon or any other cloud computing provider! **

Installation

pip install dj_secret_settings

Configuration

Install settings fetchers to get the raw data from the store, and settings stores to make sense of the raw data and return pieces of it on demand.

The package can be configured with a string or by using the environment variable DJ_SECRET_SETTINGS_URL with the form:

store_type+fetcher_type://information.used.by/the/fetcher/and/or/the/store_type?like_a=url

e.g. json+gsm://anything-here-perhaps-service-account/projects/123456789/secrets/my-secret/versions/42 indicates that data will be fetched from Google Secret Manager* and interpreted as a JSON string.

* configuration of this is obviously required too, contact me if you need help with that.

The package includes a Google Secret Manager fetcher, with JSON and environment variable store types. These can be overridden by installing a root package of the form dj_secret_settings_{store_type} (e.g. dj_secret_settings_json) or dj_secret_settings_{fetcher_type} (e.g dj_secret_settings_gsm). Alternatively you can install differently named root packages and modifiy the URL (e.g dj_secret_settings_yaml for a yaml store using the URL of the form yaml+gsm://...).

Usage

from dj_secret_settings import settings_store
store = settings.store.load("json+gsm://anything-here-perhaps-service-account/projects/123456789/secrets/my-secret/versions/42")

MAX_SIZE = store.get_value('MAX_SIZE', default=314, coerce_type=int)
IS_PRODUCTION = store.get_boolean('is_production', default=FALSE)
MY_LIST = store.get_array('MY_LIST')
A_MAP = store.get_mapping('A_MAP', default={})

defaults are always optional, as is coerce_type on get_value

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dj_secret_settings-0.1.1.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dj_secret_settings-0.1.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file dj_secret_settings-0.1.1.tar.gz.

File metadata

  • Download URL: dj_secret_settings-0.1.1.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.7 CPython/3.8.6 Darwin/19.6.0

File hashes

Hashes for dj_secret_settings-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ab3220edc72921c95363153a1dc2632ac36da0b4547d460735d232d5765843f2
MD5 1567119b9befc0c29a81dbce9449e50a
BLAKE2b-256 f43a1af0ca3851ede1cb86592d5b7ea5f704e79206c6624684f203a871f2607a

See more details on using hashes here.

File details

Details for the file dj_secret_settings-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dj_secret_settings-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f24bf5b2f8e4df969676de086a00a62f860327f44f9738e045ccf8df772feb7
MD5 4b77b4a6c4515e42490bab20c4b8228a
BLAKE2b-256 e9efb03b477f0cfb87f79f8ed8477b59f5b49042ea51345573277784f6623b62

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page