SQL Server에서 사용자 / 그룹에 대한 sys.tables
/ 액세스를 비활성화하는 가장 좋은 방법을 찾고 Information Schema
있습니다.
2008 년부터이 실을 찾았습니다
다음 [sys].[something]
과 같이 액세스를 거부하는 방법을 보여줍니다 .
DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole
GO
DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole
GO
그러나에 대한 액세스를 비활성화하는 방법은 없습니다 Information Schema
.
DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
이것은 작동하지 않는 것 같습니다.
information_schema에 대한 액세스를 비활성화하려면 어떻게합니까?
그리고 모든 sys
/에 대한 액세스를 비활성화하는 더 쉬운 방법이 information_schema
있습니까?
업데이트 : 실제로 다음 진술을 모두 실행할 수는 없습니다.
DENY SELECT ON [sys] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA To reducedDBO
GO
사용자가 존재하는 특정 DB에서 실행하려고 시도했으며 "마스터"에서도 시도했습니다.
여전히 실행할 수 있습니다.
SELECT * from
INFORMATION_SCHEMA.TABLES
-> 여전히 결과를 반환
SELECT * from
sys.TABLES
-> 더 이상 결과가 없습니다
SCHEMA::
쿼리를 포함 하여 보안 개체를 만들 수있게되었습니다.
DENY SELECT ON SCHEMA::[sys] TO reducedDBO
GO
DENY SELECT ON SCHEMA::INFORMATION_SCHEMA To reducedDBO
GO
그러나 지금도 여전히 DB에서 모든 정보를 선택할 수 있습니다.
Management Studio 2008의 사용자 속성 창에서 "Securables"-Tab을 살펴 보았습니다.
sys.tables의 선택을 차단하는 항목
스키마 : sys, 이름 : 테이블, 유형 :보기
sys.tables에 대한 권한 : Permission : Select, Grantor : dbo, Deny가 확인 됨
선택을 차단하지 않는 항목
스키마 :, 이름 : INFORMATION_SCHEMA, 유형 : 스키마
INFORMATION_SCHEMA에 대한 권한 : Permission : Select, Grantor : dbo, Deny는 확인되지 않았습니다 (확인하려고했지만 기회는 없습니다.)
권한 : 선택, 권한 부 여자 : INFORMATION_SCHEMA, 거부가 확인 됨
GUI를 통해 권한을 설정하려고 시도했지만 마스터 DB에서만 권한을 설정하는 것과 동일한 오류가 발생합니다. 그러나 마스터 DB 보안에 사용자 / 로그인을 추가하지 않았습니다.
해결책:
내가 할 수있는 유일한 방법 deny
에 대한 작업을 information_schema
했다 마스터-DB에 사용자를 추가 하고 실행 deny select
마스터에 :
DENY SELECT ON [sys].[tables] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA.TABLES To reducedDBO
GO
이 코드에서와 같이 단일 테이블에 대해서만 실행할 수 있습니다.