Entendendo o novo modelo de segurança do SQL Server 2005 – Parte I
A segurança tornou-se um item de grande relevância no ambiente de negócios de qualquer empresa. Visando atender esta necessidade os DBAs e administradores de sistema necessitam de um modelo de segurança que possibilite garantir a confidencialidade e integridade das informações. Uma ajuda nesta árdua tarefa dos DBAs, o SQL Server 2005 fornece algumas novas características de segurança que foram implementadas visando atender a esta exigência. No Servidor SQL 2005, o modelo de segurança é dividido em três áreas a saber: autenticação, autorização e encriptação.
A autenticação é o processo de identificar a informação do logon no sistema de um usuário que se está conectando e acessando os bancos de dados do servidor SQL.
A autorização são os direitos de acesso a objetos do banco de dados que são dados a um usuário depois que o processo de logon no sistema é realizado com sucesso (autenticado).
A encriptação, que é inteiramente nova no Servidor SQL 2005, é a transmissão da informação valiosa em formatos que um usuário não autorizado não pode acessar facilmente. Embora houvesse procedimentos fornecidos não documentados disponíveis para a encriptação de dados no Servidor SQL 2000, ele não é tão fácil de usar como na nova versão do SQL Server.
Este artigo iniciará uma série sobre as características-chave da autorização no Servidor SQL 2005. Neste começaremos falando de Schema.
Separação do Esquema(Schema)
O esquema é uma nova funcionalidade do Servidor SQL 2005 e um pouco confusa para muitos desenvolvedores de banco de dados. Antes de prosseguimos, vamos primeiro dar uma olhada no Servidor SQL 2000, isto é, uma consulta totalmente qualificada para acessar uma tabela no Servidor SQL 2000:
Select * from [DBServer].[DBName].[ObjectOwner].[Table]
Eu presumo que você é consciente das dificuldades que surgirão quando você tenta excluir um usuário que possui objetos de banco de dados. Antes “dropar” o usuário, você tem de destinar todos os objetos que pertencem àquele usuário a outro usuário usando sp_changeobjectowner. Se você não redestinar os objetos primeiro, você terá de dropar todos os objetos que pertencem ao usuário antes de que você possa dropar o usuário.
No SQL Server 2000, os objetos são justamente ligados a usuários. Isto significa que dois usuários podem ter objetos com os mesmos nomes, que podem levar à confusão no ambiente de desenvolvimento.
O SQL Server 2005 fornece uma solução para esta questão: um método chama um esquema(schema). Pense em um esquema como um container que tem limites. Este container mantém objetos. Em vez de acessar a tabela pelo proprietário do objeto, como você fez no Servidor SQL 2000, você pode acessá-lo pelo esquema:
Select * from [DBServer].[DBName].[Schema].[Table]
Em geral, o esquema é uma substituição do proprietário de banco de dados no SQL Server 2000. Você poderia estar admirado agora como os usuários se ajustam neste cenário. Os usuários podem criar, possuir e pertencer a esquemas. Os benefícios dos esquemas para o Servidor SQL 2005 são:
- O drop de usuários do banco de dados é mais simples.
- Múltiplos usuários podem possuir um esquema único com grupos de um Servidor Windows 2003 ou roles no próprio Servidor SQL.
- Múltiplos usuários podem compartilhar um esquema de padrão único para unificar a resolução de nome.
Os esquemas de padrão compartilhados permitem que desenvolvedores armazenem objetos compartilhados em um esquema criado especificamente para uma aplicação específica, e não no esquema DBO, que foi a prática geral no Servidor SQL 2000.
Veja como podemos criar esquemas e executar operações com elas.
1º Passo: Selecione o banco de dados que você irá criar o Schema. Em nosso exemplo utilizamos a base de dados AdventureWorks.
2º Passo: Na pasta Secutiry, selecione Schemas e veja os schemas que estão disponíveis, conforme demonstrado na figura.
3º passo: Para criamos um novo Schema, basta clicar com o botão direito e selecionar New Schema. Como mencionei antes, um esquema tem um proprietário que pode modificar as suas propriedades. Diferentemente de no Servidor SQL 2000, a propriedade pode ser transferida facilmente. Digite em Schema name o nome do esquema e Schema owner escolha pressionando o botão Search quem será o proprietário deste esquema.
CREATE SCHEMA [Faturamento] AUTHORIZATION [db_accessadmin] é a instrução T-SQL equivalente a tela acima.
Os usuários devem ser atribuídos a esquemas para acessar os objetos do banco de dados. Então você pode acrescentar usuários ao esquema e estabelecer as permissões de cada usuário consequentemente. Para isso, selecione a opção Permissions e clique em Add para adicionar um usuário ou role. Em seguida defina as permissões que você pretende conceder ao usuário ou role associada. Em nosso exemplo adicionamos a role public e definimos alguns privilégios de acessos conforme mostrado na figura a seguir.
Contudo, você tem de se lembrar de que você não será capaz de “dropar” um usuário se aquele usuário pertencer a algum outro esquema. Alteração do proprietário de um esquema não é tão difícil como modificação do proprietário de objetos. Além do mais, você pode adotar uma prática que farão as coisas mais fáceis: Atribua a todos os esquemas o usuário dbo como proprietário e aloque permissões apropriadas para os usuários relevantes. Deste modo, você será capaz de deixar um usuário à vontade e o impacto nos seus desenvolvimentos será mínimo.