Visão geral do Role Based Security Overview
O StrataFrame Role Based Security provê um conveniente, mas com uma metodologia extrema para
inserir a segurança no nível base de sua aplicação. Sua meta é prevenir uma entrada em
áreas desautorizadas de uma aplicação de quaisquer pontos da interface do usuário. Muitos
desenvolvedores de aplicativos se deparam com a árdua tarefa de desenvolver e implementar um sistema de segurança
que reside no topo de qualquer framework.
Segurança no Strataframe é desenvolvida no nível elementar do framework.
Isto permite ao desenvolvedor configurar regras de segurança com objetos de negócios associados e controles UI.
Segurança da aplicação para o usuário final incluída
Strataframe Role Based Security também provê ao desenvolvedor um Aplicativo Robusto de Segurança
para desenvolvimento e segurança, preferências, permissões, áreas e usuários globais.
O Aplicativo de Segurança pode ser inserido e distribuído com a sua própria aplicação, com
licença livre de royalties.
Ajuda Ténica e do Usuário
Role Based Security também é distribuída com Ajuda Técnica a ser usada pelo desenvolvedor
para implementação com o aplicativo e Ajuda do Usuário que explica o
Aplicativo de Segurança para o usuário final. É claro, a Ajuda do Usuário pode ser distribuída
livre de roialties.
Preferências GlobaisVisão Geral das Preferências As preferências globais são usadas para reforçar as constantes universais do sistema de segurança.
Com a exceção de expiração de senha e trava de sessão,os valores não podem ser subscritos. As preferências
existem para controlar senhas, tamanhos, políticas de senhas, logon e travamento de seções.
Por exemplo, o tamanho máximo e mínimo de senhas, o tempo mínimo entre mudanças de senhas,
a idade máxima de uma senha a marcação de complexibilidade de senhas são algumas das propriedades
associadas as preferências globais.
Complexibiliade da Senha Os requerimentos de uma senha complexa seguem de perto os requerimentos definidos
pela Microsoft® para senhas complexas com o sistema operacional Windows 2003®.
As especificações exatas para senhas complexas são: - A senha tem que ter no mínimo seis caracteres.
- A senha deve conter caracteres de no mínimo 3 das 5 categorias:
- Caracteres maiúsculos em inglês (A – Z)
- Caracteres minúsculos em inglês (a – z)
- Dígitos Base 10 (0 – 9)
- Não-alphanuméricos ou símbolos (por exemplo: !,$,#, ou %)
- Caracteres Unicode
- A senha não pode conter 3 ou mais caracteres consecutivos de uma palavra ou nome de conta do
usuário. Por exemplo, se o nome da conta for "John L. Doe", a senha
não irá será aprovada no requerimento de complexibilidade mínimo necessário com
qualquer das seguintes combinações: "joh", "ohn", "doe".
Logon e Sessão Preferencias também contém configurações para sessão de logon e travamento
de sessão por inatividade. Um intervalo de entrada se senhas pode ser estabelecido que especifica
a quantidade do tempo que um usuário deve esperar para tentar um logon antes que ele/ela seja permitido
logar novamente. Esta metodologia inibe programas automáticos desenvolvidos para hackear senhas do
sistemas.
Bloqueios por Inatividade de sessão permitem ao usuário estabelecer a quantidade de tempo de inatividade
antes que a sessão seja bloqueada e o usuário seja re-autenticado antes de continuar
a usar a aplicação. Esta característica é muito útil para aplicativos onde a estação de trabalho do
usuário é localizado em uma área de acesso público. Se usada, esta opção
irá esconder quaisquer formulários de aplicações ativas na hora que a sessão for bloqueada; desta forma, prevenindo
acesso ou visualização não autorizada.
PermissõesVisão Geral de Permissões São atribuídas permissões a recursos dentro do aplicativo (ex: formulários, módulos, objetos de negócios).
Esta permissão é requerida para acessar ou manipular este recurso na aplicação.
Esta permissão é conferida ou negada a áreas e usuários específicos para indicar quais usuários tem o
direito a acessar ou manipular aquele recurso.
As permissões disponíveis dependem do aplicativo e são atribuídos pelo desenvolvedor do software
e não podem ser editados fora do ambiente de desenvolvimento.
Tipicamente, a permissão é binária: ou você tem uma permissão particular ou você não tem;
de qualquer forma, qualquer permissão pode ser configurada para também permitir somente acesso a leitura.
Como as Permissões São Usadas Tipicamente, permissões são divididas em uma das seguintes categorias:- Permissão a Nível de Formulário - Acesso ao formulário é permitido ou negado.
- Permissão a Nível de Tabela
- Adicionar em Nível de Tabela - Um usuário pode adicionar um registro a uma tabela.
- Editar em Nível de Tabela - Um usuário pode editar um registro em uma tabela.
- Excluir em Nível de Tabela - Um usuário pode excluir um registro em uma tabela.
- Permisssão a Nível de Campo - O acesso a um campo pode ser especificado como editável,
somente leitura ou negado.
Não são todos os níveis de permissões que são requeridos para existir em todos os formulários, então, não
é necessário ou até prático para uma permissão existir para cada tipo de evento que exista em uma aplicação.
Por exemplo, para certos formulários de manutenção no aplicativo, é somente necessária uma única permissão
a ser determinada para negar o acesso ao formulário de manutenção; os níveis mais granulares não são requeridos.
De outra forma se o formulário não contiver informação sensivel que nem todos usuáriossejam habilitados a ver ou editar,
o desenvolvedor pode forçar a segurança para que esta parte da aplicação seja mais detalhada, especificando uma
permissão separada para diferentes campos com uma tabela única. Permissões de Ações Várias ações estão disponíveis quando a permissão foi rejeitada em tempo de desenvolvimento.
Obviamente, estas ações são estabelecidas pelo desenvolvedor baseada na necessidade de funções da aplicação.
Estas ações são:
Sem Mensagem - Esta opção é usada quando nenhuma mensagem necessita
ser exibida ao usuário final. Por exemplo:
- Acesso Programático - Esta opção pode ser
usado para acesso programático quando a intervenção do usuário não é necessária.
- Nível de Campo - Se isto for configurado para o campo
seu acesso será negado, o usuário não será habilitado a ver o conteúdo do campo
(ele será vazio). os dados atuais que es~tão ligados ao campo não serão mudados, apenas
seu estado de visualização.
Mensagem - A mensagem entrada no Message ou Key text box será exibido ao usuário final. Message Key - A chave de mensagem entrada no text box da
Mensagem ou Chave e o texto correspondente será exibido ao usuário.
Substituir cada Caractere - Esta seleção é a mesma que
a seleção "Sem Mensagem", a única diferença é ao invéz de exibição em branco, o caractere
"X" será usado para substituir o conteúdo dos campos. Novamente,
somente o estado de visualização é mudado com a seleção, os dados atuais não são tocados.
RolesVisão Geral de Funções Na segurança baseada em funções, premissões são associadas com áreas. Usuários são
feitos membros de áreas, desta forma adiquirindo as permissões associadas. O propósito
de uma área ou função é para agrupar tarefas parecidas como enfermeiras, médicos ou pessoal de seguros,
desta forma ajudando a gerenciar usuários e controlando o acesso as funções da aplicação.
A determinação das permissões a uma simples função binária: permissões
são marcadas para atribuir acesso e são desmarcadas para negar acesso. Além disto, uma função
pode ser controlada em um nível mais granular com ações, auditando e com suas restrições de uso.
O objetivo de um sistema de segurança baseado em funções é para gerenciar a predominância
dos direitos de acesso do nível atual da função e somente subscrever permissões ao nível de usuário
quando necessário.
UsersVisão Geral de Usuários O Propósito da de qualquer sistema de segurança é de controlar o acesso. Um sistema bem desenvolvido
ajuda o administrador do aplicativo quando estiver um configurando o acesso aos direitos do usuário.
Como dito anteriormente, o objetivo de um sistema de segurança baseado em funções é para
gerenciar a predominancia dos direitos de acesso do nível atual da função e somente subscrever
permissões ao nível de usuário quando necessário.
Esta técnica permite mudanças que podem ser feitas em um nível global, a função atual e
ultimamente herdado no nível individual de usuário. Contudo, é importante ser habilitado a
controlar a granulidade de qualquer usuário sem afetar funções ou outros usuários.
Este sistema é desenvolvido para incorporar o controle e acesso do usuário final.
Em adição as informações de usuário e senha, várias propriedades permitem flexibilidade ao sistema
de segurança. Você pode querer desativar uma conta de usuário após uma data em particular,
marcar o usuário como inativo, fazer do usuário um Administrador,
ou ativar a autenticação do windows para a conta do usuário. Timeouts de sessões também podem ser estabelecidos
ao nível de usuário.
Restriction SetsVisão Geral de Restrições Uma Configuração de Restrição é usada para criar uma regra de acesso global ao usuário que consiste
em dias da semana, hora do dia, estação de trabalho e ação. Uma Configuração de Restrição é usada
para habilitar ou impedir o acesso do usuário dependendo da ação (permitir, negar, ou somente ler).
Em muitos aplicativos, o usuário deve ser restrito a hora e possivelmente a estação de trabalho
que ele/ela normalmente trabalha.
Esta carcterística ajuda previne compartilhamento de senhas (ou roubos) em configurações da aplicação.
Desde que a maioria dos controles e auditorias de uma aplicativo se iniciam e terminam com
um sistema de segurança, as configurações de restrições habilitam reforços em uma base granular pertinentes
a horário e estação de trabalho.
Colocando Segurança no seu Aplicativo
Para incorporar o Role Based Security ao seu aplicativo é fácil usando o sistema de segurança do Strataframe.
Usando um jeito granular, segurança pode ser inserida em cada área de sua aplicação.
Como previamente mencionado, a segurança da Aplicação está pronta pra usar e instalar em seus sites com usuários;
ja que, muito do código ja está pronto. A interface programática tambem é simples.
Chaves de Segurança Chaves de Segurança são os elementos básicos de segurança que o permitem personalizar
e inserir segurança no seu aplicativo. Facilmente estabelecido via o Editor de Chaves de Segurança,
chaves de segurança podem ser criadas e mantidas para cada elemento julgado necessário pelo
desenvolvedor. Por exemplo, uma chave de segurança poderia ser estabelecida
para cada formulário com direitos de acesso restritos. Outra chave de segurança seria
estabelecida por um objeto de negócios, detalhando se o usuário tem acesso ao objeto de negócios,
e se tiver, veremos se é de criação, edição e visualização de privilégios.
Outro tipo de chave de segurança pode refletir acesso a direitos de campos nos objetos de negócios.
Isto permite campos de dados sensíveis a serem restringidos para ediçãoou visualização
baseado nas funções do usuários e privilégios. Esta metodologia permite o desenvolvedor
a decidir qual o nível de segurança necessário por todas as áreas da aplicação.
Acesso Programático
Todos os métodos e classes são facilmente incorporadas aos aplicativos Strataframe
desde que eles existem no nível hierarquico mais básico. Isto faz a incorporação de segurança
baseada em áreas invisível ao usuário final de seu aplicativo.
O seguinte mostra alguns exemplos de como incorporar ações e características de segurança particulares
no seu aplicativo.
Mostrando o Form Inicial Mostrando o formulário inicial de login de uma aplicação com o StrataFrame é efetuado
através da classe MicroFour.StrataFrame.Security.Login. Esta classe tem a propriedade LoginFormType
que aceita o System.Type do formulário que será exibido como login.
Este tipo de formulário padroniza o MicroFour.StrataFrame.Security.LoginForm e pode
ser selecionado para qualquer login customizado que implementa a interface MicroFour.StrataFrame.Security.ILoginForm.
Um formulário de login personalizado também pode ser criado e incorporado na segurança da aplicação.
Uma vez que LoginFormType foi configurado (ou deixado seu valor padrão), você pode chamar
o método Login.ShowLoginAndAuthUser() para mostrar o formulário de login e autenticar um usuário ao sistema.
este método irá retornar um valor Boleano indicando se o usuário foi autenticado ou se ele/ela cancelou o
formulário e o aplicativo deve finalizar.
Seguindo o código de exemplo (Visual Basic e C#) para usar o formulário de Logon. Embora não incluído
neste documento, código de exemplo para todos elementos do StrataFrame Role
Based Security são similares no usuo e estrutura. O método ShowLoginAndInitMainForm()
no arquivo AppMain.vb (Program.cs) é provido para dar a localização para mostrar o formulário inicial de login
da aplicação.
Imports MicroFour.StrataFrame.Security.BusinessObjects
...
Private Shared Sub ShowLoginAndInitMainForm( _
ByVal e As ShowLoginAndInitFormEventArgs)
'-- Set the login form type to the appropriate form type (optional)
Login.LoginFormType = GetType(MyLoginForm)
'-- Show the login form and set the return value back to e.ShowMainForm
' The true value passed to the method tells the method to allow the
' end-user to cancel the login form, which will return False from the
' method.
e.ShowMainForm = Login.ShowLoginAndAuthUser(True)
End Sub Exemplo - Mostrando o Formulário Inicial de Login [C#] using MicroFour.StrataFrame.Security;
...
private static void ShowLoginAndInitMainForm(ShowLoginAndInitFormEventArgs e)
{
//-- Set the login form type to the appropriate form type (optional)
Login.LoginFormType = typeof(MyLoginForm);
//-- Show the login form and set the return value back to e.ShowMainForm
// The true value passed to the method tells the method to allow the
// end-user to cancel the login form, which will return False from the
// method.
e.ShowMainForm = Login.ShowLoginAndAuthUser(true);
} Recuperando Preferências Globais do Banco de Dados Um método (estático) é provido para recuperar preferencias globais do banco de dados.
Executando MicroFour.StrataFrame.Security.BusinessObjects.SFSPreferencesBO.RetrieveSecurityPreferences()
recupera as preferências da tabela SFSPreferences no banco de dados e popula
as propriedades na classe de segurança SecurityBasic. Por exemplo, a propriedade "SessionTimeout"
irá conter a hora padrão que a sessão do usuário pode permanecer ocioso antes que a sessão ultrapasse o tempo limite
e trave.
especificando a Chave de Encriptação para os Dados dos Usuários Dados de Usuários são armazenados com o banco de dados na tabela SFSUsers usando encriptação 3DES.
A chave para ecriptação 3DES é especifica usando o método SecurityBasics.SetSecurityKeyAndVectorForUserAuthentication().
Este método cria um hash da chave dada e usa o System.Byte[]
que é usado para a chave de encriptação e vetor de inicialização do algoritimo 3DES.
mesmo sendo os dados armazenados em bancos de dados padrões, esta metodologia garante que os
detalhes de segurança não serão comprometidos. Acessando Permissões Programaticamente
O MicroFour.StrataFrame.Security.SecurityBasics.CurrentUser contém o método GetPermission()
que é usado para programaticamente recuperar a PermissionInfo para a chave de permissão.
O método aceita um string de parâmetro único que indica a chave de permissão
na qual você quer recuperar a PermissionInfo. Uma vez que a informação de permissão
é recuperada, você pode determinar a ação que deve ser executada. Exemplo – GetPermission() [Visual Basic] Imports MicroFour.StrataFrame.Security
...
Private Sub CheckMyPermission()
'-- Retrieve the permission and test it
If SecurityBasics.CurrentUser.GetPermission("MyPerm").Action = _
PermissionAction.Grant Then
'-- Enable the control
Button1.Enabled = True
Else
'-- Disable the control
Button1.Enabled = False
End If
End Sub Exemplo – GetPermission() [C#] using MicroFour.StrataFrame.Security;
...
private void CheckMyPermission()
{
//-- Retrieve the permission and test it
if (SecurityBasics.CurrentUser.GetPermission(@"MyPerm").Action ==
PermissionAction.Grant)
{
//-- Enable the control
Button1.Enabled = true;
}
else
{
//-- Disable the control
Button1.Enabled = false;
}
}
LocalizaçãoInglês, Espanhol e Português O aplcativo StrataFrame Role Based Security pode ser traduzido para qualquer idioma.
Atualmente, localização foi criada para English, Espanhol, Português, Alemão, Francês, Italiano e Russo.
Os objetos de aplicação, incluindo formulários, labels, text boxes e lists podem ser
localizados para uma das sete configurações de idiomas.
Todas as mensagens para usuários também podem ser traduzidas para o idioma pertinente. Isto
permite a desenvolvedores a inserirem aplicações de segurança em suas aplicações e lançarem para o
usuário final.
|