/ SQL Server'da bir kullanıcı / grup için sys.tables
/ erişimini devre dışı bırakmak için en iyi yolu arıyorum Information Schema
.
2008'den bu konuyu buldum
Aşağıdaki şekilde erişimi reddetmenin bir yolunu gösterir [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
Ancak şu yolla erişimi devre dışı bırakmanın hiçbir yolu yoktur Information Schema
:
DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole
Bu işe yaramıyor gibi görünüyor.
İnformation_schema'ya erişimi nasıl devre dışı bırakabilirim?
Ve tüm daha kolay bir yolu ulaşımı engelle var sys
/ ' information_schema
?
Güncelleme: Aslında ben aşağıdaki ifadeleri ot çalıştıramazsınız:
DENY SELECT ON [sys] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA To reducedDBO
GO
Bunları Kullanıcının bulunduğu belirli bir DB'de çalıştırmayı denedim ve "ana" da denedim.
Hala koşabilirim:
SELECT * from
INFORMATION_SCHEMA.TABLES
-> hala sonuç döndürüyor
SELECT * from
sys.TABLES
-> sonuç yok
SCHEMA::
Sorguya dahil etmek, güvenilirlerin oluşturulmasını mümkün kıldı
DENY SELECT ON SCHEMA::[sys] TO reducedDBO
GO
DENY SELECT ON SCHEMA::INFORMATION_SCHEMA To reducedDBO
GO
Ama şimdi hala DB'den tüm bilgileri seçebilirim.
Management Studio 2008'deki kullanıcıların Özellik penceresinde "Güvenli" -Tab'a bir göz attım, şöyle görünüyor:
Sys.tables seçilmesini engelleyen giriş
Şema: sys, Adı: tablolar, Tür: Görünüm
Sys.tables için izinler: İzin: Seç, Grantor: dbo, Reddet onaylandı
Seçimi engellemeyen giriş
Şema :, Adı: BİLGİ_SCHEMA, Tür: Şema
BİLGİ_SCHEMA izinleri: İzin: Seç, Grantor: dbo, Reddetme kontrol edilmez (Ben kontrol etmeye çalıştım, ama hiç şansım yok.)
İzin: Seç, Grantor: BİLGİ_SCHEMA, Reddet onaylandı
GUI üzerinde izinleri ayarlamaya çalıştım, ancak ayar izinlerini yalnızca ana DB'de mümkün olacak aynı hatayı alıyorum. Ancak kullanıcı / oturum açma ana DBs güvenliği eklenmiş değil.
Çözüm:
Yapmak tek yolu deny
için çalışma information_schema
oldu usta-db kullanıcı eklemek ve çalıştırmak deny select
usta tarih:
DENY SELECT ON [sys].[tables] TO reducedDBO
GO
DENY SELECT ON INFORMATION_SCHEMA.TABLES To reducedDBO
GO
Ve bu kodda olduğu gibi, yalnızca tek tablolar için yürütülebilir.