Exportar (0) Imprimir
Expandir Tudo

Diretrizes e limitações de segurança do Banco de Dados do SQL Azure

Atualizado: fevereiro de 2014

Este tópico descreve as diretrizes e limitações do Microsoft Banco de dados SQL do Microsoft Azure relacionadas à segurança. Considere estes pontos ao gerenciar a segurança de seu Banco de dados SQL do Azure:

O serviço Banco de dados SQL do Microsoft Azure está disponível somente pela porta TCP 1433. Para acessar um Banco de dados SQL do Azure em seu computador, verifique se o firewall permite a comunicação TCP de saída na porta TCP 1433.

Antes de poder conectar-se ao servidor do Banco de dados SQL do Azure pela primeira vez, é preciso usar o Portal de Gerenciamento da Plataforma Windows Azure para configurar o firewall do Banco de dados SQL do Azure. Você deverá criar uma configuração de firewall no nível de servidor que permite tentativas de conexão do seu computador ou do Windows Azure com o servidor do Banco de dados SQL do Azure. Além disso, se você desejar controlar o acesso a determinados bancos de dados no seu servidor do Banco de dados SQL do Azure, crie regras de firewall no nível de banco de dados para os respectivos bancos de dados. Para obter mais informações, consulte Firewall do Banco de dados SQL do Azure.

Todas as comunicações entre o Banco de dados SQL do Microsoft Azure e seu aplicativo sempre exigem a criptografia (SSL). Se seu aplicativo cliente não validar os certificados durante a conexão, sua conexão com o Banco de dados SQL do Microsoft Azure ficará suscetível a ataques "intermediários". 

Para validar certificados com código ou ferramentas do aplicativo, solicita explicitamente uma conexão criptografada e não confie nos certificados do servidor. Se o código ou as ferramentas do aplicativo não exigirem conexão criptografada, eles ainda receberão conexões criptografadas. Entretanto, eles não poderão validar os certificados do servidor e, portanto, ficarão suscetíveis a ataques "intermediários".

Para validar certificados com o código do aplicativo ADO.NET, defina Encrypt=True e TrustServerCertificate=False na cadeia de conexão do banco de dados. Para obter mais informações, consulte Como: conectar-se ao Banco de Dados SQL do Azure usando o ADO.NET.

O SQL Server Management Studio também oferece suporte à validação de certificado. Na caixa de diálogo Conectar ao Servidor, clique em Criptografar conexão na guia Propriedades da Conexão

noteObservação
O SQL Server Management Studio não oferece suporte ao Banco de dados SQL do Microsoft Azure em versões anteriores ao SQL Server 2008 R2.

Embora o SQLCMD oferecesse suporte ao Banco de dados SQL do Microsoft Azure a partir do SQL Server 2008, ele não oferece suporte à validação de certificado em versões anteriores ao SQL Server 2008 R2. Para validar certificados com SQLCMD a partir do SQL Server 2008 R2, use a opção de linha de comando -N e não use a opção -C. Usando a opção -N, o SQLCMD exige uma conexão criptografada. Sem usar a opção -C, o SQLCMD não confia implicitamente no certificado do servidor e é forçado a validar o certificado.

Para obter mais informações técnicas, consulte o artigo Segurança de conexão no Banco de dados SQL do Windows Azure no site do TechNet Wiki.

O Banco de dados SQL do Microsoft Azure oferece suporte somente à Autenticação do SQL Server. Não há suporte para a Autenticação do Windows (segurança integrada). Os usuários deverão fornecer credenciais (logon e senha) sempre que se conectarem ao Banco de dados SQL do Microsoft Azure. Para obter mais informações sobre a Autenticação do SQL Server, consulte Escolhendo um modo de autenticação nos Manuais Online do SQL Server.

Por motivos de desempenho, quando uma senha é redefinida no Banco de dados SQL do Microsoft Azure, a conexão não é autenticada novamente, mesmo se a conexão for redefinida devido ao pooling de conexão. Isso é diferente do comportamento do SQL Server local. Se a senha foi alterada, a solicitação falhará e a sessão será desconectada (encerrada). Para se autenticar usando a nova senha, use o comando KILL para terminar a sessão e se reconectar. Para obter mais informações sobre o comando Kill, consulte KILL (Banco de dados SQL do Azure).

Existem restrições ao gerenciar logons e usuários no Banco de dados SQL do Microsoft Azure.

  • Para o logon da entidade de segurança no nível de servidor, as seguintes restrições se aplicam:

    • O usuário de banco de dados no banco de dados master correspondente ao logon da entidade de segurança no nível de servidor não pode ser alterado nem removido.

    • Embora o logon da entidade de segurança no nível do servidor não seja membro das funções de banco de dados dbmanager e loginmanager no banco de dados master, ele tem todas as permissões concedidas a essas duas funções.

noteObservação
Esse logon é criado durante o provisionamento do servidor e é semelhante ao logon de sa em uma instância do SQL Server. Para obter mais informações sobre o provisionamento do servidor, consulte Server Provisioning Model (SQL Data Services).

Para todos os logons, as seguintes restrições se aplicam:

  • O idioma padrão é inglês (EUA).

  • Para acessar o banco de dados master, cada logon deve ser mapeado para uma conta de usuário no banco de dados master.

  • Se você não especificar um banco de dados na cadeia de conexão, será conectado ao banco de dados master por padrão.

  • Você deve estar conectado ao banco de dados master para executar as instruções CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP DATABASE.

  • Na execução das instruções CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP DATABASE em um aplicativo ADO.NET, o uso de comandos parametrizados não é permitido. Para obter mais informações, consulte Comandos e parâmetros (ADO.NET).

  • Na execução das instruções CREATE/ALTER/DROP DATABASE e CREATE/ALTER/DROP LOGIN, cada uma dessas instruções deve ser a única instrução em um lote Transact-SQL. Caso contrário, ocorrerá um erro. Por exemplo, o Transact-SQL a seguir verifica se o banco de dados existe. Se existir, uma instrução DROP DATABASE será chamada para remover o banco de dados. Como a instrução DROP DATABASE não é a única instrução no lote, executar este Transact-SQL resultará em erro.

IF EXISTS (SELECT [name]
           FROM   [sys].[databases]
           WHERE  [name] = N'database_name')
     DROP DATABASE [database_name];
go
  • Na execução da instrução CREATE USER com a opção FOR/FROM LOGIN, ela deve ser a única instrução no lote Transact-SQL.

  • Na execução da instrução ALTER USER com a opção WITH LOGIN, ela deve ser a única instrução em um lote Transact-SQL.

  • Somente o logon da entidade de segurança no nível do servidor e os membros da função de banco de dados dbmanager no banco de dados master têm permissão para executar as instruções CREATE DATABASE e DROP DATABASE.

  • Somente o logon da entidade de segurança no nível do servidor e os membros da função de banco de dados loginmanager no banco de dados master têm permissão para executar as instruções CREATE LOGIN e ALTER LOGIN e DROP LOGIN.

  • Quando o proprietário de uma função de banco de dados tentar adicionar/remover outro usuário de banco de dados de/a essa função de banco de dados, o seguinte erro poderá ocorrer: User or role 'Name' does not exist in this database. Esse erro ocorre porque o usuário não é visível ao proprietário. Para resolver esse problema, conceda ao proprietário da função a permissão VIEW DEFINITION no usuário.

Considere estes pontos para tornar seus aplicativos do Banco de dados SQL do Azure menos vulneráveis a ameaças de segurança:

  • Use sempre as atualizações mais recentes: quando for conectar-se ao Banco de dados SQL do Azure, use sempre a versão mais recente de ferramentas e bibliotecas para evitar vulnerabilidades à segurança. Para obter mais informações sobre as ferramentas e bibliotecas com suporte, consulte Diretrizes e limitações gerais do Banco de dados do SQL Azure.

  • Bloqueie as conexões de entrada na porta TCP 1433: somente as conexões de saída na porta TCP 1433 são necessárias para os aplicativos se comunicarem com o Banco de dados SQL do Microsoft Azure. Se as comunicações de entrada não forem necessárias em outros aplicativos desse computador, certifique-se de que o firewall continue a bloquear conexões de entrada na porta TCP 1433.

  • Evite vulnerabilidades de injeção: para garantir que seus aplicativos não tenham vulnerabilidades de injeção SQL, use consultas parametrizadas onde possível. Além disso, revise o código completamente e execute um teste de penetração antes de implantar seu aplicativo.

Consulte também

Mostrar:
© 2014 Microsoft