
여러 스키마가 포함된 단일 데이터베이스를 활용하는 다중 테넌트 애플리케이션을 만들고 있습니다. 각 임차인은 자신만의 로그인/비밀번호를 갖게 됩니다. 특정 스키마에 대한 보기 권한을 제한할 수 있었습니다.
내가 계속 직면하는 유일한 문제는 스키마를 업데이트할 때입니다. 현재 적절한 스키마 자격 증명을 사용하여 C# 코드 로그인을 하고 특정(또는 전체) 스키마를 업데이트할 때마다 SQL 코드를 실행합니다.
처음에 테이블을 변경하려고 시도했지만 충분한 권한이 없다는 것을 깨달았습니다. 그래서 권한을 다시 조정했습니다. 이제 모든 스키마에 전체 텍스트 인덱싱을 추가하려고 하는데 권한이 없다는 메시지가 나타납니다.
the database owner for a specific schema
내 질문은 간단합니다 . 데이터베이스에서 실행되는 스크립트에 문제가 없도록 사용자 권한을 어떻게 정의할 수 있습니까 ?
답변1
GRANT CONTROL ON SCHEMA::<schemaname> TO <username>;
모든 권한을 부여합니다스키마 및 스키마 포함 객체에 적용 가능. 그러나 비스키마 개체에 적용 가능한 권한은 부여되지 않습니다. 예를 들어, 이는 전체 텍스트 카탈로그에는 적용되지 않습니다.~ 아니다스키마 바인딩된 개체(FT 카탈로그를 생성할 때 스키마를 지정하지 않음) 및 특수 CREATE FULLTEXT CATALOG
권한이 필요합니다.
귀하의 경우 전체 보안 모델을 검토하고 테넌트에게 어떤 권한과 작업이 필요/허용되는지 결정해야 합니다. 모든 경우에 적용되는 쉬운 대답은 없습니다. 테넌트에게 전체 db_owner처럼 행동할 수 있는 자유를 부여한다면 그들에게 실제 데이터베이스를 부여해야 합니다. 스키마에 몰래 들어가 데이터베이스인 척할 수 없습니다. SQL 보안 모델은 그런 식으로 작동하지 않으므로 이를 회피하려고 하기보다는 함께 플레이하는 것이 좋습니다.
답변2
나는 그것이 가능하다고 생각하지 않습니다. dbo라면 해당 데이터베이스에서 필요한 모든 작업을 수행할 수 있습니다. dbo가 아닌 경우 제한됩니다. 데이터베이스 소유자는 바로 해당 데이터베이스의 소유자를 의미합니다.