Reuben Genders hi,
yea, ur approach is aligned with Microsoft best practice, but with important clarification. Contributor scoped to a single Resource Group is normally sufficient to deploy and manage Azure Container Apps, App Service, postgreSQL Flexible Server, OpenAI resources, networking objects inside that RG, and most day-to-day operational tasks. You dnt need subscription owner for that. Key Vault Secrets Officer is appropriate if ur role is limited to managing secrets. And that this role dont grant access to manage access policies or RBAC on the vault itself. If the vault uses rbac instead of access policies, ensure the vault permissions model matches what u need.
Virtual Network Gateway is usually deployed at subscription or shared networking RG level. If the VNet Gateway or shared networking resources are outside ur dedicated RG, Contributor on ur RG will not be enough. So u would need scoped rights on the specific networking RG, not the entire subscription. As well resource provider registration (Microsoft.ContainerApps, Microsoft.DBforPostgreSQL, Microsoft.CognitiveServices and etc.) requires subscription-level permissions. That must be handled by an owner, but not permanently granted to u.
From a least privilege persp., avoiding owner and staying RG-scoped is absolutely the correct model for an external contractor. It limits blast radius and visibility into unrelated enterprise assets.
At the end, yes, RG scoped Contributor plus specific additional roles like Key Vault Secrets Officer is normally sufficient, provided shared networking and provider registration are handled appropriately. Subscription level owner is not required for full deployment in a contained workspace design.
rgds,
Alex