Вы находитесь на странице: 1из 32

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

Artigo Tcnico do SQL Server

Autor: Don Kiely Atualizado por: Geoff Allix (Contedo Mestre) Revisores Tcnicos: Sethu Kalavukar, Sameer Tejani, Al Comeau, Rob Walters, Niraj Nagrani

Publicado em: Outubro de 2007 Aplica-se ao: SQL Server 2008 Resumo: No SQL Server 2008 a proteo est assegurada pelo design, pelo padro e pela implantao. A Microsoft compromete-se a informar sobre ameaas, medidas defensivas e aprimoramentos de segurana, conforme a necessidade de manter os dados sob mxima segurana. Este artigo trata de alguns dos mais importantes recursos de segurana do SQL Server 2008. Nele esto informaes sobre como o administrador pode instalar de maneira segura o SQL Server e manter essa proteo medida que os dados armazenados no interior deste so utilizados por aplicativos e usurios.

Filename: 151072535.doc

Direitos Autorais
Este um documento preliminar e pode ser alterado substancialmente antes do lanamento comercial final do software aqui descrito.

As informaes contidas neste documento representam a viso atual da Microsoft Corporation sobre os temas discutidos na data da publicao. Como a Microsoft deve responder s mudanas das condies de mercado, este documento no deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft no pode assegurar a exatido de qualquer informao apresentada aps a data da publicao.

Este White Paper fornecido apenas para fins informativos. A MICROSOFT NO FORNECE QUAISQUER GARANTIAS, EXPLCITAS, IMPLCITAS OU ESTATUTRIAS NESTE DOCUMENTO.

O cumprimento de todas as leis pertinentes de direitos autorais de responsabilidade do usurio. Sem limitar os direitos sob o direito autoral, nenhuma parte deste documento pode ser reproduzida, armazenada em, ou inserida em um sistema de recuperao de dados, ou transmitido de qualquer forma ou por qualquer meio (eletrnico, mecnico, fotocpia, gravao ou outro), ou para qualquer fim, sem a permisso expressa por escrito da Microsoft Corporation.

A Microsoft pode deter as patentes, as solicitaes de patentes, as marcas comerciais, os direitos autorais ou outras propriedades intelectuais pertinentes ao objeto deste documento. Salvo expressamente disposto em qualquer contrato de licena escrito da Microsoft, o fornecimento deste documento no confere a voc qualquer licena em relao a essas patentes, marcas comerciais, direitos autorais ou outras propriedades intelectuais.

Salvo indicao em contrrio, os exemplos de empresas, organizaes, produtos, nomes de domnio, endereos de e-mail, logotipos, pessoas, lugares e eventos aqui mencionados so fictcios, e nenhuma associao com qualquer empresa, organizao, produto, nome de domnio, endereo de e-mail, logotipo, pessoa, lugar ou evento real intencional ou deve ser deduzida como tal.

2007 Microsoft Corporation. Todos os direitos reservados.

Microsoft, Excel, Office, PivotChart, PivotTable, SQL Server e Visual Studio so marcas ou marcas registradas da Microsoft Corporation nos Estados Unidos e/ou em outros pases.

Os nomes de empresas e produtos reais mencionados aqui podem ser as marcas de seus respectivos proprietrios.

Contedo
Introduo........................................................................................................1 Configurao Segura.........................................................................................2 Atualizao do Windows...................................................................................2 Configurao da rea de Superfcie...................................................................2 Autenticao.....................................................................................................3 Imposio de Diretiva de Senha........................................................................4 Autenticao de ponto de extremidade...............................................................5 Autorizao.......................................................................................................7 Permisses granulares.....................................................................................7 Entidades de segurana e protegveis...........................................................8 Funes e permisses.................................................................................9 Segurana de Metadados................................................................................11 Agentes proxies do SQL Server ......................................................................12 Contexto de execuo....................................................................................15 Separao entre usurio e esquema................................................................17 Gerenciamento de criptografia e de chave......................................................20 Criptografia de dados.....................................................................................20 Criptografia de dados transparente.............................................................22 Gerenciamento de Chave Estensvel............................................................23 Autenticao de mdulo de cdigo..............................................................23 Auditoria do SQL Server 2008 ........................................................................25 Auditoria de todas as aes............................................................................25 Gatilhos DDL.................................................................................................27 Concluso........................................................................................................28

SQL Server 2008 Security Overview for Database Administrators

Introduo
A segurana vem ganhando importncia cada vez maior medida que cresce o nmero de redes conectadas. Os bens da sua empresa precisam estar protegidos, especialmente os bancos de dados, pois contm informaes valiosas. Um dos recursos crticos de um mecanismo de banco de dados a segurana, a proteo da empresa contra incontveis ameaas. Os recursos de segurana do Microsoft SQL Server 2008 foram projetados para torn-lo mais seguro. Alm disso, esses recursos tornaram-se mais compreensveis e acessveis s pessoas responsveis pela proteo de dados. Nos ltimos anos, desenvolveu-se no mundo uma compreenso mais apurada do que deve ser um sistema seguro baseado em computadores. A Microsoft est na vanguarda desse desenvolvimento, sendo que o SQL Server consiste em um dos primeiros produtos servidores a implementar essa compreenso por completo. O SQL Server habilita ao importante princpio de privilgios mnimos, assim no ser preciso conceder aos usurios mais permisses do que o necessrio para realizarem seus trabalhos. Alm disso, este fornece ferramentas de defesa elaboradas a fundo, dessa forma ser possvel implementar medidas que frustraro at os invasores mais habilidosos. Muito se tem escrito e discutido sobre a iniciativa de Computao Confivel da Microsoft, a qual orienta o desenvolvimento de todos os softwares da empresa. Obtenha mais informaes no site de Computao Confivel, em http://www.microsoft.com/brasil/security/computacaoconfiavel/default.mspx. Os quatro componentes essenciais dessa iniciativa so: Seguro por design. Os softwares requerem um design seguro como a base para afastar invasores e proteger os dados. Seguro por padro. Os administradores de sistema no devem precisar trabalhar para tornar segura uma nova instalao, pois estas devem ser seguras por padro. Seguro na implantao. Os softwares devem auxiliar na atualizao deles prprios com os mais recentes patches de segurana, bem como na prpria manuteno. Comunicaes. Comunicar as melhores prticas e desenvolver informaes sobre ameaas, de forma que os administradores possam proteger seus sistemas de maneira pr-ativa.

Esses princpios orientadores tornam-se muito claros no SQL Server 2008, o qual fornece todas as ferramentas necessrias para assegurar seus bancos de dados. Este artigo investiga os mais importantes recursos de segurana, para administradores de sistemas e bancos de dados. Em primeiro lugar, observa-se como descomplicado instalar e configurar o SQL Server 2008 de maneira segura. Sero examinados os recursos para autenticao e autorizao, os quais controlam o acesso ao servidor e determinam o que o usurio pode fazer assim que obtm a autenticao. Ao final sero observados os recursos de segurana de banco de dados, os quais o administrador precisa entender a fim de fornecer um ambiente seguro para os bancos de dados, bem como para os aplicativos que os acessam.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

Configurao Segura
O primeiro requisito para uma instalao segura do SQL Server consiste em um ambiente protegido. Nenhuma mudana significativa aconteceu aos requisitos de segurana externa do servidor que executa o SQL Server 2008. Deve-se assegurar fisicamente o servidor e fazer o backup dos dados regularmente, coloc-los sob a proteo de um ou mais firewalls caso estejam conectados a uma rede; evitar instalar o SQL Server em um computador que possua outros aplicativos de servidor; e habilitar somente um nmero mnimo de protocolos de rede necessrio. Instale em um computador Microsoft Windows Server 2003 ou Microsoft Windows Server 2008, para que o SQL Server obtenha plenos benefcios ao operar protees de segurana de nvel de sistema. Alm disso, a instalao mais segura ser feita em uma ou mais parties NTFS. Uma vez que o ambiente esteja protegido, muito importante realizar a instalao SQL Server 2008 de forma segura. O programa de instalao realiza todas as tarefas habituais, alm de possuir um System Configuration Checker (Verificador de Configurao do Sistema), o qual notifica sobre deficincias que possam causar problemas. A instalao do SQL Server 2008 no habilita todos os recursos por padro, mas instala noes fundamentais e os recursos mais utilizados. Os recursos cuja necessidade em um ambiente de produo improvvel so por padro desligados, assim as ferramentas suportadas podem ser utilizadas para ligar somente os recursos necessrios. Isso faz parte da autorizao de segurana por padro Trustworthy Computing (Computao Confivel). Isso significa que, ao ser instalado, o SQL Server 2008 est protegido e pronto para o uso por meio de configuraes padro definidas de forma segura. Os recursos no requisitados por um servidor de banco de dados bsico permanecem desinstalados, visando uma rea de superfcie reduzida. Como por padro nem todos os recursos so habilitados em todos os sistemas, uma heterogeneidade introduzida em termos de imagem de instalao do sistema. Isso limita o nmero de sistemas que contenham recursos vulnerveis a possveis invases, ajudando a proteger contra invases em larga escala e worms.

Atualizao do Windows
Aps a implantao do SQL Server em sua empresa, novas ameaas e vulnerabilidades sero descobertas. O Windows Update foi projetado para garantir o download e a aplicao de patches em tempo hbil a fim de diminuir os problemas especficos de segurana. possvel utilizar o Windows Update para aplicar patches do SQL Server 2008 automaticamente, de modo a reduzir as ameas causadas por vulnerabilidades de software conhecidas. O WSUS (Windows Server Update Service) deve ser utilizado no gerenciamento da distribuio de patches e atualizaes por toda a empresa para a maioria dos ambientes empresariais.

Configurao da rea de Superfcie


O SQL Server 2008 possui inmeros recursos, dos quais muitos esto instalados em estado desabilitado, como por exemplo: integrao CLR, espelhamento de banco de dados, depurao, Service Broker (Agente de Servios) e funes de e-mail. Estes embora instalados, no esto em execuo, nem disponveis at que sejam ligados ou configurados. Esse design compatvel com o paradigma de reduo da rea de
Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

superfcie do princpio de segurana por padro do SQL Server, de modo que resulta em uma superfcie reduzida de invaso, pois o invasor no poder fazer uso de um recurso no disponvel ou desabilitado. O dilema consiste no fato de que pode ser demorado buscar at conseguir todas as declaraes Transact-SQL para ativar recursos. Mesmo quando descobrimos que o procedimento armazenado do sistema sp_configure realiza muitas das aes necessrias, ainda preciso escrever cdigos intuitivos como estes: sp_configure 'show advanced options', 1 reconfigure with override sp_configure 'clr enabled', 1 Existem opes de configurao em demasia, para no se ter pressa em escrever esse tipo de cdigo, especialmente quando existem vrias instncias do SQL Server implantadas por toda a empresa. O SQL Server 2008 contm uma tecnologia de gerenciamento baseada em diretiva de nome DMF (Declarative Management Framework). A DMF fornece diversas Facetas de configurao, cada qual estabelece um conjunto de parmetros de configurao ou propriedades relacionados. Essas facetas podem ser utilizadas para criar Condies que especifiquem as configuraes desejadas para as opes de configurao, bem como imponham essas condies na qualidade de Diretivas para as instncias do SQL Server atravs da empresa. Uma das facetas includas no SQL Server 2008 consiste na faceta de rea de Superfcie (Surface Area), a qual pode ser utilizada para definir uma diretiva que controle o status de vrios recursos do SQL Server 2008. Com a criao de uma diretiva que defina a rea de superfcie desejada para os servidores, possvel impor facilmente uma rea de superfcie mnima em todas as instncias do SQL Server de sua empresa, de modo a reduzir a chance de ocorrncia de invases mal-intesionadas.

Autenticao
A Microsoft desenvolveu o SQL Server 2000 numa poca em que dados e servidores necessitavam de proteo, porm no tinham de resistir aos contnuos ataques que acontecem na Internet atualmente. A pergunta bsica de autenticao continua a mesma: quem o solicitante e como ele pode comprovar essa informao. Porm, o SQL Server 2008 fornece recursos de autenticao mais fortes, os quais oferecem um suporte superior aos arredores do servidor para permitir a entrada das pessoas bem intensionadas e impedir a entrada dos mal intencionados. O SQL Server Authentication fornece autenticao para clientes no baseados no Windows ou para aplicativos que utilizem uma cadeia de conexo simples, contendo identificaes de usurio e senhas. Embora esse logon seja fcil de utilizar e popular com os programadores de aplicativos, no to seguro quanto autenticao do Windows, por isso no se aconselha o uso desse mecanismo de autenticao. A opo de Autenticao foi aprimorada no SQL Server 2008. Em primeiro lugar, esta suporta a criptografia do canal por padro, atravs do uso de certificados gerados pela SQL. O administrador no precisa adquirir e instalar um certificado SSL vlido para garantir que o canal no qual transcorre o fluxo de credenciais seja seguro. Como o SQL Server 2008 gera esses certificados automaticamente, o canal criptografado por

Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

padro, de forma automtica, ao transmitir pacotes de logon. Isso acontece caso o cliente esteja no nvel do SQL Server 2005 ou acima dele. Observe que o certificado nativo gerado pelo SQL Server protege contra ataques MITM (man-in-the-middle) passivos, no ponto que o invasor est detectando a rede. Para proteger os sistemas de maneira mais eficiente contra os ataques intermedirios ativos, deve-se implantar e utilizar certificados confiveis tambm para os clientes. A Autenticao do SQL Server 2008 est mais aprimorada porque, por padro, o mecanismo do banco de dados agora utiliza a Diretiva de Grupo do Windows para a complexidade e a validade de senha, bem como para o bloqueio de contas dos logon do SQL, ao ser utilizado junto com um servidor Windows 2003 ou mais recente. Isso significa que possvel impor a diretiva de senha do Windows nas contas do SQL Server.

Imposio de Diretiva de Senha


Com o SQL Server 2008, a imposio de diretiva de senha construda dentro do servidor. Atravs do uso do NetValidatePasswordPolicy() API, o qual faz parte da biblioteca NetAPI32 do Windows Server 2003, o SQL Server valida a senha durante a autenticao e durante a definio de senha, e ento redefine de acordo com as diretivas do Windows para fora de senha, validao e bloqueio de conta. A tabela nmero 3 especifica as definies contidas na diretiva. Tabela 3: Componentes de diretiva de senha do Windows Server 2003 Categoria Diretiva de Senha Nome Impor histrico de senhas Tamanho mnimo de senha A senha deve satisfazer requisitos de complexidade Armazenar senhas usando criptografia reversvel Veja texto abaixo. Observaes Impede que o usurio reutilize senhas antigas, como por exempo, alternar entre duas senhas.

Possibilita a recuperao da senha pelo Windows. Essa diretiva no deve ser habilitada a menos que os requisitos de aplicativo superem a necessidade de proteger as informaes de senha. (Essa diretiva no se aplica ao SQL Server.)

Validao de Senha

Durao mxima da senha Durao mnima da senha

Diretiva de Bloqueio de Conta

Durao do bloqueio de conta Limite do bloqueio de conta

Durao do bloqueio de conta em minutos. O Windows habilita essa diretiva quando o limite do bloqueio de conta > 0. Nmero mximo de tentativas malsucedidas de logon.
Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

Zerar contador de bloqueios de conta aps

O tempo em minutos aps o qual o Windows zera o contador das tentativas malsucedidas. O Windows habilita essa diretiva quando o limite de bloqueio de conta > 0.

Caso voc no esteja executando o Windows Server 2003 ou verso mais recente, o SQL Server continua impondo a fora de senha atravs do uso de simples verificaes para prevenir que as senhas sejam: Nulas ou em branco O nome do prprio computador ou a mesma do logon As senhas password, admin, "administrator, "sa, "sysadmin

Aplica-se o mesmo padro de complexidade para todas as senhas criadas e utilizadas no SQL Server, incluindo aquelas para o logon sa, funes de aplicativo, chaves mestre de bancos de dados para criptografia e chaves de criptografia simtrica. O SQL Server sempre verifica a diretiva de senha por padro, porm possvel suspender a imposio para logons individuais atravs da instruo CREATE LOGIN ou ALTER LOGIN, como nos cdigos a seguir: CREATE LOGIN bob WITH PASSWORD = 'S%V7Vlv3c9Es8', CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF utiliza a parte de durao mnima e mxima da senha de diretiva do Windows Server 2003 e utiliza as outras configuraes de diretiva. As configuraes administrativas tambm permitem ligar e desligar verificaes de diretiva senha e de validao de senha, bem como exigir alterao de senha na primeira vez que o usurio faz o log on. A opo MUST_CHANGE no CREATE LOGIN exige que o usurio altere a senha na prxima vez que efetuar o log on. No lado do cliente, ela permite a alterao de senha no logon. Todas as novas tecnologias de acesso a dados do lado do cliente suportaro essas configuraes, entre elas o OLE DB e ADO.NET, bem como ferramentas de cliente como o Management Sudio. Caso o usurio no tenha xito aps diversas tentativas de log on, excedendo o nmero permitido pela diretiva de senha, o SQL Server bloqueia a conta, com base nas configuraes de diretiva do Windows. O administrador pode desbloquear a conta com a instruo ALTER LOGIN: ALTER LOGIN alice WITH PASSWORD = '3x1Tq#PO^YIAz' UNLOCK

Autenticao de ponto de extremidade


O SQL Server 2008 suporta tanto o Tabular Data Stream binrio tradicional para o acesso de clientes aos dados, quanto o acesso atravs do servio nativo Web XML com o uso do HTTP. O benefcio principal da permisso ao acesso atravs do HTTP consiste no fato de que qualquer software cliente ou ferramentas de desenvolvimento que reconheam os protocolos de servio Web podem acessar os dados armazenados no SQL Server. Isso significa que o SQL Server 2008 fornece mtodos autnomos de servio Web, assim como um ponto de extremidade completo em uma SOA (Service Oriented Architecture - Arquitetura Orientada por Servios). Utilizar o SQL Server 2008 como um host de servio Web requer duas etapas gerais, com diversas possibilidades de variaes para cada uma: definir os procedimentos
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

armazenados e funes definidas pelo usurio, que fornecem os mtodos de servio Web; e defir o ponto de extremidade HTTP, o qual recebe as chamadas de mtodo via HTTP e as guia ao procedimento apropriado. Este artigo enfoca os problemas de segurana em questo. Para obter detalhes sobre a utilizao e a configurao de pontos de extremidade HTTP, veja o CREATE ENDPOINT (Transact-SQL) nos Livros SQL Server Online. Os servios Web XML do SQL Server utilizam o HTTP e, por padro, a porta 80, por isso a maioria dos firewalls permite a passagem do trfego. Contudo, um ponto de extremidade desprotegido consiste em um vetor em potencial para invases e deve ser assegurado, de modo que o SQL Server possui uma forte autenticao e autorizao. Por padro, o SQL Server no possui nenhum ponto de extremidade. Para a criao deste necessrio possuir um nvel alto de permisses que possibilitem: criar, alterar e habilitar pontos de extremidade HTTP. O SQL Server 2008 fornece cinco tipos diferentes de autenticao, semelhantes queles utilizados pelo IIS para a autenticao de sites. Autenticao Bsica A autenticao bsica parte do protocolo HTTP 1.1., o qual transmite as credenciais de logon em texto no criptografado, codificado com base 64. As credencias devem ser mapeadas no logon do Windows, estas sero depois utilizadas pelo SQL Server na autorizao de acesso aos recursos do banco de dados. Caso utilize esta autenticao, voc no poder definir o argumento PORTS como CLEAR, mas em vez disso, deve defini-lo como SSL e utilizar um certificado digital com o SSL, para criptografar as comunicaes com o software cliente. Autenticao Digest A autenticao digest tambm parte do protocolo HTTP 1.1. Esta realiza o hash das credenciais com o MD5 antes de envi-las ao servidor, de modo que este no envia as credenciais atravs da fiao, nem na forma criptografada. As credenciais precisam ser mapeadas em uma conta de domnio do Windows vlida. Contas de usurios locais no podero ser utilizadas. Autenticao NTLM - O NTML utiliza o protolocolo de desafio-resposta introduzido originalmente no Microsoft Windows NT e suportado em todas as verses do cliente e do servidor do Windows desde ento. Esta fornece uma autenticao segura quando cliente e servidor so sistemas do Windows e requer uma conta de domnio vlida. Autenticao Kerberos - A autenticao Kerberos, disponibilizada no Windows 2000 e verses mais recentes, baseada em um protocolo de padro industrial disponvel em muitos sistemas operacionais. Esta permite a autenticao mtua, na qual cliente e servidor asseguram-se da identidade um do outro de maneira razovel, alm de fornecer uma forma de autenticao altamente segura. Para utilizar a Kerberos no Windows Server 2003 necessrio registrar o SPN (Service Principal Name - Nome da Entidade de Servio) Kerberos com o http.sys usando o utilitrio SetSPN.exe, o qual faz parte das Ferramentas de Suporte do Windows (Windows Support Tools). Autenticao Integrada - A autenticao integrada fornece o melhor das autenticaes NTLM e Kerberos. O servidor utiliza uma das duas autenticaes, a qual ser solicitada pelo cliente, possibilitando a autenticao mais segura que o cliente suporte, enquanto o servio fica disponvel para outras verses do Windows. possvel configurar o Http.sys no Windows 2003 para negociar com o cliente qual protocolo ele deve utilizar.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

Defini-se o mtodo de autenticao utilizado para um ponto de extremidade com o atributo AUTHENTICATION da instruo CREATE ou ALTER ENDPOINT. Por exemplo, o cdigo a seguir cria um ponto de extremidade que utiliza a autenticao Kerberos: CREATE ENDPOINT myEndpoint STATE=STARTED AS HTTP (PATH = '/MyHttpEndpoint', AUTHENTICATION = (KERBEROS), PORTS = (CLEAR), SITE = 'MySqlServer') FOR SOAP (WSDL = DEFAULT, DATABASE = 'myDB', NAMESPACE = 'http://example.com/MySqlServer/myDB/WebService') O SQL Server 2008 suporta os pontos de extremidade que escutam tanto o http quanto uma porta definida pelo usurio no TCP. Tambm possvel formatar solicitaes utilizando diversos formatos: SOAP, Transact-SQL, um formato especfico do Service Broker (Agente de Servios) e outro utilizado para o espelhamento de banco de dados. Ao utilizar o SOAP, voc pode se beneficiar dos cabealhos WS-Security para autenticar os logons do SQL Server. A Microsoft implementou a autenticao de ponto de extremidade do Servio Web para suportar inmeros protocolos e especificaes, este artigo mencionou apenas alguns. preciso habilitar de maneira explcita a opo de autenticao e assegurar que os clientes podem fornecem os tipos de credenciais exigidos. Uma vez que o cliente tenha sido autenticado pelo SQL Server, possvel autorizar os recursos, aos quais o logon possui autorizao de acesso, o que est descrito na prxima seo.

Autorizao
Aps a autorizao, chega o momento de pensar sobre o que possvel fazer com um logon autenticado. Nesta rea, as verses 2008 e 2005 do SQL Server so mais flexveis do que as verses anteriores. As permisses agora so bem mais granulares, de forma que possvel conceder permisses especficas requisitadas, em vez de conceder a associao a uma funo especificada, o que implica em mais permisses do que o necessrio. Agora existem muito mais entidades de segurana protegveis para as quais voc pode atribuir permisses mais granulares. Para a proteo aprimorada dos dados do usurio, informaes estruturais e metadados sobre um protegvel em particular esto agora disponveis somente para as entidades de segurana que possuem permisso de acesso aos protegveis. Tambm possvel criar definies de permisso do cliente utilizando um mecanismo que permite a uma pessoa definir o contexto de segurana no qual os procedimentos armazenados podem ser executados. Alm disso, o SQL Agent utiliza um esquema de proxy flexvel, o qual permite s etapas de trabalho executar e acessar os recursos necessrios. Todos esses recursos tornam o SQL Server mais complexo, embora bem mais seguro.

Permisses granulares
Um dos muitos aspectos em que o SQL Server 2008 e o SQL Server 2005 so muito mais seguros do que as verses anteriores consiste na granulidade de permisses
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

aprimorada. Anteriormente, o administrador precisava conceder a associao a um usurio em uma funo de servidor ou banco de dados definidos, para desempenhar operaes especficas, mas com freqncia essas funes possuam permisses extensas demais para tarefas simples. O princpio do privilgio mnimo requer que o usurio possua apenas as permisses mnimas para realizar um trabalho, de modo que atribuir funes extensas para finalidades reduzidas infringe esse princpio. O conjunto de funes de servidor e de banco de dados definidos quase no foi alterado desde o SQL Server 2000, de forma que ainda possvel obter benefcios a partir daqueles grupos de permisses pr-definidos, quando usurios ou aplicativos solicitarem todas ou a maioria das permisses definidas. A maior alterao foi provavelmente a adio de uma funo de servidor pblica. Contudo, o princpio do privilgio mnimo ordena que voc no utilize uma funo se esta no se adequar perfeitamente necessidade da entidade de segurana para aquela tarefa. Embora seja mais trabalhoso descobrir e atribuir as permisses necessrias a uma entidade de segurana, o resultado disso consiste em um ambiente de banco de dados bem mais seguro.

Entidades de segurana e protegveis


Uma entidade de segurana no SQL Server 2008 consiste em qualquer indivduo, grupo ou processo que possa solicitar o acesso a um recurso protegido e obt-lo atravs de concesso. Como nas verses anteriores do SQL Server, possvel definir uma entidade de segurana no Windows ou base-la em um logon do SQL Server, sem entidade correspondente do Windows. A lista a seguir mostra a hierarquia das entidades de segurana do SQL Server 2008, com exceo das funes definidas de servidor e banco de dados, e tambm como realizar o mapeamento de logons e usurios de bancos de dados para os objetos de segurana. O escopo da influncia da entidade depende do escopo da definio desta, assim uma entidade de nvel Windows mais abrangente do que a de nvel SQL Server, a qual mais abrangente do que a entidade de nvel de banco de dados. Todos os usurios de bancos de dados pertencem automaticamente a uma funo pblica definida. Entidades de Segurana de Nvel Windows Logon de Domnio do Windows Logon Local do Windows Grupo do Windows Logon do SQL Server Logon do SQL Server mapeado em um logon do Windows Logon do SQL Server mapeado em um certificado Logon do SQL Server mapeado em uma chave assimtrica Usurio de Banco de Dados Usurio de banco de dados mapeado em um Logon do SQL Server Usurio de banco de dados mapeado em um Logon do SQL Server Usurio de banco de dados mapeado em um certificado Usurio de banco de dados mapeado em uma chave simtrica
Microsoft Corporation 2007

Entidades de Segurana de Nvel SQL Server

Entidades de Segurana de Nvel de Banco de Dados

SQL Server 2008 Security Overview for Database Administrators

Funo de Banco de Dados Funo de aplicativo Funo pblica

A outra parte da autorizao consiste nos objetos que voc pode assegurar atravs da concesso e da recusa de permisses. A figura 4 descreve a hierarquia de objetos protegveis do SQL Server 2008. No nvel do servidor, possvel assegurar os pontos de extremidade de rede para controlar os canais de comunicao dentro e fora do servidor, assim como banco de dados, ligaes, logons e funes. No nvel de banco de dados e de esquema, todo objeto possvel de ser criado , na prtica, protegvel, incluindo aqueles que residem dentro do esquema.

Figura 1: Hierarquia de objetos protegveis do SQL Server 2008

Funes e permisses
Para compreender a respeito do nmero de permisses disponveis no SQL Server voc pode invocar a funo de sistema fn_builtin_permissions: SELECT * FROM sys.fn_builtin_permissions(default) Estes so os novos tipos de permisses do SQL Server 2005: CONTROL. Confere permisses do tipo proprietrias (owner-like), as quais concedem efetivamente todas as permisses definidas ao objeto e todos os objetos no escopo desta, incluindo a capacidade de conceder permisses a outros beneficiados. O CONTROL SERVER concede privilgios semelhantes aos do sysadmin. ALTER. Confere permisses para alterar quaisquer propriedades do objeto protegvel, menos alterao de propriedade. Confere permisses de forma inerente para os objetos protegveis ALTER, CREATE ou DROP dentro do mesmo escopo. Por exemplo, conceder permisses ALTER em um banco de dados inclui a permisso para alterao de tabelas. ALTER ANY <securable object>. Confere permisses para alterar qualquer objeto protegvel do tipo especificado. Por exemplo, conceder ALTER ANY ASSEMBLY permite alterar qualquer assembly .NET do banco de dados, enquanto que no nvel
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

10

do servidor conceder ALTER ANY LOGIN permite ao usurio alterar qualquer logon no servidor. IMPERSONATE ON <login or user>. Confere permisses para representar o usurio especificado ou o logon. Como veremos mais adiante neste artigo, esta permisso necessria para alternar os contextos de execuo para os procedimentos armazenados. Essa permisso tambm utiliza para fazer representaes em lote. TAKE OWNERSHIP. Confere ao beneficiado a permisso de propriedade do protegvel, com o uso da instruo ALTER AUTHORIZATION.

O SQL Server 2008 ainda utiliza o esquema familiar GRANT, DENY, e REVOKE para atribuir ou negar permisses a uma entidade de segurana em um objeto protegvel. A instruo GRANT agora abrange todas as novas opes de permisso, tais como o escopo de concesso e se a entidade de segurana pode conceder permisses a outras entidades de segurana. O SQL Server no concede permisses para todos os bancos de dados ao mesmo tempo (cross-database). Para a concesso de tais permisses, necessrio criar um usurio duplicado em cada banco de dados de modo a atribuir a permisso a cada usurio do banco de dados em separado. Como ocorre nas verses anteriores do SQL Server, a habilitao de uma funo de aplicativo suspende as outras permisses enquanto a funo estiver ativa. Contudo, no SQL Server 2008 e no SQL Server 2005, possvel remover a definio de funo de aplicativo. Outra diferena entre o SQL Server 2000 e verses mais recentes consiste no fato de que ao habilitar uma funo de aplicativo, a funo tambm suspende todos os privilgios do servidor, inclundo o public (pblico). Por exemplo, caso voc conceda VIEW ANY DEFINITION ao public, a funo de aplicativo no cumprir com a solicitao. Isto se torna mais detectvel no momento de acessar metadados no nvel do servidor sob um contexto de funo de aplicativo. Observao: A alternativa recente e preferencial para as funes de aplicativo consiste em utilizar contextos de execuo em mdulos de cdigo . Para obter mais informaes, veja Execution Context neste artigo. Conceder uma permisso em particular pode transmitir os direitos a outras permisses por implicao. A permisso ALTER em um esquema, por exemplo, abrange permisses mais granulares e de nvel inferior do que as implcitas. A figura 5 mostra as permisses implcitas para o ALTER SCHEMA. Veja o Covering/Implied Permissions (Permisses Abrangidas/Implicitas) (Mecanismo de Banco de Dados) nos SQL Server Books Online para o cdigo Transact-SQL para uma funo ImplyingPermissions definida pelo usurio, que reune a lista de hierarquia a partir do modo de exibio de catlogo sys.fn_builtin_permissions, bem como identifica a profundidade de cada permisso na hierarquia. Aps adicionar ImplyingPermissions ao banco de dados mestre, I executou essa instruo para produzir a Figura 5, aprovando (passing in) o objeto e o tipo de permisso: SELECT * FROM master.dbo.ImplyingPermissions('schema', 'alter') ORDER BY height, rank Esta uma excelente maneira de explorar hierarquia das permisses do SQL Server 2008.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

11

Figura 5: A hierarquia das permisses implcitas do ALTER SCHEMA Quando levamos em conta o seguinte: nmero e tipos de entidade de segurana disponveis, nmero de objetos protegveis no servidor e em um banco de dados tpico, nmero absoluto de permisses disponveis e permisses abrangidas e implcitas; percebemos rapidamente como podem ser as permisses granulares do SQL Server 2008. A criao de um banco de dados atualmente requer uma anlise muito mais detalhada das necessidades de segurana deste, bem como um controle cuidadoso das permisses em todos os objetos. No entanto, vale pena realizar essa anlise e utilizar os recursos do SQL Server 2008 resulta em bancos de dados mais seguros.

Segurana de Metadados
O esquema de permisso granular do SQL Server possui como benefcio a proteo dos metadados assim como dos dados. Antes do SQL Server 2005, o usurio com qualquer acesso a um banco de dados podia ver os metadados de todos os objetos no interior deste, independente do usurio poder acessar os dados ali contidos ou executar um procedimento armazenado. O SQL Server 2008 examina as permisses que uma entidade de segurana possui no interior do banco de dados e revela os metadados de um objeto somente se est for a proprietria ou possui alguma permisso sobre o objeto. Tambm existe uma permisso VIEW DEFINITION, a qual pode conceder a permisso para exibir informaes de metadados mesmo sem outras permisses no objeto. Essa proteo se estende as mensagens de erro que retornam de operaes de acesso ou atualizao de um objeto, ao qual o usurio no possui acesso. Em vez de reconhecer a existncia de uma tabela chamada Address e fornecer ao invasor a confirmao de este est na pista certa, o SQL Server retorna uma mensagem de erro com possibilidades alternadas. Por exemplo, caso o usurio que no possui permisses em nenhum objeto do banco de dados tenta remover a tabela Address, o SQL Server exibe a seguinte mensagem de erro: Msg 3701, Level 14, State 20, Line 1 Cannot drop the table 'Address', because it does not exist or you do not have permission. Deste modo, o invasor no obtm a confirmao de que realmente existe uma tabela Address. Contudo, quem realizar a depurao deste problema continua tendo apenas um nmero limitado de possibilidades a explorar.

Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

12

Agentes proxies do SQL Server


O Agente do SQL Server consiste em um dos melhores exemplos do modelo de autorizao do SQL Server 2008. Com ele possvel definir diversas credenciais, as quais esto geralmente associadas aos logons do Windows, ligadas a usurios com as permisses necessrias para o desempenho de uma ou mais etapas do Agente do SQL Server. O Agente Proxy do SQL Server em seguida une as credencias com uma etapa de trabalho para fornecer as permisses necessrias. Isss fornece um meio granular de seguir o princpio do privilgio mnimo: concedendo a uma etapa de trabalho a permisso necessria e nada mais. possvel criar tantas proxies quanto se deseja, com a associao de cada uma delas a um ou mais subsistemas do Agente do SQL Server. Esse consiste em um contraste marcante em contraposio a grande potncia da conta proxy do SQL Server 2000, permitir que o usurio crie etapas de trabalho em quaisquer subsistemas do Agente SQL Server. Observe que Ao atualizar um servidor a partir do SQL Server 2000, cria-se uma nica conta proxy e todos os subsistemas so a ela atribudos, de forma que os trabalhos existentes continuam sendo executados. Aps a atualizao, crie credenciais e contas proxies para implementar um conjunto de proxies mais seguro e granular a fim de proteger os recursos de servidor. A figura 6 mostra o Object Explorer do Management Studio com uma lista de subsistemas disponvel no Agente do SQL Server. Cada subsistema pode possuir uma ou mais proxies a ele associadas, as quais concedem as permisses apropriadas para uma etapa de trabalho. Uma exceo a esse esquema consiste no fato de que os subsistemas Transact-SQL executam com as permisses do proprietrio do mdulo assim como acontecia no SQL Server 2000.

Figura 6: Os subsistemas do Agente do SQL Server que podem ser associados proxies Em uma nova instalao do SQL Server, somente a funo System Administrator possui permisso para manter os trabalhos do SQL Server Agent e no painel de gerenciamento do Management Studio Object Explorer est disponvel somente para o sysadmins. No SQL Server 2008, outras poucas funes esto disponveis, as quais
Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

13

podem ser utilizadas para conceder diversos nveis de permisses. possvel atribuir usurios as funes SQLAgentUser, SQLAgentReaderRole ou SQLAgentOperator, cada uma delas concede um nvel crescente de permisses para criar, gerenciar e executar trabalhos, ou a funo MaintenanceUser, a qual possui todas as permisses do SQLAgentUser, adicionada a capacidade para criar planos de manuteno. Os membros da funo sysadmin, obviamente podem realizar o que desejam em qualquer um dos subsistemas. Conceder a qualquer outro usurio direitos de utilizar os subsistemas requer a criao de pelo menos uma conta proxy, a qual pode conceder direitos a um ou mais subsistemas. A figura 7 mostra como uma conta proxy, a MyProxy, atribuda a diversas entidades de segurana, neste caso um usurio e uma funo. A conta proxy utiliza uma credencial, esta a une a uma conta, geralmente uma conta de domnio, com permisses no sistema operacional necessrias para desempenhar qualquer tarefa requisitada pelo subsistema. Cada proxy pode possuir um ou mais subsistemas a ele associados, os quais concedem entidade de segurana a capacidade para executar esses subsistemas.

Figura 7: Conta do Agente proxy do SQL Server para vrios subsistemas A seguir ser exibido o cdigo Transact-SQL, necessrio a implementao do esquema demonstrado na Figura 7. Este inicia com a criao de uma credencial, um objeto de banco de dados que fornece o link para a conta do sistema operacional, com o direito de desempenhar as aes intencionadas nos subsistemas. Em seguida, uma conta de proxy adicionada, a MyProxy, o qual na verdade apenas um nome amigvel para a credencial. A seguir, o proxy atribudo a duas entidades de segurana, nesse caso um logon do SQL Server e uma funo personalizada. Finalmente, o proxy associado a cada um dos quatro subsistemas do Agente do SQL Server. CREATE CREDENTIAL MyCredential WITH IDENTITY = 'MyDOMAIN\user1' GO msdb..sp_add_proxy @proxy_name = 'MyProxy', @credential_name = 'MyCredential' GO msdb..sp_grant_login_to_proxy @login_name = 'MyLogin', @proxy_name = 'MyProxy'
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

14

GO msdb..sp_grant_login_to_proxy @login_name = 'MyRole', @proxy_name = 'MyProxy' GO sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy', @subsystem_name = 'ActiveScripting' GO sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy', @subsystem_name = 'CmdExec' GO sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy', @subsystem_name = 'ANALYSISQUERY' GO sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy', @subsystem_name = 'DTS' GO O SQL Server Management Studio fornece suporte integral para a criao de credenciais e proxies, como mostra a Figura 8. Este cdigo cria o mesmo proxy que o cdigo anterior.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

15

Figura 2: Um novo Agente proxy do SQL Server no SQL Server Management Studio O proxy no constitui uma forma de contornar a segurana do sistema operacional. Caso a credencial utilizada com o proxy no possua a permisso do Windows, como por exemplo, para escrever a um diretrio de rede, o proxy tambm no obter essa permisso. Tambm possvel utilizar o proxy para conceder direitos de execuo limitados ao xp_cmdshell, j que essa a ferramenta mais utilizada por invasores para estender o alcance dentro da rede, uma vez que o computador SQL Server esteja comprometido. O proxy fornece essa proteo porque mesmo se a entidade de segurana possuir direitos ilimitados na rede, como, um administrador de domnio, todos os comandos executados atravs do proxy tm somente os direitos limitados da conta de credencial (credential account).

Contexto de execuo
O SQL Server suporta h muito tempo a idia de encadeamento de propriedades, como forma de assegurar que administradores e desenvolvedores de aplicativos tenham um
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

16

meio de verificao do tipo upfront (adiantado), os pontos de entrada de banco de dados, em vez de serem solicitados a fornecer permisses em todos os objetos acessados. Como o usurio a chamar o mdulo (procedimento armazenado ou funo) ou o modo de exibio tinha permisso de execuo no mdulo ou permisses de seleo no modo de exibio, e o proprietrio do mdulo ou modo de exibio era o proprietrio dos objetos acessados (um encadeamento de propriedades), nenhuma permisso foi verificada nos objetos subjacentes e o chamador recebeu os dados solicitados. Se o encadeamento de propriedades foi desfeito porque o proprietrio do cdigo no conhecia o objeto referenciado, o SQL Server verificou as permisses frente ao contexto de segurana do chamador. Se o chamador tivesse permisso para acessar o objeto, o SQL retornaria os dados. Caso contrrio, o SQL Server comunicaria um erro. O encadeamento de propriedade possui limitaes, pois se aplica somente a operaes de manipulao de dados e no ao SQL dinmico. Alm disso, no possvel realizar o encadeamento de propriedades se o acesso a objetos ocorrer entre os limites de propriedades. Por isso, essas permisses de verificao de comportamento upfront s funcionam para alguns casos. O SQL Server 2008 inclui a capacidade de marcar os mdulos com um contexto de execuo, tal como: instrues dentro do mdulo podem executar como um usurio em particular em oposio ao usurio chamador. Dessa forma, embora o usurio chamador ainda precise de permisses para executar o mdulo, o SQL Server verifica as permisses para as instrues dentro do mdulo frente ao contexto de execuo do mdulo. Esse comportamento pode ser utilizado para superar algumas das deficincias do encadeamento de propriedades, pois se aplica a todas as instrues dentro do mdulo. Os administradores que queiram desempenhar verificaes de permisses upfront, podem utilizar para isso o contexto de execuo. Agora ao determinar as funes definidas pelo usurio (com exceo dos valores de tabela embutidos), os procedimentos armazenados e os gatilhos, voc pode utilizar a clusula EXECUTE AS para especificar que permisses de usurio sero utilizadas pelo SQL Server para validar o acesso a objetos e dados referenciados pelo procedimento: CREATE PROCEDURE GetData(@Table varchar(40)) WITH EXECUTE AS 'User1' O SQL Server 2008 fornece quatro opes de EXECUTE AS. EXECUTE AS CALLER especifica que o cdigo seja executado no contexto de segurana do chamador do modulo, no havendo representao. O chamador precisa ter permisso de acesso a todos os objetos referenciados. Contudo, o SQL Server somente verifica as permisses para as cadeias de propriedade interrompidas, de modo que caso o proprietrio do cdigo tambm possua os objetos subjacentes, somente a permisso de execuo do mdulo ser verificada. Esse consiste no contexto de execuo padro para a compatibilidade com verses anteriores. EXECUTE AS 'user_name' especifica que o cdigo seja executado no contexto de segurana do usurio especificado. Essa uma excelente opo caso no seja o seu desejo depender da cadeia de propriedades. possvel em vez disso, criar um usurio com as permisses necessrias para executar o cdigo e as definies de permisso personalizadas.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

17

EXECUTE AS SELF consiste em uma notao de atalho para especificar o contexto de segurana do usurio que est criando ou alterando o mdulo. O SQL Server salva internamente o nome de usurio real associado com o mdulo em vez de "SELF". EXECUTE AS OWNER especifica o contexto de segurana como sendo aquele do proprietrio atual do mdulo no momento da execuo deste. Caso o mdulo no possua proprietrio, o contexto do proprietrio do esquema contido (containing) utilizado. Essa uma excelente opo caso seja seu desejo poder alterar o proprietrio do mdulo sem modificar o prprio mdulo.

A qualquer momento que o contexto do usurio for alterado com o uso da opo EXECUTE AS, o criador ou alterador do mdulo precisa possuir permisses IMPERSONATE para o usurio especificado. Enquando no for feita a alterao do contexto de execuo de todos os mdulos para todos os usurios, no possvel retirar o usurio especificado do banco de dados.

Separao entre usurio e esquema


No SQL Server 2000 no existia o conceito de esquema, o qual a especificao ANSI SQL-99 define como uma coleo de objetos de bancos de dados de propriedade de uma nica entidade de segurana, a qual forma um nico namespace de objetos. O esquema consiste em um container para objetos de bancos de dados, como por exemplo: tabelas, procedimentos armazenados, funes, tipos e gatilhos. Esse funciona tanto quanto um namespace no .NET Framework e XML, uma forma de agrupar objetos, de modo que o banco de dados pode reutilizar os nomes de objeto, como por exemplo, permitir que os nomes dbo.Customer e Fred.Customer existam no mesmo banco de dados, alm de agrupar objetos sob proprietrios diferentes. Observao: Ser necessrio utilizar exibies de catlogo como sys.database_sys.principals, sys.schemas, sys.objects, etc. Isto porque a antiga tabela de sistema sysobjects no suportava esquemas, portanto era incapaz de suportar a separao entre usurio e esquema. Alm disso, as antigas exibies de catlogo esto obsoletas, e por esta razo elas sero retiradas da prxima verso do SQL Server. A parte superior da Figura 9 mostra como os esquemas funcionavam no SQL Server 2000. Quando um administrador criava um usurio Alice no banco de dados, o SQL Server criava o esquema Alice automaticamente, o qual ficava oculto atrs do usurio Alice. Caso Alice fizesse o logon em um servidor que estivesse executando o SQL Server sem propriedades de banco de dados e criasse a Tabela 1, o nome verdadeiro da tabela seria Alice.Tabela1, o mesmo nome de outros objetos criados por Alice, como por exemplo Alice.StoredProcedure1 e Alice.Exibio 1. Em vez disso, se Alice fosse proprietria de um banco de dados ou sysadmin, os objetos por ela criados fariam parte do esquema dbo. Embora constuma-se dizer que os objetos so de propriedade do dbo, o significado disso o mesmo.

Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

18

Figura 9: Usurio/esquema/objetos no SQL Server 2000 e 2008 O problema com a unificao de usurios e esquemas do SQL Server 2000 surge quando necessrio alterar a propriedade dos objetos, como por exemplo, quando Alice deixa a empresa e Lucinda entra em seu lugar. O administrador do sistema precisaria alterar a propriedade de todos os objetos pertencentes a Alice para Lucinda. Um problema maior ainda seria ter que alterar todos os Transact-SQL ou os cdigos de aplicativos de cliente que se referissem a Alice.Table1 aps Lucinda ter adquirido propriedade sobre a tabela. Dependendo do nmero de objetos que Alice possui e como muitos aplicativos tiveram seus nomes incorporados, esta pode ser uma enorme tarefa. H muito tempo a Microsoft recomenda que o dbo interno seja o proprietrio de todos os objetos do banco de dados para contornar esses problemas. Seria bem mais fcil alterar a propriedade de banco de dados do que alterar diversos objetos e aplicativos de clientes. Observao: No se confunda com a instruo CREATE SCHEMA do SQL Server 2000. Essa era somente uma maneira fcil de criar tabelas e modos de exibio de propriedade de usurios particulares, bem como de conceder permisses. A instruo podia ser utilizada para nomer um proprietrio de esquema, mas no o esquema. O SQL Server ainda unia, de maneira irrevogvel, o proprietrio do esquema a todos os problemas de alterao de propriedade. O SQL Server 2008 anula isso e implementa o esquema SQL-99 com a separao entre usurio e esquema, conforme se v na parte inferior da Figura 9. Agora ao criar um novo usurio Alice, utilizando o novo CREATE USER DDL, o SQL Server no cria mais um esquema de mesmo nome automaticamente. necessrio, em vez disso, criar um esquema e atribuir propriedade deste a um usurio. Como agora todos os objetos de banco de dados mostrados esto contidos no esquema Schema1, o qual pertence inicialmente a Alice, simples alterar a propriedade de todos os objetos do esquema, basta alterar a propriedade do esquema para Lucinda. Cada usurio pode ter atribudo a ele tambm um esquema padro, de forma que o SQL Server admite todos os objetos referenciados por nome, sem que a referncia do esquema esteja no esquema padro. Na parte inferior da Figura 9, se Alice possui Schema1 como seu esquema padro, ela pode se referir a tabela como Schema1.Table1 ou simplesmentes Table1. A usuria Carol talvez no possua um esquema padro associado a seu nome de usuria de modo que teria de se referir a tabela como Schema1.Table1. Todo o usurio que no possua um esquema padro definido possui o dbo como padro.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

19

Nomes de objetos totalmente qualificados do SQL Server 2008 possuem uma estrutura de quatro partes, semelhante quelas de verses anteriores. server.database.schema.object Assim como nas verses anteriores, possvel omitir o nome do servidor se o objeto estiver no mesmo servidor em que o cdigo est sendo executado. possvel omitir o nome do banco de dados caso a conexo possua o mesmo banco de dados aberto e omitir o nome do esquema, caso esse seja o esquema padro para o usurio atual, ou seja, de propriedade do dbo, visto que esse o esquema usado em ltimo caso, quando o SQL Server tenta remover a ambigidade do nome de um objeto. Utilize a instruo CREATE USER, em vez de sp_adduser, para criar usurios novos. Esse procedimento armazenado do sistema ainda est disponvel para compatibilidade com verses anteriores, contudo foi um pouco modificado para estar de acordo com a nova separao entre usurios e esquemas. O sp_adduser cria um esquema com o mesmo nome que o recm colocado no usurio ou na funo de aplicativo e determina o esquema como padro para o usurio, imitando o comportamento do SQL Server 2000, porm fornecendo um esquema distinto. Observao: Ao utilizar a instruo ALTER AUTHORIZATION, possvel chegar ao estado em que a tabela do esquema MY de propriedade YOU (ou vice-versa). Isso possui algumas implicaes srias. Por exemplo: quem o proprietrio do gatilho da tabela, you ou my? O ponto principal consiste no fato de que agora pode ser complicado descobrir o proprietrio verdadeiro do tipo ou do objeto de escopo de esquema. Existem dois modos de contornar isso: Utilize OBJECTPROPERTY(id, 'OwnerId') para descobrir o proprietrio verdadeiro do objeto. Utilize TYPEPROPERTY(type,'OwnerId') para descobrir o proprietrio verdadeiro do tipo.

O SQL Server 2008 ajuda a diminuir o trabalho com os sinnimos. possvel criar sinnimos para qualquer objeto utilizando um nome de objeto completo em duas, trs ou quatro partes. O SQL Server utiliza o sinnimo para acessar o objeto definido. No cdigo a seguir, o Histrico de sinnimos representa o schema.table especificado do banco de dados AdventureWorks. A instruo SELECT devolve o contedo da tabela EmployeeDepartmentHistory. USE AdventureWorks GO CREATE SYNONYM History FOR HumanResources.EmployeeDepartmentHistory SELECT * FROM History Observao: O administrador ou proprietrio precisa conceder permisses ao sinnimo caso alguma outra pessoa passe a utiliz-lo. GRANT SELECT em um sinnimo para o modo de exibio, tabela ou funo de valor de tabela. GRANT EXECUTE em um sinnimo para um procedimento ou funo escalar, etc. Tambm possvel definir o Histrico do sinnimo para o nome completo em quatro partes, como no cdigo a seguir:

Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

20

CREATE SYNONYM History FOR MyServer.AdventureWorks.HumanResources.EmployeeDepartmentHistory Utilizar o nome completo em quatro partes dessa forma permite o uso do sinnimo a partir de outro contexto do banco de dados, presumindo que o usurio atual possua permisso para utilizar o sinnimo e ler a tabela: USE pubs SELECT * FROM AdventureWorks..History Observe tambm que se voc no fornecer um nome de esquema como parte de um nome de sinnimo, este far parte do esquema padro.

Gerenciamento de criptografia e de chave


A segurana ao nvel do servidor talvez a maior preocupao dos administradores de sistema, porm, no banco de dados que ocorre toda a ao no ambiente de produo. Geralmente o administrador do banco de dados pode permitir que o desenvolvedor de bando de dados se preocupe com os detalhes deste, desde que o desenvolvedor trabalhe dentro das limitaes do ambiente. O SQL Server 2008 fornece diversos recursos para proteger o banco de dados.

Criptografia de dados
O SQL Server 2000 e as verses anteriores no possuiam o suporte interno para criptografar os dados armazenados no banco de dados. Mas porque voc precisaria criptografar os dados armazenados em banco de dados bem protegido em um servidor abrigado de forma segura atrs de modernos firewalls? Devido a um importante e antigo princpio de segurana, chamado defesa em profundidade. Defesa em profundidade significa estender as defesas em camadas, de modo que mesmo que o invasor abra caminho e chegue at locais muito bem protegidos, ainda ser preciso atravessar camada aps camada para chegar ao seu destino final. Para um banco de dados, isso significa que se o invasor atravessar um firewall e passar pela segurana do Windows no servidor at o banco de dados, ele ainda precisar fazer um tremendo esforo para acessar o seu sistema e descriptografar os dados. Alm disso, hoje em dia com a legislao para os dados e a proteo de privacidade, estes precisam de forte proteo. O SQL Server 2008 possui um valioso suporte para vrios tipos de criptografias de dados utilizando chaves simtricas e assimtricas, alm de certificados digitais. O melhor entre tudo isso que SQL Server cuida do gerenciamento de chaves, a parte mais de difcil da criptografia. Manter os segredos sob sigilo no fcil. No mnimo, o administrador, precisar gerenciar o nvel superior de chaves na hierarquia mostrada na Figura 10. Os administradores do banco de dados necessitam entender a chave mestra do sistema no nvel do servidor e a chave mestra do banco de dados no nvel do banco de dados. Na rvore, cada chave protege uma chave filho, e esta protege sua chave filho e assim sucessivamente de cima at embaixo. A nica exceo acontece onde a senha protege uma chave simtrica ou certificado, dessa forma que o SQL Server permite que os usurios gerenciem as prprias chaves e se responsabilizem por manter segredo sobre estas.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

21

Figura 10: Hierarquia de chave de criptografia no SQL Server 2008 Observao: A Microsoft no aconselha a utilizao de certificados ou chaves assimtricas para a criptografia direta de dados. A criptogrfica assimtrica de chaves muitas vezes mais lenta, a quantidade de dados que se pode proteger limitada, alm de depender dos mdulos de chave. possvel proteger certificados e chaves assimtricas utilizando uma senha em vez da proteo pela chave mestra de banco de dados. Esta consiste na chave que regulamenta todas as outras chaves e os certificados no SQL Server. Consiste em uma chave simtrica que o SQL Server cria automaticamente durante a instalao. Evidentemente esta constitui um secredo importante, pois caso seja comprometida, o invasor conseguir decifrar todas as chaves do servidor gerenciadas pelo SQL Server. A DPAPI (Data Protection API API de Proteo de Dados) do Windows protege a Chave Mestra do Servio. O SQL Server gerencia a Chave Mestra do Servio, embora seja possvel desempenhar tarefas de manuteno: descartar (despejar), regenerar e restaurar chaves de um arquivo. Contudo, na maior parte do tempo no ser necessrio ou se intencionar realizar qualquer uma dessas alteraes na chave. Recomenda-se aos administradores realizar o backup das Chaves Mestre de Servio caso a chave sofra algum dano. Dentro do escopo do banco de dados, a chave mestra de banco de dados consiste no objeto de criptografia raiz (root encryption object) para todas as chaves, certificados e dados do banco de dados. Cada banco de dados possui uma nica chave mestra de modo que uma falha ocorrer caso haja a tentativa de criar uma segunda chave. Antes de utilizar o banco de dados, necessrio criar uma chave mestra de banco de dados, com o uso da instruo Transact-SQL CREATE MASTER KEY atravs de uma senha fornecida pelo usurio: CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'EOhnDGS6!7JKv' O SQL Server criptografa a chave com uma chave DES triple derivada da senha, assim como a chave mestra de servio. A primeira copia armazenada no banco de dados, ao passo que a segunda ficar no banco de dados mestre. Com a chave mestra de banco
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

22

de dados protegida pela chave mestra de servio, o SQL Server pode descriptografar a chave mestra de banco de dados automaticamente se for necessrio. O aplicativo ou usurio final no necessita abrir a chave mestra de maneira explicita, com o uso da senha: esta na principal vantagem de ter as chaves protegidas pela hierarquia. Desanexar o banco de dados com uma chave mestra existente e o deslocar para outro servidor poder ser um problema, pois a nova chave mestra de servio do servidor diferente daquela do antigo servidor. Conseqentemente, o servidor no consegue descriptografar de maneira automtica a chave mestra do banco de dados. Isso pode ser contornado abrindo-se a chave mestra do banco de dados, utilizando a senha com a qual a chave foi criptografada e, usando a instruo ALTER MASTER KEY, criptografar a chave com a nova chave mestra de servio. Caso contrrio, ser sempre necessrio abrir de maneira explcita a chave mestra de banco de dados antes do uso. Uma vez que a chave mestra do banco de dados foi criada, os programadores podem utiliz-la para criar qualquer um destes trs tipos de chave, dependendo do tipo de criptografia necessrio: Chaves assimtricas: utilizadas para criptografia de chave pblica com o par de chaves pblico e privado. Chaves simtricas: utilizadas para os segredos compartilhados, onde a mesma chave criptografa e descriptografa dados. Certificados: so basicamente invlucros para a chave pblica

Com todas as opes de criptografia e a profunda integrao dentro do servidor e do banco de dados, a criptografia tornou-se uma maneira vivel de adicionar uma camada final de proteo aos dados. Todavia, aconselh-se utilizar a ferramenta de maneira criteriosa, pois esta adiciona uma enorme carga de processamento sobre o servidor.

Criptografia de dados transparente


No SQL Server 2005 possvel criptografar dados no banco de dados gravando Transact-SQL personalizados, que utilizam os recursos criptogrficos do mecanismo de banco de dados. O SQL Server 2008 aprimorou essa condio, com a introduo da criptografia de dados transparente. A criptografia transparente de dados desempenha todas as operaes criptogrficas no nvel de banco de dados, o que remove a necessidade dos programadores criarem um cdigo personalizado para criptografar e descriptografar os dados. O dado criptografado da forma como gravado no disco e descriptografado da forma como lido neste. Ao utilizar o SQL Server para gerenciar a criptografia e a descriptografia de forma transparente, possvel assegurar os dados da empresa contidos no banco de dados, sem a necessidade de qualquer alterao nos aplicativos existentes, como mostra a Figura 11.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

23

Figura 11: Criptografia de dados transparente A DEK (Database Encryption Key - Chave de Criptografia de Banco de Dados) utilizada para desempenhar a criptografia e a descriptografia. Esta armazenada na registro de inicializao do banco de dados para que esteja disponvel durante os cenrios de recuperao. Para proteger a DEK possvel utilizar o Service Master Key (Chave Mestra de Servio) ou o HSM (Hardware Security Module Mdulo de Segurana de Hardware). Os HSMs so geralmente dispositivos USB ou smartcards (cartes inteligentes) e, por essa razo, menos propensos ao roubo ou perda.

Gerenciamento de Chave Estensvel


Com a crescente demanda por conformidade s normas e a preocupao geral com a privacidade dos dados, mais organizaes esto utilizando a criptografia como forma de fornecer uma soluo de defesa detalhada. Conforme aumenta a utilizao de criptografia e chaves pelas empresas para proteo dos dados, o gerenciamento de chaves se torna mais complexo. Alguns bancos de dados altamente seguros utilizam centenas de chaves, de modo que voc precisa empregar um sistema para armazenar, desativar e regenerar essas chaves. Alm disso, estas devem ser armazenadas separadas dos dados, para que a segurana seja aprimorada. O SQL Server 2008 revela a funcionalidade da criptografia para o uso de fornecedores terceirizados. Essas solues funcionam de forma uniforme com os bancos de dados do SQL Server 2005 e o SQL Server 2008, alm de fornecerem um gerenciamento de chave especializado para a empresa como um todo. Isso desloca a carga de trabalho do gerenciamento de chave do SQL Server para um sistema de gerenciamento de chave especializado. No SQL Server 2008, o gerenciamento de chave estensvel tambm suporta o uso do HSM para fornecer a separao fsica entre chaves e dados.

Autenticao de mdulo de cdigo


Um dos timos benefcios da criptografia no interior do SQL Server que esta fornece a capacidade de autenticar digitalmente os mdulos de cdigo (procedimentos armazenados, funes, gatilho e notificao de evento) com certificados. Isso oferece um controle muito mais granular sobre o acesso s tabelas do banco de dados e outros objetos. Da mesma forma que na criptografia de dados, o cdigo autenticado com a
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

24

chave privada, contida no certificado. Como conseqncia, as tabelas utilizadas no mdulo de cdigo autenticado estaro acessveis somente atravs do cdigo, de modo que no ser permitido o acesso de fora do mdulo. Em outras palavras, s permitido o acesso s tabelas com o uso de certificados, os mesmos utilizados na autenticao do mdulo. O efeito pode ser o mesmo sobre o procedimento armazenado. Por exemplo, caso este possua uma cadeia de propriedades ininterrupta, voc controla de maneira cuidadosa quais usurios conseguem a permisso EXECUTE no procedimento e probe o acesso direto s tabelas subjacentes. Porm, isso no auxilia nas situaes em que o procedimento possui uma cadeia de propriedades ininterrupta ou executa um SQL dinmico, o que requer que o usurio a executar o procedimento possua permisses para as tabelas subjacentes. Outra forma de alcanar o mesmo efeito consiste em utilizar EXECUTE AS, contudo isso altera o contexto de segurana sob o qual o procedimento executa. Esse efeito talvez no seja desejvel se, por exemplo, voc precisa registrar na tabela o usurio que de fato induziu a execuo do procedimento (com exceo de requisitar um nome de usurio como parmetro para o procedimento). Autenticar mdulos de cdigo possui o benefcio adicional de proteger contra alteraes no autorizadas ao mdulo de cdigo. Como acontece com outros documentos autenticados digitalmente, se o cdigo for alterado o certificado ser invalidado. O cdigo no executa sob o contexto do certificado, de forma que todo objeto que tm o acesso provisionado (fornecido) pelo certificado no estar acessvel. Para fazer isso, voc cria um certificado, o associa a um novo usurio e autentica o procedimento com o certificado. Conceda a esse usurio sejam quais forem as permisses necessrias para executar o procedimento armazenado. Em essncia, voc adicionou esse usurio ao contexto de segurana do procedimento armazenado como uma identidade secundria. Em seguida, conceda permisses executar a quaisquer usurios ou funes que necessitem da execuo do procedimento. O cdigo a seguir mostra essas etapas. Suponhamos que a inteno seja autenticar o procedimento mySchema.GetSecretStuff e que todos os objetos referenciados j esto no banco de dados: CREATE CERTIFICATE certCodeSigning ENCRYPTION BY PASSWORD = 'cJI%V4!axnJXfLC' WITH SUBJECT = 'Code signing certificate' GO -- Sign the stored procedure ADD SIGNATURE TO mySchema.GetSecretStuff BY CERTIFICATE certCodeSigning WITH PASSWORD = 'cJI%V4!axnJXfLC' GO -- Map a user to the certificate CREATE USER certUser FOR CERTIFICATE certCodeSigning GO
Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

25

--Assign SELECT permissions to new certUser GRANT SELECT ON SocialSecurity TO certUser GO -- Grant execute permission to the user who will run the code GRANT EXECUTE ON mySchema.GetSecretStuff TO ProcedureUser GO Agora somente os usurios que possuam permisses explcitas do EXECUTE no procedimento armazenado podem acessar os dados da tabela.

Auditoria do SQL Server 2008


Uma parte importante de qualquer soluo de segurana consiste na capacidade de realizar a auditoria das aes por motivos de prestao de contas e conformidade s normas. O SQL Server 2008 inclui diversos recursos que tornam possvel realizar a auditoria das atividades.

Auditoria de todas as aes


O SQL Server 2008 inclui o suporte a auditoria atravs do objeto Audit, o qual habilita o administrador a capturar atividades no servidor do banco de dados e armazen-las em um log. Com o SQL Server 2008, possvel armazenar informaes de auditoria nas seguintes destinaes: Arquivo Log de Aplicativo do Windows Log de Segurana do Windows

Para gravar no Log de Segurana do Windows, o SQL Server precisa ser configurado para executar como: Sistema Local, Servio Local, Servio de Rede ou uma conta de domnio com o privilgio SeAuditPrivilege, a qual no constitui um usurio interativo. Para criar um objeto Audit, preciso utilizar a instruo CREATE SERVER AUDIT. Esta define um objeto Audit, bem como associa o objeto a um destino. As opes especficas utilizadas na configurao do objeto Audit dependem do destino do audit. Por exemplo, o cdigo Transact-SQL a seguir cria dois objetos Audit, um para registrar atividades no arquivo e outro para registrar atividades no log de Aplicativos do Windows. CREATE SERVER AUDIT HIPAA_File_Audit TO FILE ( FILEPATH=\\SQLPROD_1\Audit\ ); CREATE SERVER AUDIT HIPAA_AppLog_Audit TO APPLICATION_LOG WITH ( QUEUE_DELAY = 500, ON_FAILURE = SHUTDOWN); Observe que ao registrar o log em um destino de arquivo, o nome do arquivo no estar especificado na instruo CREATE SERVER AUDIT. Os nomes de arquivo Audit adquirem o formato AuditName_AuditGUID_nn_TS.sqlaudit onde: AuditName o
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

26

nome do objeto Audit; AuditGUID consiste em um identificador exclusivo, associado ao objeto Audit ; nn um nmero de partio utilizado para particionar conjuntos de arquivos e TS consiste em um valor de carimbo de data/hora (timestamp value). Por exemplo, o objeto Audit HIPAA_FILE_Audit criado no exemplo de cdigo anterior, poderia gerar um arquivo de log com um nome similar a este:
HIPAA_File_Audit_{95A481F8-DEF3-40ad-B3C6-126B68257223}_00_29384.sqlaudit possvel utilizar a opo audit QUEUE_DELAY para implementar a auditora assncrona por razes de desempenho e a opo ON_FAILURE determina as aes a serem realizadas caso a informao de auditoria no possa ser gravada no destino. No exemplo mostrado anteriormente HIPAA_AppLog_Audit, a opo ON_FAILURE est configurada para desligar a instncia do SQL Server caso o log no possa ser gravado, nesse caso, o usurio que executar a instruo CREATE SERVER AUDIT necessita possuir permisso de SHUTDOWN. Aps a criao do objeto Audit, possvel adicionar eventos com o uso das instrues CREATE SERVER AUDIT SPECIFICATION e CREATE DATABASE AUDIT SPECIFICATION. A instruo CREATE SERVER AUDIT SPECIFICATION adiciona grupos de aes de nvel de servidor (isto , conjuntos de aes relacionadas pr-definidos que podem ocorrer ao nvel de servidor) a um Audit. Por exemplo, o cdigo a seguir adiciona o grupo de ao FAILED_LOGIN_GROUP (o qual registra tentativas mal sucedidas de logon) ao Audit HIPAA_File_Audit. CREATE SERVER AUDIT SPECIFICATION Failed_Login_Spec FOR SERVER AUDIT HIPAA_File_Audit ADD (FAILED_LOGIN_GROUP); A instruo CREATE DATABASE AUDIT SPECIFICATION adiciona grupos de ao de nvel de banco de dados e eventos individuais do banco de dados ao Audit. A adio de aes individuais habilita a filtragem das aes baseadas no log, nos objetos e usurios envolvidos na ao. Por exemplo, o exemplo de cdigo a seguir adiciona o grupo de ao DATABASE_OBJECT_CHANGE_GROUP (o qual registra todas as operaes CREATE, ALTER ou DROP do banco de dados), bem como todas as instrues INSERT, UPDATE, or DELETE desempenhadas em objetos no esquema Sales pelos usurios SalesUser ou SalesAdmin ao Audit HIPAA_AppLog_Audit. CREATE DATABASE AUDIT SPECIFICATION Sales_Audit_Spec FOR SERVER AUDIT HIPAA_AppLog_Audit ADD (DATABASE_OBJECT_CHANGE_GROUP), ADD (INSERT, UPDATE, DELETE ON Schema::Sales BY SalesUser, SalesAdmin); O objeto Audit fornece uma estrutura de auditoria gerencivel, a qual facilita a definio de eventos que devem ser registrados em log (logged) e de locais onde o log deve ser armazenado. Esse acrscimo ao SQL Server ajuda na implementao de uma soluo de auditoria abrangente para proteger seu banco de dados, bem como atende aos requisitos de conformidade as normas.

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

27

Gatilhos DDL
Os gatilhos DDL foram introduzidos no SQL Server 2005. Ao contrrio dos gatilhos DML, que executam o cdigo Transact-SQL quando os dados de uma tabela modificam, o gatilho DDL dispara quando a estrutura da tabela muda. Essa uma excelente maneira de acompanhar e realizar a auditoria das alteraes estruturais ocorridas com o esquema de banco de dados. A sintaxe para esses gatilhos semelhante quela dos gatilhos DML. Os DDL so gatilhos AFTER que disparam em resposta a eventos de linguagem DDL e no em resposta a procedimentos armazenados, os quais desempenham operaes parecidas com DDL. Esses so totalmente transacionais, de modo que possvel ROLLBACK (efetuar a reverso de) uma alterao DDL. possvel executar tanto o cdigo Transact-SQL quanto o CRL em um gatilho DDL. Os gatilhos DDL tambm suportam a clusula EXECUTE AS, semelhante a outros mdulos. O SQL Server fornece informaes sobre o evento de disparo como XML no digitado. Isso est disponvel atravs da nova funo interna, emissora de XML, chamada EVENTDATA(). possvel utilizar as expresses XQuery para analisar o EVENTDATA() XML a fim de descobrir atributos de evento, tais como: nome de esquema, nome de objeto de destino, assim como a instruo completa Transact-SQL DDL que ocasionou o disparo do gatilho originalmente. Para a obteno de exemplos, veja o EVENTDATA (Transact-SQL) nos SQL Server Books Online. Os gatilhos DDL de nvel de banco de dados disparam em eventos de linguagem DDL no nvel de banco de dados e inferior. Alguns exemplos so CREATE_TABLE, ALTER_USER, e assim por diante. Os gatilhos DDL de nvel de servidor disparam em eventos de linguagem DDL ao nvel do servidor, como por exemplo: CREATE_DATABASE, ALTER_LOGIN, etc. Como uma convenincia administrativa, possvel utilizar grupos de evento como este DDL_TABLE_EVENTS como abreviaes para se referir a todos os eventos CREATE_TABLE, ALTER_TABLE, and DROP_TABLE. Os diversos grupos de evento DDL e tipos de evento, bem como o XML EVENTDATA() a eles associado, esto documentados nos SQL Server Books Online. Ao contrrio dos nomes de gatilho DML, os quais tm escopo de esquema (schemascoped), os nomes de gatilho DDL tm escopo de banco de dados ou servidor. Utilize esse novo modo de exibio de catlogo para descobrir metadados de gatilho (trigger metadata) para os gatilhos DML e para os gatilhos DDL de nvel de base de dados. SELECT * FROM sys.triggers ; GO Se a coluna parent_class_desc possui um valor de 'DATABASE', ento esta consiste em um gatilho DDL e o nome est no escopo do prprio banco de dados (is scoped by). O corpo do gatilho Transact-SQL encontrado no modo de exibio de catlogo sys.sql_modules , sendo que possvel JOIN (UNIR) o corpo ao sys.triggers na coluna object_id. Os metadados sobre o gatilho CRL so encontrados no modo de exibio de catlogo sys.assembly_modules e, outra vez, possvel JOIN (UNIR) os metadados ao sys.triggers na coluna object_id. Utilize este modo de exibio de catlogo para descobrir metadados para os gatilhos DDL de nvel de servidor: SELECT * FROM sys.server_triggers ;
Microsoft Corporation 2007

Viso Geral de Segurana do SQL Server 2008 para Administradores de Bancos de Dados

28

GO O corpo do gatilho de nvel de servidor Transact-SQL encontrado no modo de exibio de catlogo sys.server_sql_modules, sendo que possvel JOIN (UNIR) o corpo ao sys.server_triggers na coluna object_id. Os metadados sobre o gatilho CRL de nvel de servidor so encontrados no modo de exibio de catlogo sys.server_assembly_modules, e, outra vez, possvel JOIN (UNIR) os metadados ao sys.server_triggers na coluna object_id. possvel utilizar os gatilhos DDL na captura, bem como na auditoria de atividades DDL no banco de dados. Alm do uso para: criar uma tabela de auditoria com uma coluna XML no digitada e criar um gatilho EXECUTE AS SELF DDL para os eventos DDL ou grupos de eventos nos quais voc estiver interessado. O corpo do gatilho DDL pode simplesmente INSERT o EVENTDATA() XML na tabela de auditoria. Outra utilidade interessante para os gatilhos DDL consiste em disparar no evento CREATE_USER e, em seguida, adicionar o cdigo ao gerenciamento automtico de permisses. Por exemplo, suponhamos que voc queira que todos os usurios do banco de dados obtenham o GRANT EXECUTE nos procedimentos P1, P2 e P3. O gatilho DDL pode extrair o nome de usurio do EVENTDATA() XML, formular de maneira dinmica uma instruo do tipo 'GRANT EXECUTE ON P1 TO someuser' e, em seguida, EXEC() it.

Concluso
O SQL Server 2008 fornece valiosos recursos de segurana para a proteo de dados e recursos de rede. Este programa bem mais fcil de instalar de maneira segura, j que todos os recursos, excesso daqueles essenciais, no esto instalados por padro ou se estiverem, se encontram desabilitados. O SQL Server fornece inmeras ferramentas para a configurao do servidor, especialmente o SQL Server Surface Area Configuration Tool (Ferramenta de Configurao de rea de Superfcie do SQL Server). Alm disso, os recursos de autenticao so mais fortes porque o SQL Server se integra a autenticao do Windows de maneira mais precisa e protege contra as senhas fracas e antigas. Conceder e controlar o que o usurio pode fazer quando est autenticado tornaram-se aes mais flexveis devido s permisses granulares, aos proxies do SQL Server Agent e ao contexto de execuo. At mesmo os metadados so mais seguros, visto que os modos de exibio de metadados do sistema retornam somente informaes sobre os objetos que os usurios possuem permisso de uso de alguma forma. Ao nvel do banco de dados, a criptografia fornece a camada final de proteo medida que a separao entre usurios e esquemas torna mais fcil o gerenciamento de usurios. Para mais informaes, visite: http://www.microsoft.com/brasil/sql http://www.microsoft.com/brasil/servidores/sql/technologies/security/default.mspx

Microsoft Corporation 2007

SQL Server 2008 Security Overview for Database Administrators

29

Este white paper foi til? Envie-nos seu comentrio. Informe, em uma escala de 1 (insatisfatrio) a 5 (excelente), como voc classificaria este white paper e por que voc usou essa classificao. Por exemplo: Voc deu uma nota alta porque ele tem bons exemplos, capturas de tela excelentes, uma redao clara ou outra razo? Voc deu uma nota baixa devido aos exemplos insatisfatrios, s capturas de tela difusas ou redao confusa? Esses comentrios nos ajudaro a melhorar a qualidade dos white papers que lanamos. Enviar comentrio.

Microsoft Corporation 2007

Вам также может понравиться