저는 SQL Sever의 데이터베이스 권한 관리 분야에서 매우 친환경적입니다.
예를 들어 보겠습니다. 간단합니다.
“admin”계정이 스키마 A, B 및 C의 소유자라고 말합니다.
전체 권한 (업데이트 / 삭제)을 원하는 다른 계정 “minion”이 있습니다. / insert / select / alter) 스키마 A, B 및 C에서 생성 된 모든 객체 (테이블 / 뷰)에 대한 것입니다.
가능합니까? 아니면 이러한 스키마 아래에 테이블 / 뷰를 추가 할 때마다 grant 문을 실행해야합니까? (조금 어리석은 것 같습니다.)
답변
GRANT
기존의 모든 및 해당 스키마에 존재할 모든 항목에 유효한 스키마 권한.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
또한 특정 권한에 대한 권한을 거부하려는 경우 개체 권한을 거부 할 수 있습니다.
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
설명
답변
좀 더 단순화하기 위해 역할을 사용하여 원하는 작업을 수행 할 수 있습니다.
지정한 후에는 역할에 대한 권한이있는 경우 사용자를 역할에 추가하기 만하면됩니다. 이렇게하면 개별 사용자의 권한을 관리 할 필요가 없습니다. 사용자는 역할에 부여 된 권한을 상속합니다.
다음은 시작하는 예입니다.
-- 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
.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]