SQL Server에서 사용자와 로그인의 차이점


178

나는 최근에 일반적으로 엉망이 아닌 SQL Server의 여러 영역을 실행하고 있습니다. 나를 혼란스럽게 한 것 중 하나는 로그인 및 사용자 영역입니다. 꽤 간단한 주제 인 것 같습니다 ...

각 로그인은 1 명의 사용자 만 가질 수 있고 각 사용자는 1 개의 로그인 만 가질 수 있습니다.

로그인은 여러 테이블에 연결되어 해당 사용자를 여러 테이블에 연결할 수 있습니다.

그래서 제 질문은 왜 로그인과 사용자가 있습니까? 그들은 거의 같은 것 같습니다. 차이점은 무엇입니까, 또는 내가없는 것 같은 것은 무엇입니까?

답변:


202

"로그인"은 서버에 주요 항목을 부여합니다.

"사용자"는 단일 DATABASE에 로그인 항목을 부여합니다.

하나의 "로그인"은 많은 사용자 (데이터베이스 당 하나)와 연관 될 수 있습니다.

위의 각 개체에는 자체 수준에서 권한이 부여 될 수 있습니다. 각각에 대한 설명은 다음 기사를 참조하십시오


7
아아, 내가 차이를 찾을 수 없었을 것입니다. 나는 단순히 1 개의 데이터베이스로 작업하고있었습니다. 감사.
corymathews

3
이 대답은 근본적으로 정확하지만 특정 사용자에게는 실제로 해당 특정 서버에서 사용 가능한 둘 이상의 데이터베이스에 대한 액세스 권한이 부여 될 수 있습니다. 따라서 로그인 대 사용자는 일대일 매핑이지만 사용자 대 데이터베이스는 일대 다 매핑입니다.
앤드류 페이트

1
@coreymathews : "소년이 세상을 만난다"는 시간이 줄어들고 책에 더 많은 시간이 걸립니다! ;).
MSIS

그러나 이제 MSDN에서는 "데이터베이스에서 인증하는 사용자"유형의 사용자를 권장합니다 (데이터베이스를보다 이식 가능하게 만드는 데 권장). 링크 : docs.microsoft.com/en-us/sql/t-sql/statements/… 기존 사용자 유형보다 낫습니까?
Sheen

32

데이터베이스 서버에서 인증을 수행 할 수 있지만 데이터베이스에 대한 권한 범위를 지정할 수 있기 때문에 둘 다 갖는 이유 중 하나입니다. 이렇게하면 데이터베이스를 다른 서버로 이동하면 데이터베이스 서버에서 사용자-로그인 관계를 항상 다시 매핑 할 수 있지만 데이터베이스를 변경할 필요는 없습니다.


자세히 설명해 주시겠습니까? 데이터베이스가 아닌 데이터베이스 서버에서 변경의 이점은 무엇입니까?
HeyJude

데이터베이스를 백업하고 복원한다고 가정하십시오. 복원은 종종 새 서버에서 수행됩니다. 복원시 데이터베이스를 변경하지 않아도됩니다.
Tom Resing

데이터베이스가 복원 된 후 변경 사항을 수행하는 이유는 무엇입니까?
HeyJude

1
더 자세한 정보에 대한 SQLAuthority의 주제에 대한 좋은 60초 비디오있다 blog.sqlauthority.com/2014/07/16/...는
톰 Resing

1
@HeyJude 서버가 인증과 관련되어 있다는 의미는 로그인 및 사용자 분리를 위해 데이터베이스가 수행해야 할 작업입니다.
Zaid Khan

25

Laurentiu Cristofor의이 주제에 관한 정말 좋은 MSDN 블로그 게시물 이 있다고 생각합니다 .

SQL Server 보안에 대해 이해해야 할 첫 번째 중요한 것은 서버와 데이터베이스라는 두 가지 보안 영역이 있다는 것입니다. 서버 영역에는 여러 데이터베이스 영역이 포함됩니다. 모든 작업은 일부 데이터베이스의 컨텍스트에서 수행되지만 작업을 수행하려면 먼저 서버에 액세스 한 다음 데이터베이스에 액세스해야합니다.

서버에 대한 액세스는 로그인을 통해 부여됩니다. 로그인의 주요 범주는 SQL Server 인증 로그인과 Windows 인증 로그인의 두 가지입니다. 나는 보통 짧은 이름의 SQL 로그인과 Windows 로그인을 사용하여 이것을 언급 할 것이다. Windows 인증 로그인은 Windows 사용자에게 매핑 된 로그인이거나 Windows 그룹에 매핑 된 로그인 일 수 있습니다. 따라서 서버에 연결하려면 이러한 유형 또는 로그인 중 하나를 통해 액세스해야합니다. 로그인은 서버 영역에 대한 액세스를 제공합니다.

그러나 작업은 일반적으로 데이터베이스에서 수행되고 데이터베이스는 별도의 영역이기 때문에 로그인으로는 충분하지 않습니다. 데이터베이스에 대한 액세스는 사용자를 통해 부여됩니다.

사용자는 로그인에 맵핑되며 맵핑은 로그인 및 사용자의 SID 특성으로 표시됩니다. SID 값이 동일한 경우 로그인은 데이터베이스의 사용자에게 매핑됩니다. 따라서 로그인 유형에 따라 위의 로그인 분류를 모방 한 사용자를 분류 할 수 있습니다. 따라서 우리는 SQL 사용자와 Windows 사용자를 가지고 있으며 후자는 Windows 사용자 로그인에 매핑 된 사용자와 Windows 그룹 로그인에 매핑 된 사용자로 구성됩니다.

로그인 을 통해 서버에 액세스하고 데이터베이스에 더 액세스 하려면 로그인에 매핑 된 사용자가 데이터베이스에 있어야합니다.

그것이 전체 게시물에 대한 링크 입니다.


이 블로그 게시물은 게시 중단되었습니다 :(
Steven Schlansker

23

요컨대,

로그인 하면 서버에 액세스 할 수 있습니다.

사용자 는 데이터베이스에 액세스 할 수 있습니다.


6

나는 이것이 좋은 대답을 가진 매우 유용한 질문이라고 생각합니다. MSDN 에서 로그인을 생성 하려면 로그인 페이지를 작성 하십시오.

로그인은 보안 사용자 또는 보안 시스템에 의해 인증 될 수있는 엔티티입니다. SQL Server에 연결하려면 로그인이 필요합니다. Windows 사용자 (예 : 도메인 사용자 또는 Windows 도메인 그룹)를 기반으로 로그인을 만들거나 Windows 주체를 기반으로하지 않는 로그인 (예 : SQL Server 로그인)을 만들 수 있습니다.

참고 :
SQL Server 인증을 사용하려면 데이터베이스 엔진이 혼합 모드 인증을 사용해야합니다. 자세한 내용은 인증 모드 선택을 참조하십시오.

보안 주체로서 로그인 권한을 부여 할 수 있습니다. 로그인 범위는 전체 데이터베이스 엔진입니다. SQL Server 인스턴스의 특정 데이터베이스에 연결하려면 로그인이 데이터베이스 사용자에게 매핑되어야합니다. 데이터베이스 내부의 권한은 로그인이 아닌 데이터베이스 사용자에게 부여되고 거부됩니다. 전체 SQL Server 인스턴스의 범위가있는 권한 (예 : CREATE ENDPOINT 권한)을 로그인에 부여 할 수 있습니다.


3
>따옴표로 각 단락의 시작 부분 에을 넣으면 따옴표로 형식화되는 것이 좀 더 명확합니다 .
Sam

2
이것은 매우 유용했습니다. 사용자와 로그인을 올바르게 설정했지만 시스템이 SQL Server 로그인 인증을 허용하도록 설정되지 않았습니다. 서버에서 로그인을 허용하지 않을 때 SQL Server 로그인을 만들 수있는 이유는 저쪽에 있습니다!
Mark Ireland

나는 이것으로도 혼란에 빠졌다. 서버가 현재 혼합 모드가 아닌 경우 SQL Auth 로그인을 만들려고 할 때 서버에서 오류가 발생했을 것으로 예상했을 때 사용자에게 먼저 혼합 모드 인증을 켜야한다는 단서를 제공 할 것입니다.
arunsun

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.