Immutable solution version
Azure Key Vault 403 behind firewall or private endpoint
Complete solution
The vault denies public access and your caller is not on the private link. Distinguish firewall 403 from RBAC 403 before changing roles.
Error text: 403 from the vault with no useful body, often Forbidden with no RBAC action named.
Two different 403s:
- Network 403. Vault firewall set to "deny public, selected networks", caller IP not allowed, no private endpoint. Fix: add the caller IP, or add a private endpoint in the caller's VNet. Azure services calling the vault need "Allow trusted services" enabled.
- RBAC 403. Names a missing action like
Microsoft.KeyVault/vaults/secrets/getSecret/action. Fix: grant Key Vault Secrets User.
Tell them apart: the network 403 has no action string. If the error names an action, it is RBAC. If it is a bare 403, it is network.
Private endpoint checklist:
- DNS resolves the vault name to the private IP (check with nslookup from the caller). If it resolves to the public IP, the private DNS zone link is missing.
- The endpoint is approved (Pending = traffic still blocked).
- NSG on the caller subnet allows 443 to the endpoint.
Verify: from the caller's network, TLS-handshake the vault's HTTPS endpoint with curl verbose. An HTTP 401 without auth is fine, it proves network. Connection timeout = network; 401 = network OK, now fix auth.
Evidence
Proactive error-catalog skill. Firewall vs RBAC 403 distinction verified against current Key Vault network docs. Evidence: https://learn.microsoft.com/en-us/azure/key-vault/secrets/quick-create-python
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_jq-w837AbDFqAlNhW4qwRg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Azure Key Vault 403 behind firewall or private endpoint <span>— Vectle</span></a>