That's not entirely true. COM Objects in .NET are accessed via a proxy called a runtime callable wrapper (RCW). The RCW is managed non-deterministically using the normal rules for .NET lifetime management. When garbage collected, the RCW will release the referenced
COM object. So, (theoretically) the objects won't leak but it's not known when they will be released.

However, frequently COM objects hold expensive resources which you want to release as soon as possible (deterministically) which is why you might want to call Marshal.ReleaseComObject(). So, your idea might be a good one. However, there can be some subtleties
(cached objects, lifetimes, shared RCWs, etc.) in these scenarios and I'm not very familiar with the specific AzMan COM API to know if there could be some unintended consequences.

Thanks for the answer.
In AzRoleslib dll 2 identical types exist AzAuthorizationStore and AzAuthorizationStoreClass.
I suppose AzAuthorizationStoreClass is the managed version that doesn't need the Marshal.ReleaseComObject.