Galera, esta semana vamos dar uma olhada na parte de segurança do SQL Server, mais especificamente na 'porta de entrada' ao banco de dados. Vamos falar um pouco também sobre o que acontece após um usuário se conectar ao banco de dados. Na próxima coluna vamos abordar questões relativas à permissões e roles.
Antes de começar a falar sobre o assunto desta coluna gostaria de comentar sobre os desafios da coluna número 50. Eu recebi alguns e-mails com várias idéias sobre como resolver os problemas e oferecendo dicas importantes sobre a questão. Eu estou juntando todos os e-mails referentes às questões, analizando cada uma cuidadosamente e estou preparando a coluna em que vou comentar sobre estes desafios. Só gostaria de pedir para continuarem a enviar os e-mails com as respostas enquanto o prazo ainda não se esgota.
Voltando ao assunto da coluna de hoje , vamos ver um pouco primeiro sobre os Logins. Como já comentado anteriormente aqui no iMasters , logins são a maneira de um usuário acessar o servidor de banco de dados. Dependendo do modo de autenticação que o usuário está rodando a instância do SQL Server , um login pode ser um usuário do Windows ou um login do SQL Server. Estes modos de autenticação podem ser modificados depois que a instância do SQL Server foi instalada e vamos recordar um pouco sobre os eles:
O usuário só pode se conectar através de um usuário/senha já previamente cadastrado no Windows NT/2000. Geralmente este é o usuário/senha que o usuário utiliza para se logar na estação e pode estar armazenada em um controlador de domínio do Windows 2000 , que possui o Active Directory. Caso o servidor em que esteja instalado o SQL Server não possa entrar em contato através da rede com o controlador de domínio e a senha não esteja cadastrada localmente no servidor , os usuários não vão poder se conectar ao banco de dados. Além de permitir que usuários do Windows possam se conectar ao SQL Server , grupos de usuários do Windows também podem ser mapeados para dentro do SQL Server , de modo que todos os usuários deste grupo também possuirão acesso ao SQL Server. Quando instalamos o SQL Server em um Windows 2000/NT/XP o grupo de usuários Administradores já é mapeado para o SQL Server , de modo que todos os Administradores locais do servidor já possuem acesso para se conectar com o SQL Server.
Caso desejarmos que os usuários do Windows 2000/NT/XP não mais acessem o SQL Server devemos desabilitar a conta primeiro no Windows ( para impedir que o usuário se logue ) e depois cancelar o mapeamento dentro do SQL Server. A conta no Windows é gerenciada no Active Directory ou no ícones Usuários e Senhas. Por fim , este modo só é permito para computadores que possuem o Windows 2000/NT/XP instalados e não é habilitado para o Windows 98/ME/CE e é o modo de autenticação recomendado pela Microsoft quando se trabalha em uma rede em que todos os clientes que se conectem com o SQL Server sejam Windows , pois assim toda a segurança , auditoria e gerenciamento de usuários fica por conta do Windows e suas ferramentas. Por ser autenticado pelo Windows e depois passada as credenciais para o SQL Server , esta conexão as vezes é chamada de Trusted Connection.
Além do usuário poder se conectar no banco através de um usuário/senha já previamente cadastrado no Windows NT/2000/XP, como descrito no modo acima, ele também pode se conectar através de logins exclusivos do SQL Server. Caso se utilize um login/senha exclusivo do SQL Server no momento da conexão este login/senha deve ser fornecido pelo cliente e , caso este login/senha esteja correto , o usuário possui acesso ao banco de dados. Este modo de autenticação é recomendado quando se deseja ter um ambiente onde nem sempre as conexões serão através de máquinas com o Windows instalado. Só para evitar uma confusão de nomeclaturas , o SQL Server só trabalha com o conceito de login , seja este login um usuário/grupo do Windows ou um login do SQL Server.
Podemos gerenciar os logins do SQL Server através do Enterprise Manager, na opção Security, ícone logins, como mostrado na figura abaixo:

Na figura acima podemos perceber que o grupo local de administradores do Windows já está mapeado para o SQL Server, de modo que todos estes usuários que estejam dentro deste grupo já podem acessar o SQL Server. O usuário Mauro do Windows também foi mapeado e o login do SQL Server sa foi criado. Baseado nisto podemos afirmar que este servidor está no modo Mixed Mode.
Para criarmos logins devemos clicar com o botão direito do mouse no ícone Logins ou no painel da direita no Enterprise e escolher a opção New Login. A seguinte tela será mostrada:

Na figura acima podemos cadastrar um usuários específico do SQL Server ou mapear um usuário/grupo do Windows clicando no botão ... Além do direito de se conectar com o SQL Server um login também pode possuir um banco de dados padrão. Este banco de dados padrão indica em qual banco de dados o usuário será posicionado após ter feito um login com sucesso. Isso não quer dizer que o usuário possui qualquer tipo de permissão neste banco de dados , somente indica um ponto inicial para o login que acabou de entrar no SQL Server.
Logo após se logar , por qualquer método que seja , o login é mapeado para um Usuário de Banco de dados. Este usuário de banco de dados é por database , ou seja , para cada banco de dados diferentes logins pode estar mapeado para diferentes usuários.
Por exemplo: a tela abaixo mostra o login do SQL Server Mauro mapeado como usuário A para o banco de dados Northwind e como usuário B para o banco de dados Pubs. Esta tela é obtida clicando-se na aba Database Access da tela de criação de login.

É a partir deste usuários de banco de dados que serão atribuídas as permissões sobre os objetos do SQL Server , sobre comandos , o controle sobre qual é dono do objeto e filiação aos roles, tanto Database roles como Server roles. Para um banco de dados um usuários deve ser único. Utilizando o exemplo acima , não poderíamos ter o login Marcio mapeado como usuário A para o banco de dados Northwind, uma vez que o login Mauro já está mapeado com usuário A para o banco de dados Northwind. Um usuário de banco de dados pode ter o mesmo nome do login. Como exemplo, o login Marcio pode estar mapeado para o banco de dados Northwind como Marcio.
Estes usuários podem gerar um pouco de confusão, principalmente pelo fato de que o Windows também utiliza este termo. Para não esquecer: No SQL Server primeiro o usuário se loga: seja através de um usuário/senha do Windows ou um login exclusivo para o SQL Server. Isso se chama login independentemente do método. Uma vez logado, esta conexão é mapeada para um usuário de banco de dados, que é específico para cada banco. É isso aí pessoal. Na próxima coluna vamos ver um pouco mais sobre os usuários de banco de dados, roles e permissões sobre objetos e comandos. Grande abraço pessoal e até a semana que vem.
Leonardo Maciel Delgado
No Oracle tenho schemas(usuários) que permite vc visualisar a estrutura das tabelas com os dados diferentes que cadastrei com um schema diferente. NO SQL Server 2000 tenho a parte de Users ou security que se cria os usuários, mas minha dúvida é se cada usuário que eu crio os dados das tabelas são diferentes com outros usuários ?Bom, pelo menos eu testei aqui e não deu certo.Acho o SQL Server não tem essa estrututa que tem o Oracle. Vc poderia me ajudar nessa dúvida?
Atenciosamente Giorgio Vasconcelos
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.