Partilhar via


Projetando funções de forma eficaz

Em muitos cenários, a segurança baseada em funções é um mecanismo muito eficaz, mas há situações em que é menos eficaz. Você deve levar vários fatores em consideração ao decidir onde e como aplicar a segurança baseada em função a um aplicativo específico.

Características do utilizador e dos dados e adequação das funções

As funções funcionam muito bem para caracterizar grupos de usuários e, com base nisso, filtrar quais ações esses usuários podem executar. Muitas vezes, isso é realizado na prática criando funções que refletem o lugar de um usuário dentro de uma organização — por exemplo, as funções "Gerentes" e "Caixas", "Administradores" e "Leitores", "Funcionários do Projeto Um" e "Funcionários do Projeto Dois". Nesses casos, em que os dados que estão sendo acessados são bastante genéricos em relação aos usuários, as funções podem ser usadas de forma eficiente para impor regras de negócios, como as seguintes:

  • "Os gestores podem transferir qualquer quantia de dinheiro. Os caixas só podem transferir até US$ 10.000."

  • "Os administradores podem mudar qualquer coisa. Todos os outros só sabem ler."

  • "Os funcionários do Project One podem acessar um determinado banco de dados. Ninguém mais pode."

Os usuários podem naturalmente se enquadrar em várias funções, dependendo de como as funções modelam a estrutura organizacional de uma empresa.

No entanto, as funções não funcionam muito bem quando uma decisão de acesso de segurança se baseia nas características de um dado específico. Por exemplo, seria difícil usar funções para refletir relações complicadas de dados do usuário, como as seguintes:

  • "Um determinado gerente pode acessar dados pessoais apenas para seus relatórios."

  • "Joe Consumer pode consultar o saldo da sua conta."

Nesses casos, a verificação de segurança deve muitas vezes ser feita na própria base de dados, onde é mais fácil ter em conta as características inatas dos dados acedidos. Isso significa que se deve usar a representação de para passar a identidade do cliente para o banco de dados, permitindo que o banco de dados valide a solicitação. Isso pode afetar o desempenho e o design do aplicativo — por exemplo, o pool de conexões pode não funcionar quando uma conexão é aberta sob uma identidade de usuário específica. Para uma discussão sobre os problemas envolvidos, consulte Segurança de aplicativos multicamadas e Representação e delegação de clientes .

Complexidade e Escalabilidade de uma Política de Autorização de Role-Based

Qualquer política de segurança que você colocar em prática será tão eficaz quanto sua implementação pelos administradores de sistema que implantam seu aplicativo. Se os administradores cometerem erros ao atribuir usuários às funções corretas de acordo com sua política de segurança, ela não funcionará como esperado. É mais provável que ocorram problemas nas seguintes circunstâncias:

  • Você criou uma política baseada em papéis muito complexa, com muitos papéis e utilizadores associados a diversos papéis.
  • Você cria papéis com critérios ambíguos para quem deve pertencer a eles.
  • Há muitos usuários no site onde o aplicativo está instalado, e os usuários estão se movendo com freqüência dentro da organização, mudando em relação às funções que você criou.
  • Há muitos administradores no site onde o aplicativo está instalado, com divisão de responsabilidades, de modo que um administrador familiarizado com os requisitos de segurança do seu aplicativo não está potencialmente familiarizado com os grandes grupos de usuários que devem usá-lo. Isso é particularmente preocupante à medida que os usuários se movem dentro da organização — essas informações precisam ser bem comunicadas.

Além disso, à medida que o número de funções atribuídas a um aplicativo aumenta, aumenta também o tempo que o COM+ precisa dedicar a verificar a pertença do chamador a essas funções, provocando uma provável degradação no desempenho.

Para gerenciar a complexidade e mitigar essas preocupações, você pode usar as seguintes diretrizes:

  • Escolha nomes de função que sejam autodescritivos. Torne o mais óbvio possível quais usuários devem pertencer a quais funções.
  • Torne a sua política baseada em funções o mais simples possível (e não mais simples). Escolha o menor número possível de funções, mantendo uma política eficaz.
  • Documente claramente a política baseada em função que você constrói para administradores, se a associação à função é óbvia (para você). Em particular, use o campo de descrição disponível para cada função para descrever a intenção da função. Se você não consegue descrever geralmente quem deve pertencer ao papel em algumas frases, provavelmente é muito complicado.
  • Sugira fortemente que os administradores do seu aplicativo preencham funções com grupos de usuários em vez de usuários individuais. Esta é uma solução muito mais escalável. Isso facilita a reatribuição ou remoção de usuários à medida que eles se movem dentro da organização e isola os administradores de uma certa quantidade de supervisão e problemas de comunicação.

Limites de Segurança

Informações de Contexto de Chamada de Segurança

Propriedade de Contexto de Segurança

Usando funções para autorização de cliente