Skip to content

Commit 92afa19

Browse files
committed
Allow to configure sensitive variables using files/secrets
1 parent 2224d2e commit 92afa19

2 files changed

Lines changed: 48 additions & 8 deletions

File tree

1.3/settings.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@
118118
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
119119
# )
120120

121-
# Make this unique, and don't share it with anybody.
121+
# Default value, this value must be overwritten using one of the following
122+
# environment variables: SECRET_KEY or SECRET_KEY_FILE
122123
SECRET_KEY = '4&0+qo=m4yk!7hohzh&xsw=i&g_7t88*-9_^j(xi!fzm9zz^7l'
123124

124125
ROOT_URLCONF = 'wirecloud_instance.urls'
@@ -137,18 +138,37 @@
137138
"EMAIL_HOST_USER",
138139
"FIWARE_IDM_SERVER",
139140
"FIWARE_IDM_PUBLIC_URL",
140-
"SOCIAL_AUTH_FIWARE_KEY",
141-
"SOCIAL_AUTH_FIWARE_SECRET",
142141
"KEYCLOAK_SERVER",
143142
"KEYCLOAK_REALM",
144143
"KEYCLOAK_KEY",
145144
"SECRET_KEY",
146145
"SESSION_COOKIE_NAME",
146+
"SOCIAL_AUTH_FIWARE_KEY",
147+
"SOCIAL_AUTH_FIWARE_SECRET",
148+
"SOCIAL_AUTH_KEYCLOAK_KEY",
149+
"SOCIAL_AUTH_KEYCLOAK_SECRET",
150+
)
151+
SENSITIVE_SETTINGS = (
152+
"EMAIL_HOST_PASSWORD",
153+
"KEYCLOAK_KEY",
154+
"SECRET_KEY",
155+
"SOCIAL_AUTH_FIWARE_KEY",
156+
"SOCIAL_AUTH_FIWARE_SECRET",
147157
"SOCIAL_AUTH_KEYCLOAK_KEY",
148158
"SOCIAL_AUTH_KEYCLOAK_SECRET",
149159
)
150160
for setting in STRING_SETTINGS:
151-
value = os.environ.get(setting, "").strip()
161+
if setting in SENSITIVE_SETTINGS and (setting + '_FILE') in os.environ:
162+
filename = os.environ[setting + '_FILE']
163+
try:
164+
with open(filename, 'rb') as f:
165+
value = f.read()
166+
except IOError as error:
167+
print("Error reading the file ({}) pointed out by {}: {}".format(setting + '_FILE', filename, error))
168+
print("Ignoring it")
169+
value = os.environ.get(setting, "").strip()
170+
else:
171+
value = os.environ.get(setting, "").strip()
152172
if value != "":
153173
locals()[setting] = value
154174

dev/settings.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@
118118
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
119119
# )
120120

121-
# Make this unique, and don't share it with anybody.
121+
# Default value, this value must be overwritten using one of the following
122+
# environment variables: SECRET_KEY or SECRET_KEY_FILE
122123
SECRET_KEY = '4&0+qo=m4yk!7hohzh&xsw=i&g_7t88*-9_^j(xi!fzm9zz^7l'
123124

124125
ROOT_URLCONF = 'wirecloud_instance.urls'
@@ -136,18 +137,37 @@
136137
"EMAIL_HOST_USER",
137138
"FIWARE_IDM_SERVER",
138139
"FIWARE_IDM_PUBLIC_URL",
139-
"SOCIAL_AUTH_FIWARE_KEY",
140-
"SOCIAL_AUTH_FIWARE_SECRET",
141140
"KEYCLOAK_SERVER",
142141
"KEYCLOAK_REALM",
143142
"KEYCLOAK_KEY",
144143
"SECRET_KEY",
145144
"SESSION_COOKIE_NAME",
145+
"SOCIAL_AUTH_FIWARE_KEY",
146+
"SOCIAL_AUTH_FIWARE_SECRET",
147+
"SOCIAL_AUTH_KEYCLOAK_KEY",
148+
"SOCIAL_AUTH_KEYCLOAK_SECRET",
149+
)
150+
SENSITIVE_SETTINGS = (
151+
"EMAIL_HOST_PASSWORD",
152+
"KEYCLOAK_KEY",
153+
"SECRET_KEY",
154+
"SOCIAL_AUTH_FIWARE_KEY",
155+
"SOCIAL_AUTH_FIWARE_SECRET",
146156
"SOCIAL_AUTH_KEYCLOAK_KEY",
147157
"SOCIAL_AUTH_KEYCLOAK_SECRET",
148158
)
149159
for setting in STRING_SETTINGS:
150-
value = os.environ.get(setting, "").strip()
160+
if setting in SENSITIVE_SETTINGS and (setting + '_FILE') in os.environ:
161+
filename = os.environ[setting + '_FILE']
162+
try:
163+
with open(filename, 'rb') as f:
164+
value = f.read()
165+
except IOError as error:
166+
print("Error reading the file ({}) pointed out by {}: {}".format(setting + '_FILE', filename, error))
167+
print("Ignoring it")
168+
value = os.environ.get(setting, "").strip()
169+
else:
170+
value = os.environ.get(setting, "").strip()
151171
if value != "":
152172
locals()[setting] = value
153173

0 commit comments

Comments
 (0)