Skip to content

Commit 34384a0

Browse files
committed
- GHO-27: mask secrets in ci mode, revert some changes instituted for testing, pass env vars to container without exposing them in an assignment but leveraging their exported nature
1 parent cdf8002 commit 34384a0

2 files changed

Lines changed: 77 additions & 52 deletions

File tree

.github/workflows/pr-tofu-fmt-check.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,9 @@ jobs:
5858
- name: Run tofu fmt check (recursive)
5959
run: |
6060
docker run --rm \
61-
-e TF_VAR_cloudflare_account_id \
6261
-v "${GITHUB_WORKSPACE}:/home/devops/app" \
6362
-w /home/devops/app \
6463
ghcr.io/noahwhite/ghost-stack-shell:latest \
65-
tofu fmt -check -recursive $TF_VAR_cloudflare_account_id
64+
tofu fmt -check -recursive
6665
6766

docker/scripts/infra-shell.sh

Lines changed: 76 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -174,69 +174,81 @@ fi
174174

175175
if [[ "$USE_BWS" == "true" ]]; then
176176
# Retrieve into local variables (do not echo values)
177-
#TF_VAR_cloudflare_api_token="$(get_bws_secret "59624245-6a0c-4fde-9d6d-b39c014882a6")"
177+
TF_VAR_cloudflare_api_token="$(get_bws_secret "59624245-6a0c-4fde-9d6d-b39c014882a6")"
178+
mask_value "$TF_VAR_cloudflare_api_token"
178179
TF_VAR_cloudflare_account_id="$(get_bws_secret "2fea4609-0d6b-4d8d-b9b5-b39b002de85b")"
179180
mask_value "$TF_VAR_cloudflare_account_id"
180-
#R2_ACCESS_KEY_ID="$(get_bws_secret "9dfdf110-5a84-48c3-ad7e-b39b002afd6b")"
181-
#R2_SECRET_ACCESS_KEY="$(get_bws_secret "f5d9794d-fd45-4dcb-9994-b39b002b5056")"
182-
#TF_VAR_vultr_api_key="$(get_bws_secret "d68b6562-0d9e-424c-b2c5-b39c013ae34d")"
183-
#TAILSCALE_API_KEY="$(get_bws_secret "34b620b7-edf6-4d06-9792-b39b00317467")"
184-
#TAILSCALE_TAILNET="$(get_bws_secret "a8f07ce5-ed4d-42bb-b012-b39b00311d41")"
185-
#PD_SUBDOMAIN="$(get_bws_secret "8ee84397-e563-4278-9a3f-b39c013f7575")"
186-
#PD_CLIENT_ID="$(get_bws_secret "7d51661b-736a-43ff-b01f-b39c013fe49b")"
187-
#PD_CLIENT_SECRET="$(get_bws_secret "b15575c0-0d28-459d-b92d-b39c01403a38")"
188-
#PD_USER_TOK="$(get_bws_secret "02805292-4311-4290-9b6e-b39c01554ae6")"
189-
#TF_VAR_GC_ACCESS_TOK="$(get_bws_secret "bfc8dd06-bd97-499a-98f8-b3a101570606")"
190-
#TF_VAR_SOC_DEV_TERRAFORM_SA_TOK="$(get_bws_secret "3ebc4398-f4fa-448c-b2c1-b3a6006c063d")"
181+
R2_ACCESS_KEY_ID="$(get_bws_secret "9dfdf110-5a84-48c3-ad7e-b39b002afd6b")"
182+
mask_value "$R2_ACCESS_KEY_ID"
183+
R2_SECRET_ACCESS_KEY="$(get_bws_secret "f5d9794d-fd45-4dcb-9994-b39b002b5056")"
184+
mask_value "$R2_SECRET_ACCESS_KEY"
185+
TF_VAR_vultr_api_key="$(get_bws_secret "d68b6562-0d9e-424c-b2c5-b39c013ae34d")"
186+
mask_value "$TF_VAR_vultr_api_key"
187+
TAILSCALE_API_KEY="$(get_bws_secret "34b620b7-edf6-4d06-9792-b39b00317467")"
188+
mask_value "$TAILSCALE_API_KEY"
189+
TAILSCALE_TAILNET="$(get_bws_secret "a8f07ce5-ed4d-42bb-b012-b39b00311d41")"
190+
mask_value "$TAILSCALE_TAILNET"
191+
PD_SUBDOMAIN="$(get_bws_secret "8ee84397-e563-4278-9a3f-b39c013f7575")"
192+
mask_value "$PD_SUBDOMAIN"
193+
PD_CLIENT_ID="$(get_bws_secret "7d51661b-736a-43ff-b01f-b39c013fe49b")"
194+
mask_value "$PD_CLIENT_ID"
195+
PD_CLIENT_SECRET="$(get_bws_secret "b15575c0-0d28-459d-b92d-b39c01403a38")"
196+
mask_value "$PD_CLIENT_SECRET"
197+
PD_USER_TOK="$(get_bws_secret "02805292-4311-4290-9b6e-b39c01554ae6")"
198+
mask_value "$PD_USER_TOK"
199+
TF_VAR_GC_ACCESS_TOK="$(get_bws_secret "bfc8dd06-bd97-499a-98f8-b3a101570606")"
200+
mask_value "$TF_VAR_GC_ACCESS_TOK"
201+
TF_VAR_SOC_DEV_TERRAFORM_SA_TOK="$(get_bws_secret "3ebc4398-f4fa-448c-b2c1-b3a6006c063d")"
202+
mask_value "$TF_VAR_SOC_DEV_TERRAFORM_SA_TOK"
191203

192204
echo "Successfully retrieved secrets from Bitwarden Secrets Manager"
193205
fi
194206

195207
# Prompt for any required values not set by BWS (interactive only; CI will fail)
196-
#prompt_if_empty "TF_VAR_vultr_api_key" "Enter your Vultr API key: " true
197-
#prompt_if_empty "R2_ACCESS_KEY_ID" "Enter your R2 ACCESS KEY ID: " true
198-
#prompt_if_empty "R2_SECRET_ACCESS_KEY" "Enter your R2 SECRET ACCESS KEY: " true
199-
#prompt_if_empty "TF_VAR_cloudflare_api_token" "Enter your ghost-stack-dev Cloudflare API token: " true
208+
prompt_if_empty "TF_VAR_vultr_api_key" "Enter your Vultr API key: " true
209+
prompt_if_empty "R2_ACCESS_KEY_ID" "Enter your R2 ACCESS KEY ID: " true
210+
prompt_if_empty "R2_SECRET_ACCESS_KEY" "Enter your R2 SECRET ACCESS KEY: " true
211+
prompt_if_empty "TF_VAR_cloudflare_api_token" "Enter your ghost-stack-dev Cloudflare API token: " true
200212
prompt_if_empty "TF_VAR_cloudflare_account_id" "Enter your Cloudflare Account ID: " false
201-
#prompt_if_empty "TAILSCALE_API_KEY" "Enter your Tailscale API Key: " true
202-
#prompt_if_empty "TAILSCALE_TAILNET" "Enter your Tailscale TAILNET Name: " false
203-
#prompt_if_empty "PD_CLIENT_ID" "Enter your PagerDuty client id: " false
204-
#prompt_if_empty "PD_CLIENT_SECRET" "Enter your PagerDuty client secret: " true
205-
#prompt_if_empty "PD_SUBDOMAIN" "Enter your PagerDuty subdomain: " false
206-
#prompt_if_empty "PD_USER_TOK" "Enter your PagerDuty user API token: " true
207-
#prompt_if_empty "TF_VAR_GC_ACCESS_TOK" "Enter your Grafana Cloud access token: " true
208-
#prompt_if_empty "TF_VAR_SOC_DEV_TERRAFORM_SA_TOK" "Enter your Grafana Cloud SOC DEV Terraform access token: " true
213+
prompt_if_empty "TAILSCALE_API_KEY" "Enter your Tailscale API Key: " true
214+
prompt_if_empty "TAILSCALE_TAILNET" "Enter your Tailscale TAILNET Name: " false
215+
prompt_if_empty "PD_CLIENT_ID" "Enter your PagerDuty client id: " false
216+
prompt_if_empty "PD_CLIENT_SECRET" "Enter your PagerDuty client secret: " true
217+
prompt_if_empty "PD_SUBDOMAIN" "Enter your PagerDuty subdomain: " false
218+
prompt_if_empty "PD_USER_TOK" "Enter your PagerDuty user API token: " true
219+
prompt_if_empty "TF_VAR_GC_ACCESS_TOK" "Enter your Grafana Cloud access token: " true
220+
prompt_if_empty "TF_VAR_SOC_DEV_TERRAFORM_SA_TOK" "Enter your Grafana Cloud SOC DEV Terraform access token: " true
209221

210222
# Export (and optionally write to $GITHUB_ENV) without printing values
211-
#export_var "TF_VAR_vultr_api_key" "${TF_VAR_vultr_api_key}"
212-
#export_var "R2_ACCESS_KEY_ID" "${R2_ACCESS_KEY_ID}"
213-
#export_var "R2_SECRET_ACCESS_KEY" "${R2_SECRET_ACCESS_KEY}"
223+
export_var "TF_VAR_vultr_api_key" "${TF_VAR_vultr_api_key}"
224+
export_var "R2_ACCESS_KEY_ID" "${R2_ACCESS_KEY_ID}"
225+
export_var "R2_SECRET_ACCESS_KEY" "${R2_SECRET_ACCESS_KEY}"
214226
export_var "TF_VAR_cloudflare_account_id" "${TF_VAR_cloudflare_account_id}"
215-
#export_var "TF_VAR_cloudflare_api_token" "${TF_VAR_cloudflare_api_token}"
216-
#export_var "CLOUDFLARE_API_TOKEN" "${TF_VAR_cloudflare_api_token}"
217-
#export_var "TAILSCALE_API_KEY" "${TAILSCALE_API_KEY}"
218-
#export_var "TAILSCALE_TAILNET" "${TAILSCALE_TAILNET}"
219-
#export_var "PD_CLIENT_ID" "${PD_CLIENT_ID}"
220-
#export_var "PD_CLIENT_SECRET" "${PD_CLIENT_SECRET}"
221-
#export_var "PD_SUBDOMAIN" "${PD_SUBDOMAIN}"
222-
#export_var "PD_USER_TOK" "${PD_USER_TOK}"
223-
#export_var "TF_VAR_GC_ACCESS_TOK" "${TF_VAR_GC_ACCESS_TOK}"
224-
#export_var "TF_VAR_SOC_DEV_TERRAFORM_SA_TOK" "${TF_VAR_SOC_DEV_TERRAFORM_SA_TOK}"
227+
export_var "TF_VAR_cloudflare_api_token" "${TF_VAR_cloudflare_api_token}"
228+
export_var "CLOUDFLARE_API_TOKEN" "${TF_VAR_cloudflare_api_token}"
229+
export_var "TAILSCALE_API_KEY" "${TAILSCALE_API_KEY}"
230+
export_var "TAILSCALE_TAILNET" "${TAILSCALE_TAILNET}"
231+
export_var "PD_CLIENT_ID" "${PD_CLIENT_ID}"
232+
export_var "PD_CLIENT_SECRET" "${PD_CLIENT_SECRET}"
233+
export_var "PD_SUBDOMAIN" "${PD_SUBDOMAIN}"
234+
export_var "PD_USER_TOK" "${PD_USER_TOK}"
235+
export_var "TF_VAR_GC_ACCESS_TOK" "${TF_VAR_GC_ACCESS_TOK}"
236+
export_var "TF_VAR_SOC_DEV_TERRAFORM_SA_TOK" "${TF_VAR_SOC_DEV_TERRAFORM_SA_TOK}"
225237

226238
# Ensure required secrets are available
227-
#: "${TF_VAR_vultr_api_key:?Environment variable not set}"
228-
#: "${R2_ACCESS_KEY_ID:?Environment variable not set}"
229-
#: "${R2_SECRET_ACCESS_KEY:?Environment variable not set}"
239+
: "${TF_VAR_vultr_api_key:?Environment variable not set}"
240+
: "${R2_ACCESS_KEY_ID:?Environment variable not set}"
241+
: "${R2_SECRET_ACCESS_KEY:?Environment variable not set}"
230242
: "${TF_VAR_cloudflare_account_id:?Environment variable not set}"
231-
#: "${TF_VAR_cloudflare_api_token:?Environment variable not set}"
232-
#: "${TAILSCALE_API_KEY:?Environment variable not set}"
233-
#: "${TAILSCALE_TAILNET:?Environment variable not set}"
234-
#: "${PD_CLIENT_ID:?Environment variable not set}"
235-
#: "${PD_CLIENT_SECRET:?Environment variable not set}"
236-
#: "${PD_SUBDOMAIN:?Environment variable not set}"
237-
#: "${PD_USER_TOK:?Environment variable not set}"
238-
#: "${TF_VAR_GC_ACCESS_TOK:?Environment variable not set}"
239-
#: "${TF_VAR_SOC_DEV_TERRAFORM_SA_TOK:?Environment variable not set}"
243+
: "${TF_VAR_cloudflare_api_token:?Environment variable not set}"
244+
: "${TAILSCALE_API_KEY:?Environment variable not set}"
245+
: "${TAILSCALE_TAILNET:?Environment variable not set}"
246+
: "${PD_CLIENT_ID:?Environment variable not set}"
247+
: "${PD_CLIENT_SECRET:?Environment variable not set}"
248+
: "${PD_SUBDOMAIN:?Environment variable not set}"
249+
: "${PD_USER_TOK:?Environment variable not set}"
250+
: "${TF_VAR_GC_ACCESS_TOK:?Environment variable not set}"
251+
: "${TF_VAR_SOC_DEV_TERRAFORM_SA_TOK:?Environment variable not set}"
240252

241253
# Exit early for CI secrets-only mode (no IP discovery, no SSH key, no docker actions)
242254
if [[ "$SECRETS_ONLY" == "true" ]]; then
@@ -283,7 +295,21 @@ fi
283295
# Run container if enabled
284296
if [[ "$RUN_CONTAINER" == "true" ]]; then
285297
HISTFILE=/dev/null HISTSIZE=0 HISTFILESIZE=0 docker run --rm -it \
286-
-e TF_VAR_cloudflare_account_id="$TF_VAR_cloudflare_account_id" \
298+
-e TF_VAR_vultr_api_key \
299+
-e TF_VAR_cloudflare_account_id \
300+
-e TF_VAR_cloudflare_api_token \
301+
-e TF_VAR_ssh_public_key \
302+
-e TF_VAR_admin_subnets \
303+
-e R2_ACCESS_KEY_ID \
304+
-e R2_SECRET_ACCESS_KEY \
305+
-e TAILSCALE_API_KEY \
306+
-e TAILSCALE_TAILNET \
307+
-e TF_VAR_PD_CLIENT_ID \
308+
-e TF_VAR_PD_CLIENT_SECRET \
309+
-e TF_VAR_pd_subdomain \
310+
-e TF_VAR_pd_user_tok \
311+
-e TF_VAR_GC_ACCESS_TOK \
312+
-e TF_VAR_SOC_DEV_TERRAFORM_SA_TOK \
287313
-e USER_UID="$(id -u)" \
288314
-e USER_GID="$(id -g)" \
289315
-e DISPLAY=$DISPLAY \

0 commit comments

Comments
 (0)