특정 사용자에 대한 액세스를 제한해야하지만 dbo 소유 테이블의 데이터를 여전히 볼 수 있어야합니다.
다음을 수행하려고합니다.
- dbo 스키마 기능은 정상적으로 작동하며 모든 것에 액세스 할 수 있습니다.
- schema1 스키마는 schema1 객체에만 액세스 할 수 있습니다
- schema1보기 또는 저장 프로 시저가 dbo가 소유 한 테이블의 데이터에 액세스하는 경우 권한 체인이 적절하게
- user1은 schema1에 액세스 할 수 있으며 다른 것은 없습니다. # 3의 경우를 제외하고
내가 시도한 것은 다음과 같습니다.
- 임의의 비밀번호로 테스트 로그인에 맵핑 된 user1 사용자를 작성하십시오.
- 테스트 데이터가 포함 된 dbo 스키마에 몇 개의 테이블을 작성했습니다.
- schema1 스키마 생성
- dbo.people, dbo.taglinks 및 dbo.tags의 데이터에 액세스하는 schema1.profiles라는보기에서 선택하는 schema1.get_profiles를 작성했습니다.
그러나 user1으로 로그인 한 상태에서 다음 명령문을 사용하십시오.
EXEC get_profiles 1
결과 :
The SELECT permission was denied on the object 'tags', database 'schema_test', schema 'dbo'.
저는 WITH EXECUTE AS OWNER
"소유권 체인"이 어떻게 작동해야하는지 이해 하려고 노력 하지 못했습니다.
나는 또한 시도했다
GRANT EXECUTE ON SCHEMA::schema1 TO user1
GRANT INSERT ON SCHEMA::schema1 TO user1
GRANT SELECT ON SCHEMA::schema1 TO user1
GRANT UPDATE ON SCHEMA::schema1 TO user1
GRANT VIEW DEFINITION ON SCHEMA::schema1 TO user1
그러나 다음과 같은 오류가 발생합니다 (dbo 수준 액세스 권한을 가진 사용자 임에도 불구하고).
Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.
내가 필요한 것은 user1이 내가 제공하는 저장 프로 시저를 통해 데이터에 액세스 할 수 있고 다른 것은 없습니다.
또한 이것은 결국 기존 SQL Azure 데이터베이스에 살려고하지만 로컬 더미 데이터베이스에 대해 먼저 테스트하고 있습니다.