Skip to content

Commit 3ce807e

Browse files
committed
fix: 배포 전 Cloudflare Access 토큰을 검증한다
1 parent 1adc94e commit 3ce807e

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

.github/workflows/cd.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,27 @@ jobs:
5656
echo '0095e46fdc88855d801c4d304cb1f5dd4bd656116c47ab94c2ad0ae7cda1c7ec /tmp/cloudflared' | sha256sum --check -
5757
install -D -m 0755 /tmp/cloudflared "$HOME/.local/bin/cloudflared"
5858
printf '%s\n' "$HOME/.local/bin" >> "$GITHUB_PATH"
59+
- name: Verify Cloudflare Access service token
60+
env:
61+
DEPLOY_HOST: ${{ vars.PULLIT_DEPLOY_HOST }}
62+
PULLIT_CLOUDFLARE_ACCESS_CLIENT_ID: ${{ secrets.PULLIT_CLOUDFLARE_ACCESS_CLIENT_ID }}
63+
PULLIT_CLOUDFLARE_ACCESS_CLIENT_SECRET: ${{ secrets.PULLIT_CLOUDFLARE_ACCESS_CLIENT_SECRET }}
64+
run: |
65+
set -euo pipefail
66+
test -n "$DEPLOY_HOST"
67+
test -n "$PULLIT_CLOUDFLARE_ACCESS_CLIENT_ID"
68+
test -n "$PULLIT_CLOUDFLARE_ACCESS_CLIENT_SECRET"
69+
case "$PULLIT_CLOUDFLARE_ACCESS_CLIENT_ID" in
70+
'CF-Access-Client-Id:'*) echo 'Cloudflare client ID must be the value only.' >&2; exit 1 ;;
71+
esac
72+
case "$PULLIT_CLOUDFLARE_ACCESS_CLIENT_SECRET" in
73+
'CF-Access-Client-Secret:'*) echo 'Cloudflare client secret must be the value only.' >&2; exit 1 ;;
74+
esac
75+
status="$(curl --silent --show-error --output /dev/null --write-out '%{http_code}' \
76+
--header "CF-Access-Client-Id: $PULLIT_CLOUDFLARE_ACCESS_CLIENT_ID" \
77+
--header "CF-Access-Client-Secret: $PULLIT_CLOUDFLARE_ACCESS_CLIENT_SECRET" \
78+
"https://$DEPLOY_HOST")"
79+
test "$status" = 200 || { echo "Cloudflare Access service-token probe returned HTTP $status" >&2; exit 1; }
5980
- name: Create isolated runtime environment and deploy it
6081
env:
6182
PULLIT_BACKEND_IMAGE: ghcr.io/hyeonjun0527/pullit-backend:${{ github.sha }}

0 commit comments

Comments
 (0)