In brief
Key Vault access failures usually occur at one of three boundaries: the caller is not the expected identity, the identity lacks a data-plane permission, or the request cannot reach the permitted network path.
Key takeaways
- Capture the caller object ID and tenant before changing role assignments.
- Distinguish Azure RBAC from the legacy access-policy authorization model.
- Check data-plane roles, inheritance, deny assignments, and propagation time.
- Validate firewall, private endpoint, DNS, and trusted-service behavior separately.
Confirm the identity that actually made the request
Do not start by granting a broader role. First determine whether the caller is a user, service principal, managed identity, workload identity, or deployment process. Capture the tenant ID, object ID, application or client ID, target vault, requested operation, and UTC timestamp. The identity shown in a portal session may not be the identity used by an application or pipeline.
For managed identity, verify that the resource is using the intended system-assigned or user-assigned identity. When several user-assigned identities exist, the application may need an explicit client ID. Token audience, tenant, and cached credentials can also cause an apparently correct assignment to fail.
Verify the fix without expanding access permanently
Retest the exact failed operation using the same identity and network path. Listing secrets, reading a secret, creating a key, and retrieving certificate metadata are different operations. A successful portal test with a human account does not prove that the workload identity can perform its own operation.
After recovery, remove temporary elevated access, document the required permission and scope, and add monitoring for repeated authorization failures. Prefer workload identity or managed identity over stored credentials, and keep secret values out of logs, tickets, screenshots, and source control.