Diferença entre um usuário e um logon no SQL Server


178

Recentemente, estive executando em muitas áreas diferentes do SQL Server que normalmente não mexo. Um deles que me confundiu é a área de Logins e Usuários. Parece que deve ser um tópico bastante simples ...

Parece que cada login pode ter apenas 1 usuário e cada usuário pode ter apenas 1 login.

Um login pode ser associado a várias tabelas, associando esse usuário a várias tabelas.

Então, minha pergunta é por que ainda tem um login e um usuário? eles parecem ser praticamente o mesmo. Quais são as diferenças ou o que pareço estar perdendo?

Respostas:


202

Um "Login" concede a entrada principal no SERVIDOR.

Um "Usuário" concede uma entrada de login em um único DATABASE.

Um "Login" pode ser associado a muitos usuários (um por banco de dados).

Cada um dos objetos acima pode ter permissões concedidas a ele em seu próprio nível. Consulte os seguintes artigos para obter uma explicação de cada


7
Ah, não é de admirar que eu não tenha achado a diferença. Eu estava simplesmente trabalhando com 1 banco de dados. obrigado.
Corymathews

3
Essa resposta é fundamentalmente correta, mas, pelo que entendi, um usuário específico pode realmente ter acesso a mais de um banco de dados disponível nesse servidor específico. Portanto, o login para o usuário é um mapeamento de 1 para 1, mas o usuário para o banco de dados é um mapeamento de 1 para muitos.
Andrew patê

1
@coreymathews: Menos tempo em "Boy Meets World" e mais tempo nos livros! ;).
MSIS

Mas agora o MSDN recomenda um tipo de usuário "Usuários autenticados no banco de dados" (recomendado para ajudar a tornar seu banco de dados mais portátil). Link: docs.microsoft.com/en-us/sql/t-sql/statements/… Isso é melhor que o tipo de usuário tradicional?
Sheen

32

Um motivo para ter ambos é para que a autenticação possa ser feita pelo servidor do banco de dados, mas a autorização pode ter um escopo definido no banco de dados. Dessa forma, se você mover seu banco de dados para outro servidor, sempre poderá remapear o relacionamento de login do usuário no servidor de banco de dados, mas seu banco de dados não precisará ser alterado.


Você pode por favor elaborar? Qual é a vantagem da alteração que está sendo feita no servidor de banco de dados e não no banco de dados?
heyjude

Digamos que você queira fazer backup e restaurar um banco de dados. A restauração geralmente é feita em um novo servidor. Talvez você não queira fazer alterações em um banco de dados em uma restauração.
Tom Resing

Por que não fazer a alteração apenas após a restauração do banco de dados?
heyjude

1
Há um bom vídeo de 60 segundos sobre o tópico no SQLAuthority para obter mais informações blog.sqlauthority.com/2014/07/16/…
Tom Resing 27/12/16

1
@HeyJude Significa que o servidor está preocupado com a autenticação, algo que o banco de dados teria que fazer se não fosse o login e a separação do usuário.
Zaid Khan

25

Eu acho que há uma publicação realmente boa no blog do MSDN sobre esse tópico por Laurentiu Cristofor:

A primeira coisa importante que precisa ser entendida sobre a segurança do SQL Server é que existem dois domínios de segurança envolvidos - o servidor e o banco de dados. O domínio do servidor abrange vários domínios do banco de dados. Todo o trabalho é feito no contexto de algum banco de dados, mas para fazer o trabalho, é preciso primeiro ter acesso ao servidor e depois ter acesso ao banco de dados.

O acesso ao servidor é concedido via logins. Existem duas categorias principais de logins: logons autenticados do SQL Server e logons autenticados do Windows. Normalmente, eu me referirei a eles usando os nomes mais curtos de logons SQL e logons do Windows. Os logins autenticados do Windows podem ser mapeados para usuários do Windows ou mapeados para grupos do Windows. Portanto, para poder se conectar ao servidor, é necessário ter acesso por meio de um desses tipos ou logins - os logins fornecem acesso ao domínio do servidor.

Mas os logins não são suficientes, porque o trabalho geralmente é feito em um banco de dados e os bancos de dados são regiões separadas. O acesso aos bancos de dados é concedido pelos usuários.

Os usuários são mapeados para logins e o mapeamento é expresso pela propriedade SID de logins e usuários. Um logon é mapeado para um usuário em um banco de dados se seus valores de SID forem idênticos. Dependendo do tipo de login, podemos, portanto, ter uma categorização de usuários que imita a categorização acima para logins; portanto, temos usuários de SQL e usuários do Windows e a última categoria consiste em usuários mapeados para logons de usuários do Windows e usuários mapeados para logins de grupos do Windows.

Vamos dar um passo atrás para uma rápida visão geral: um login fornece acesso ao servidor e, para obter acesso adicional a um banco de dados, um usuário mapeado para o login deve existir no banco de dados.

esse é o link para o post completo.


Esta publicação do blog foi removida :(
Steven Schlansker 14/10/19

23

Em resumo,

Os logins terão acesso ao servidor.

e

Os usuários terão acesso ao banco de dados.


6

Eu acho que essa é uma pergunta muito útil com boa resposta. Apenas para adicionar meus dois centavos na página Criar um Login do MSDN :

Um login é uma entidade de segurança ou uma entidade que pode ser autenticada por um sistema seguro. Os usuários precisam de um logon para se conectar ao SQL Server. Você pode criar um logon com base no principal do Windows (como um usuário do domínio ou um grupo de domínio do Windows) ou criar um logon que não seja baseado no principal do Windows (como um logon do SQL Server).

Nota:
Para usar a autenticação do SQL Server, o Mecanismo de Banco de Dados deve usar a autenticação em modo misto. Para mais informações, consulte Escolha um modo de autenticação.

Como principal de segurança, as permissões podem ser concedidas para logins. O escopo de um login é todo o Mecanismo de Banco de Dados. Para se conectar a um banco de dados específico na instância do SQL Server, um logon deve ser mapeado para um usuário do banco de dados. Permissões dentro do banco de dados são concedidas e negadas ao usuário do banco de dados, não ao logon. Permissões com o escopo de toda a instância do SQL Server (por exemplo, a permissão CREATE ENDPOINT) podem ser concedidas a um logon.


3
É um pouco mais claro se você colocar um >no início de cada parágrafo na citação, para que seja formatado como uma citação.
Sam

2
Isso foi muito útil. Embora eu tenha configurado os usuários e os logins corretamente, o sistema não foi configurado para permitir a autenticação de logon do SQL Server. Por que eu poderia criar logons do SQL Server quando o servidor não permite que eles entrem está além de mim!
Mark Ireland

Fiquei perplexo com isso também. se o servidor atualmente não estiver no modo misto, eu esperaria que o servidor apenas emitisse um erro ao tentar criar um logon de autenticação do SQL, isso permitiria ao usuário uma pista indicando que eles deveriam primeiro ativar a autenticação no modo misto.
Arunsun

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.