Azure Static Hosting Security Baseline
This docs site is hosted on Azure Static Web Apps and follows a hardened deployment pattern for ACX + Longhaul content.
Security Controls in This Repository
-
OIDC-based Azure auth in GitHub Actions
The deploy workflow usesazure/login@v2with federated identity (AZURE_CLIENT_ID,AZURE_TENANT_ID,AZURE_SUBSCRIPTION_ID) instead of long-lived Azure credentials. -
Short-lived signed URL for deployment artifact
The workflow uploads a zip artifact to a private blob container and generates a read-only user-delegation SAS URL with: - HTTPS-only
- 30-minute default expiration
-
Read-only permissions
-
Security headers at the edge
staticwebapp.config.jsonenforces HSTS, CSP, frame protection, and browser hardening headers. -
No secrets in source
Deployment uses GitHub Secrets and OIDC; no access keys or SAS tokens are committed.
Required Secrets
Set these in the repository before enabling production deployment:
AZURE_STATIC_WEB_APPS_API_TOKENAZURE_CLIENT_IDAZURE_TENANT_IDAZURE_SUBSCRIPTION_IDDOCS_ARTIFACT_STORAGE_ACCOUNTDOCS_ARTIFACT_CONTAINER
Recommended Azure Configuration
- Keep the blob container private (no anonymous read).
- Use least-privilege RBAC for the workflow identity (Blob Data Contributor scoped only to the artifact container).
- Rotate Static Web Apps deployment token on a regular schedule.
- Enable diagnostic logs and retention for both Static Web Apps and Storage.