Sim, chama-se Programação Orientada a Aspectos e PostSharp é provavelmente a melhor ferramenta para o trabalho (infelizmente não é grátis).
No entanto, se você estiver usando o MVC (você ainda não mencionou nada como tal), poderá derivar sua própria versão do AuthorizeAttribute para consultar suas próprias tabelas de permissão e você pode simplesmente decorar suas ações com as funções que deseja permitir, por exemplo
[Authorize(Roles="Customer, Company")]
public ActionResult ViewOrders(...)
{
...
}
[Authorize(Roles="Customer")]
public ActionResult CreateOrder(...)
{
...
}