Overview
The infrastructure stores sensitive environment variables in Azure Key Vault instead of directly in App Service settings:Benefits
Secrets stored
Architecture
Configuration
App service Key Vault references
App Services use Key Vault references instead of direct values:Terraform module structure
Network security
Private endpoint
Key Vault is only accessible through a private endpoint:- Subnet: Dedicated private endpoint subnet (10.0.2.0/24)
- DNS Zone:
privatelink.vaultcore.azure.net - NSG: HTTPS traffic only
Access control
Adding new secrets
1
Add secret resource
In
modules/security/main.tf:2
Add variable
In
modules/security/variables.tf:3
Add output
In
modules/security/outputs.tf:4
Update consuming module
Pass the secret URI to the frontend or backend module.
Troubleshooting
Access Denied
Access Denied
Verify managed identity has proper RBAC permissions:
DNS Resolution Failed
DNS Resolution Failed
Check private DNS zone is linked to VNet:
Secret Already Exists
Secret Already Exists
Soft-delete the existing secret:
App Service Can't Read Secret
App Service Can't Read Secret
- Verify Key Vault reference syntax is correct
- Check managed identity assignment on App Service
- Verify private endpoint connectivity
Vault names by environment
Best practices
- Never log secrets - Use Key Vault references, not direct values
- Regular rotation - Implement secret rotation procedures
- Minimal access - Apply principle of least privilege
- Monitor access - Enable Key Vault logging and alerts
- Backup - Ensure Key Vault has backup and recovery enabled