I'm starting to agree with this recommendation (wish I had known about it a long time ago):
<<<
It is an annoying process to add security after the fact, the best
recommendation I've seen is to develop as a least permission user (VS
Debugger user etc) or to remove all default permissions with [assembly:
PermissionSet(SecurityAction.RequestOptional, Unrestricted=false)] up
front.
As you add functionality and it throws security exceptions run you can
research what permissions each object needs.
>>>
Src: http://www.secnewsgroups.net/group/microsoft.public.dotnet.security/topic11068.aspx