Usuários de bancos de dados independentes - Tornando seu banco de dados portátil
Use usuários de banco de dados independentes para autenticar conexões SQL Server e Banco de Dados SQL no nível do banco de dados. Um banco de dados independente é um banco de dados isolado de outros bancos de dados e da instância de SQL Server/Banco de Dados SQL (e do banco de dados master) que hospeda o banco de dados. SQL Server dá suporte a usuários de bancos de dados independentes para autenticação do SQL Server e Windows. Ao usar Banco de Dados SQL, combine usuários do banco de dados com regras de firewall de nível de banco de dados. Este tópico revisa as diferenças e os benefícios de usar o modelo de banco de dados independente em comparação com o modelo de logon/usuário tradicional e Windows ou as regras de firewall em nível de servidor. Cenários específicos, lógica de negócios do aplicativo ou a capacidade de gerenciamento ainda podem exigir o uso do modelo tradicional de logon/usuário e regras de firewall em nível de servidor.
Observação
Conforme Microsoft causa a evolução do serviço Banco de Dados SQL e move-o para maiores SLAs garantidos, você talvez precise alternar para o modelo de usuário de banco de dados independente e regras de firewall no escopo do banco de dados para obter o SLA de disponibilidade superior, e taxas mais altas de logon máximo para um determinado banco de dados. Microsoft Incentivamos você a considerar essas alterações hoje mesmo.
Modelo de usuário e logon tradicional
No modelo de conexão tradicional, usuários do Windows ou membros de grupos do Windows se conectem ao Mecanismo de Banco de Dados fornecendo credenciais de usuário ou grupo autenticadas pelo Windows. Ou a conexão fornece um nome e uma senha e se conecta usando SQL Server autenticação (que é a única opção ao se conectar a Banco de Dados SQL). Em ambos os casos, o banco de dados mestre deve ter um logon que corresponde às credenciais de conexão. Depois que o Mecanismo de Banco de Dados confirmar as credenciais de autenticação do Windows ou autenticar as credenciais de autenticação do SQL Server , a conexão normalmente tenta se conectar a um banco de dados do usuário. Para se conectar a um banco de dados do usuário, o logon deve ser capaz de ser mapeado para (ou seja, associado) um usuário de banco de dados no banco de dados do usuário. A cadeia de conexão também pode especificar a conexão com um banco de dados específico que é opcional em SQL Server mas obrigatório em Banco de Dados SQL.
A entidade de segurança importante é que o logon (no banco de dados mestre) e o usuário (no banco de dados do usuário) devem existir e estar relacionados entre si. Isso significa que a conexão com o banco de dados do usuário tem uma dependência no momento do logon no banco de dados mestre, e isso limita a capacidade do banco de dados de ser movido para um host SQL Server diferente ou servidor Banco de Dados SQL do Azure . E se, por algum motivo, uma conexão com o banco de dados mestre não estiver disponível (por exemplo, um failover estiver em andamento), o tempo geral de conexão aumenta ou a conexão pode atingir o tempo limite. Consequentemente, isso pode reduzir escalabilidade da conexão.
Modelo de usuário de banco de dados independente
O logon no banco de dados mestre não está presente no modelo de usuário de banco de dados independente. Em vez disso, o processo de autenticação ocorre no banco de dados do usuário e o usuário no banco de dados não tem um logon associado no banco de dados mestre. O modelo de usuário de banco de dados independente dá suporte à autenticação de autenticação do Windows (em SQL Server) e SQL Server (em SQL Server e Banco de Dados SQL). Para se conectar como um usuário de banco de dados independente, a cadeia de conexão sempre deve conter um parâmetro para o banco de dados do usuário para que o Mecanismo de Banco de Dados saiba qual banco de dados é responsável por gerenciar o processo de autenticação. A atividade do usuário de banco de dados independente está limitada ao banco de dados responsável pela autenticação. Portanto, ao se conectar como um usuário de banco de dados independente, a conta de usuário do banco de dados deve ser criada independentemente em cada banco de dados de que o usuário precisará. Para alterar os bancos de dados, os usuários Banco de Dados SQL devem criar uma nova conexão. Os usuários de bancos de dados independentes no SQL Server poderão alterar bancos de dados se um usuário idêntico estiver presente em outro banco de dados.
Para Banco de Dados SQL, nenhuma alteração é necessária para a cadeia de conexão ao alternar do modelo tradicional para o modelo de usuário do banco de dados independente. Para conexões do SQL Server , o nome do banco de dados deve ser adicionado à cadeia de conexão se não ainda estiver presente.
Importante
Ao usar o modelo tradicional, as funções de nível de servidor e permissões de nível de servidor podem limitar o acesso a todos os bancos de dados. Ao usar o modelo de banco de dados independente, os proprietários e os usuários do banco de dados a permissão ALTER ANY USER podem conceder acesso ao banco de dados. Isso reduz o controle de acesso dos logons do servidor com privilégios altos e expande o controle de acesso para incluir os usuários do banco de dados com privilégios altos.
Firewalls
SQL Server
Regras de firewall do Windows se aplicam a todas as conexões e têm os mesmos efeitos sobre logons (conexões de modelo tradicional) e usuários de bancos de dados independentes. Para obter mais informações sobre o firewall do Windows, veja Configurar um Firewall do Windows para acesso ao Mecanismo de Banco de Dados.
Banco de Dados SQL Firewalls
Banco de Dados SQL permite regras de firewall separadas para conexões (logons) em nível de servidor e para conexões de nível de banco de dados (usuários de bancos de dados independentes). Ao se conectar a um banco de dados do usuário, primeiramente as regras de firewall do banco de dados são verificadas. Se não houver nenhuma regra que permita o acesso ao banco de dados, as regras de firewall em nível de servidor serão verificadas, o que requer acesso ao banco de dados mestre do servidor lógico. Regras de firewall em nível de banco de dados combinadas a usuários de banco de dados independente podem eliminar a necessidade de acessar o banco de dados mestre do servidor durante a conexão, resultando assim em uma melhor escalabilidade de conexão.
Para obter mais informações sobre as regras de firewall do Banco de Dados SQL , veja os seguintes tópicos:
Diferenças de sintaxe
Modelo tradicional | Modelo de usuário de banco de dados independente |
---|---|
Quando conectado ao banco de dados mestre:CREATE LOGIN login_name WITH PASSWORD = 'strong_password'; Em seguida, quando conectado a um banco de dados do usuário: CREATE USER 'user_name' FOR LOGIN 'login_name'; |
Quando conectado a um banco de dados do usuário:CREATE USER user_name WITH PASSWORD = 'strong_password'; |
Modelo tradicional | Modelo de usuário de banco de dados independente |
---|---|
Para alterar a senha no contexto do banco de dados mestre:ALTER LOGIN login_name WITH PASSWORD = 'strong_password'; |
Para alterar a senha no contexto do banco de dados do usuário:ALTER USER user_name WITH PASSWORD = 'strong_password'; |
Comentários
No SQL Server, usuários de bancos de dados independentes devem estar habilitados para a instância do SQL Server. Para obter mais informações, veja Opção contained database authentication de configuração de servidor.
Os usuários do banco de dados independente e logons com nomes não sobrepostas podem coexistir em seus aplicativos.
Se houver um logon no banco de dados mestre com nome name1 e você criar um usuário de banco de dados independente denominado name1, quando um nome de banco de dados for fornecido para a cadeia de conexão, o contexto do usuário de banco de dados será escolhido de acordo com o contexto de logon ao se conectar ao banco de dados. Ou seja, os usuários do banco de dados independente têm precedência sobre logons com o mesmo nome.
No Banco de Dados SQL , o nome de usuário de banco de dados independente não pode ser igual ao nome da conta de administrador de servidor.
A conta de administrador do servidor Banco de Dados SQL nunca pode ser um usuário de banco de dados independente. O administrador do servidor tem permissões suficientes para criar e gerenciar usuários de banco de dados independente. O administrador do servidor pode conceder permissões a usuários de banco de dados independente em bancos de dados do usuário.
Uma vez que os usuários de banco de dados independente são entidades de nível de banco de dados, você precisa criar usuários de banco de dados independente em todos os bancos de dados em que eles forem ser usados. A identidade está restrita ao banco de dados e é independente, em todos os aspectos, de um usuário com o mesmo nome e a mesma senha em outro banco de dados, no mesmo servidor.
Use senhas com a mesma força que normalmente usaria para logons.
Consulte Também
Bancos de dados independentes
Práticas recomendadas de segurança com bancos de dados independentes
CREATE USER (Transact-SQL)