여러 서버 로그인을 하나의 데이터베이스 사용자에 맵핑


11

이것은 어리석은 질문 인 것처럼 보이지만 일부 연구에도 불구하고 (아마도 잘못된 용어를 사용했기 때문에) 이것에 관한 정보를 찾을 수 없었습니다.

여러 데이터베이스 로그인 (SQL Server 인증)을 단일 데이터베이스 사용자 (데이터베이스 역할의 구성원으로 할당 된 권한이있는 사용자)에게 로그 할 수 있습니까?

중앙 데이터베이스에서 하나의 설정을 읽어야하는 수십 개의 SQL 로그인 (SQL 서버 인증)이 있으며 각 로그인마다 고유 한 DB 사용자를 만드는 것보다 대상 데이터베이스의 단일 DB 사용자에게 모든 로그인을 매핑하고 싶습니다.

그렇다면 올바른 T-SQL 구문은 무엇입니까?


"서버 로그온"이라고 말하면 Windows 계정 또는 SQL Server 계정을 의미합니까?
Phil Sumner

SQL 서버 계정에 대해 이야기하고 있습니다. 명확하게하기 위해 질문을 편집 할 것
leepfrog

ROLE만든 다음 사용자를 역할에 추가 하는 방법은 무엇입니까 ? 이렇게하면 역할에 권한을 부여 할 수 있습니다. 이를 통해 보안을보다 효과적으로 관리 할 수 ​​있습니다. 또한 SQL Server 버전-2008R2, 2012는 무엇입니까?
Kin Shah

답변:


19

먼저 용어를 확인하십시오. 로그인은 인스턴스 레벨 보안 사용자 ( sys.server_principals)이고 사용자는 데이터베이스 레벨 보안 사용자 ( sys.database_principals)입니다. 이들은 SID (보안 식별자)에 의해 함께 결합됩니다. 위의 시스템 뷰를 보면 SID에 의해 1 : 1 형식으로 어떻게 결합되는지 확인할 수 있습니다. 데이터베이스에서 1 명의 사용자에게 1 명의 로그인입니다. 로그인에는 여러 사용자가있을 수 있지만 다른 데이터베이스에 있어야합니다.

따라서 액세스하려는 각 로그인마다 데이터베이스에 사용자를 작성해야합니다. 충분히 간단한 명령입니다.

CREATE USER [UserName] FROM LOGIN [LoginName]

여기에서 모든 사용자를 단일 (또는 여러) 역할로 지정할 수 있습니다. 역할은 권한이 있고 각 사용자 (데이터베이스 역할) 또는 로그인 (예 : 역할)과 해당 권한을 공유하는 컨테이너입니다. 데이터베이스의 db_datareader모든 테이블과 뷰에 대한 읽기 액세스 권한을 부여 하는 기본 제공 데이터베이스 역할 이 있습니다. 모든 사용자를 해당 역할에 추가 할 수 있습니다. 그러나 새 역할을 만들어 역할에 추가하는 것이 좋습니다 db_datareader. 그런 다음 모든 사용자를 새 역할에 추가하십시오. 여기서 이점은 그룹에 추가 권한을 추가하려는 경우 단순히 역할에 대한 권한을 변경하여 수행 할 수 있다는 것입니다.

다음을 수행하여 역할을 작성하십시오.

CREATE ROLE RoleName

사용자를 역할에 추가하거나 한 역할을 다른 역할에 추가

EXEC sp_addrolemember 'RoleName','UserName'

또는 2012 이상인 경우

ALTER ROLE [RoleName] ADD MEMBER [UserName]

자세한 설명과 Kenneth에 대한 배경 정보를 제공 해주셔서 감사합니다 That's 1 Login to 1 User in a database.
leepfrog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.