SQL Server-전체 스키마 대 개체에 권한을 부여 하시겠습니까?


25

SQL Sever의 데이터베이스 권한 관리 세계에 관해서는 매우 녹색입니다.

간단한 예를 보자.

계정 'admin'이 스키마 A, B 및 C의 소유자라고 가정하십시오.

스키마 A, B 및 C에서 생성 된 모든 개체 (테이블 /보기)에 대한 모든 권한 (업데이트 / 삭제 / 삽입 / 선택 / 변경)을 원하는 다른 계정 '미니언'이 있습니다.

이것이 가능한가? 아니면 이러한 스키마 아래에 테이블 / 뷰를 추가 할 때마다 grant 문을 실행해야합니까? (나에게 조금 어리석은 것처럼 보인다).

답변:


36

GRANT기존의 모든 것과 해당 스키마에 존재하는 모든 것에 유효한 스키마 권한을 스키마 할 수 있습니다 .

그랜트 스키마 권한

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

또한 해당 스키마 내의 특정 개체에 대한 권한을 거부하려면 할 수 있습니다.

객체 권한 거부

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;

1
스키마 또는 사용자 이름에 특수 문자가있는 경우 대괄호를 사용하십시오. 예.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
Joshua Duxbury

Azure에서 작동하지 않는 이유는 무엇입니까? (명령은 작동하지만 SSMS가 나타나 "Db 소유자가 아닙니다. blah blah blah. 테이블을 저장할 수 없습니다"라고 말하면 충분하지 않습니다 (데이터베이스에 모두 부여). (쇼 권한 '데이터베이스', '<DB 이름>', TheUserId는 '테이블 만들기'와 '부여'의 state_desc) 필요한 다른 마법이 있는가 또는 DBO들만 사용할 수있는 푸른입니까??
Traderhut 게임

13

조금 더 단순화하기 위해 역할을 사용하여 원하는 작업을 수행 할 수 있습니다.

역할에 권한을 할당하면 역할에 사용자를 추가하기 만하면됩니다. 이렇게하면 개별 사용자에 대한 권한을 관리 할 필요가 없습니다. 사용자는 역할에 부여 된 권한을 상속합니다.

다음은 시작하는 예입니다.

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.