Meta veriler görünürlük yapılandırma
Önceki sürümlerindeSQL Server, veritabanındaki tüm nesneler için meta veriler üyeleri için görülebilirortak role.Bunun anlamı, herhangi bir kullanıcı, açtı örneğineSQL Serverhatta bu nesneler, bir kullanıcı var. hiçbir hak sunucudaki her bir nesnenin meta veriler görüntüleyebilir
InSQL Server 2005ve daha sonra meta veriler görünürlüğünü sınırlı securables ya da sahibi olan bir kullanıcı veya, kullanıcının izni bazı izin.Örneğin, aşağıdaki sorgu, SELECT, kullanıcının verilen izin gibi bir satır döndürür veya tablodaki INSERTmyTable.
SELECT name, object_id
FROM sys.tables
WHERE name = 'myTable';
GO
Ancak, kullanıcı herhangi bir izni yoksamyTable, sorguyu bir boş sonuç döndüren küme.
kapsam ve etkisi meta veriler görünürlük yapılandırması
Meta veriler görünürlük yapılandırma yalnızca için aşağıdaki securables uygulanır.
Katalog görünümleri |
Database Enginesp_help saklı yordamlar |
yerleşik işlevler sunduğu meta veriler |
Bilgi şeması görünümleri |
Uyumluluk görünümü |
Genişletilmiş Özellikler |
Meta veriler görünürlük yapılandırma için aşağıdaki securables uygulanmaz.
Sistem tabloları günlüğü |
SQL Server Aracı sistem tabloları |
Veritabanı bakım planı sistem tabloları |
Yedek sistem tabloları |
çoğaltma sistem tabloları |
Çoğaltma veSQL ServerAracısp_help saklı yordamlar |
Sınırlı meta veriler erişilebilirlik aşağıdakileri gösterir:
Uygulamalar, kabul eder.ortak sonu. meta veriler erişimi olacak
Sistem görünümleri sorgulamaları yalnızca iade, satırların alt küme küme küme kümesini veya bazen bir boş sonuç kümesi.
OBJECTPROPERTYEX gibi meta veriler verilirken, yerleşik işlevler, NULL döndürebilir.
The Database Enginesp_help stored procedures might return only a subset of rows, or NULL.
Saklı yordamları ve tetikleyicileri, gibi SQL modülleri arayan güvenlik bağlamında çalışacak ve bu nedenle, meta veriler erişilebilirlik sınırlı.Örneğin, aşağıdaki kodda, saklı yordamı çalıştığında meta veriler tablo için erişimmyTable, arayan herhangi bir hak olan bir boş sonuç kümesi döndürülür.Önceki sürümlerindeSQL Server, bir satır döndürdü.
CREATE PROCEDURE assumes_caller_can_access_metadata
BEGIN
SELECT name, id
FROM sysobjects
WHERE name = 'myTable';
END;
GO
Arayanlar meta veriler görüntülemek izin vermek için Arayanlar görünüm TANIMINA en uygun bir kapsam izni verebilirsiniz: nesne düzey, veritabanı düzeyinde veya sunucu düzeyinde. Nedenle önceki örnekte, arayan sahip görünüm TANIMINA izinmyTablesaklı yordam işlevi bir satır.Daha fazla bilgi için bkz: GRANT (Transact-SQL) ve Veritabanı IZINLERI (Transact-SQL).
Böylece, sahibinin kimlik bilgileri altında çalışır, saklı yordam değiştirebilirsiniz.Yordam sahibinin ve tablo sahibi olan aynı sahip, Sahiplik zincirleme uygular, ve güvenlik bağlamını yordam sahibinin meta veriler erişim sağlarmyTable.Bu senaryo altında aşağıdaki kod çağıran için meta veriler içeren bir satır döndürür.
Not
Aşağıdaki örneksys.Objects yerine, sys.sysobjects uyumluluk görünümü. Katalog görünümü
CREATE PROCEDURE does_not_assume_caller_can_access_metadata
WITH EXECUTE AS OWNER
AS
BEGIN
SELECT name, id
FROM sys.objects
WHERE name = 'myTable'
END;
GO
Not
Arayan güvenlik içeriğini geçici olarak geçiş yapmak için yürütmek AS kullanabilirsiniz.Daha fazla bilgi için bkz: Transact-SQL () yürütmek.
Sahiplik zincirleme hakkında daha fazla bilgi için bkz: Sahiplik chains.
Faydaları ve meta veriler görünürlük yapılandırması sınırları
Meta veriler görünürlük yapılandırma, genel güvenlik planınızın içindeki önemli bir rol oynayabilirsiniz.Ancak, nitelikli ve belirlenen kullanıcı bazı meta verilerin açığa zorlayabilirsiniz durumlar vardır.Birçok savunma-içinde-derinlik biri olarak meta veriler izinleri dağıtmanız önerilir.
meta veriler, hata iletileri çıkması sorgularda doðrulama Değerlendirme sırasını işleyerek zorlamak teorik olarak mümkündür.Örneğin olasılığıdeneme ve hata saldırıları için belirli değil SQL Server.İlişkisel cebirini izin verilen ilişkilendirilebilir ve commutative dönüştürmeleri tarafından açık.Bu riski hata iletilerinde verilen bilgileri sınırlayarak vektörünün etkileri azaltılabilir.Daha fazla meta veriler bu şekilde görünürlüğü kısıtlamak için izleme bayrağı ile 3625 sunucuyu başlatabilirsiniz.Bu izleme bayrağı, hata iletileri gösterilen bilgi miktarını sınırlandırır.Dolayısıyla, bu zorunlu bildirimleri engellemeye yardımcı olur.The tradeoff, hata iletileri kısa olur ve hata ayıklama amacıyla kullanmak zor olabilir olur.Daha fazla bilgi için bkz: SQL Server hizmet başlangıç seçeneklerini kullanma ve İzleme Bayrakları (Transact-SQL).
Aşağıdaki meta veriler için zorunlu açığa değil:
Saklanan değerprovider_string sütun sys.servers . ALTER ANY bağlantılı sunucu izni olmayan bir kullanıcı, bu NULL deeri göreceksiniz sütun.
Saklı yordam veya tetikleyiciyi kullanıcı tanımlı bir nesnenin kaynağı tanımı.Kaynak kodu, yalnızca aşağıdakilerden biri doğru olduğunda görülebilir:
Kullanıcı, nesnenin görünüm TANIMINA izin verilir.
Kullanıcı, nesnenin görünüm TANIMINI izni engellendi ve nesnenin denetim, SAHİPLİĞİNİ almak veya ALTER iznine sahip.Diğer tüm kullanıcıların null görürsünüz.
Tanımı sütunları aşağıdaki katalog görünümleri bulundu:
sys.all_sql_modules
sql_dependencies
sys.server_sql_modules
sys.check_constraints
sys.default_constraints
sys.computed_columns
sys.numbered_procedures
The ctext column in the syscomments compatibility view.
Çıkışınısp_helptext yordamı.
Aşağıdaki sütunlarda bilgi şeması görünümleri:
INFORMATION_SCHEMA.CHECK_CONSTRAINTS.CHECK_CLAUSE
INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT
INFORMATION_SCHEMA.DOMAINS.DOMAIN_DEFAULT
INFORMATION_SCHEMA.ROUTINE_COLUMNS.COLUMN_DEFAULT
INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION
INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION
OBJECT_DEFINITION() işlev
Password_hash saklanan değer sütun,sys.sql_logins.Sunucu Denetim izni olan kullanıcı, bu sütunda NULL değeri görürsünüz.
Not
Yerleşik sistem yordamları ve işlevleri SQL tanımları ile genel olarak görünürsys.system_sql_modules yordam ve OBJECT_DEFINITION() işlev. sp_helptext Katalog görünümü, saklı
Meta veriler görünürlük, genel ilkeler
meta veriler görünürlük ile ilgili dikkate alınması gereken bazı genel ilkeleri şunlardır:
Sabit roller örtülü izinler
İzinleri kapsam
DENY önceliği
Alt meta veriler görünürlüğü
Sabit roller ve izinler kapalı
Meta veriler sabit rolü tarafından erişilebilir bağlıdır üzerine, ilgili örtülü izinler.
İzinler kapsam
İzinleri bir kapsamı, kapsam, kapsam ve tüm meta veriler görme olanağı içine durumunun oluştuğunu.Örneğin, bir şema üzerinde SELECT iznine grantee, şema tarafından bulunan tüm securables üzerinde SELECT iznine sahip olduğunu gösterir.Bir şema SELECT izni verme, şema ve ayrıca tüm tablolar, görünümler, İşlevler, yordamları, sıralar, eşanlamlı, türleri ve içindeki XML şema koleksiyonları meta veriler görmek bir kullanıcı bu nedenle sağlar.Kapsamlar hakkında daha fazla bilgi için bkz:Izinleri hiyerarşi (Veritabanı Altyapısı).
DENY önceliği
DENY genellikle diğer izinler üzerinde önceliğe sahiptir.Örneğin, bir veritabanı kullanıcısı bir şema üzerinde yürütmek izni verilir, ancak bu şema, bir saklı yordam yürütmek izni engellendi, kullanıcının bu saklı yordam için meta veriler görüntüleyemezsiniz.
Ayrıca, bir kullanıcının bir şema üzerinde yürütmek izni engellendi, ancak bir saklı yordam, şema üzerinde yürütmek izni verilmiş kullanıcı görüntüleyemiyorsunuz meta veriler için saklı yordam
Başka bir örneğin bir kullanıcı verilmiş ve, çeşitli rol üyeliği ile mümkün olan bir saklı yordam yürütmek izni engellendi DENY çıkar ve kullanıcı saklı yordam meta veriler görüntüleyemez.
Alt meta veriler görünürlüğü
Alt dizinler gibi görünürlüğünü kontrol kısıtlamaları ve tetikleyiciler üst izinler tarafından belirlenir.Bu alt bileşenleri grantable izinlere sahip değilsiniz.Örneğin, bir kullanıcı üzerinde bazı izinleri verilmişse bir tablo, kullanıcının tablo s, sütunlar, dizinler, denetim kısıtlamaları, Tetikleyiciler ve gibi diğer alt meta veriler görüntüleyebilir.
Tüm veritabanı kullanıcılar için erişilebilir, meta veriler
Bazı meta veriler belirli bir veritabanında bulunan tüm kullanıcılar için erişilebilir olmalıdır.Örneğin, dosya gruplarını conferrable izinlerine sahip değilsiniz; bu nedenle, kullanıcı bir dosya grubu meta veriler görüntüleme izni sağlanamadı.Ancak, bir tablo oluşturmak bir kullanıcı olmalıdır ON kullanmak için dosya grubu meta veriler erişimi içinfilegroupya da TEXTIMAGE_ONfilegroupyan tümceleri CREATE TABLE deyim.
DB_ID() ve DB_NAME() işlevleri tarafından döndürülen meta veriler tüm kullanıcılar tarafından görülebilir.
Aşağıdaki tablo görülebilir katalog görünümleri listelerortak role.
sys.partition_functions |
sys.partition_range_values |
sys.partition_schemes |
sys.data_spaces |
sys.Filegroups |
sys.data_spacessys.destination_data_spaces |
sys.database_files |
allocation_units |
sys.Partitions |
sys.Messages |
sys.schemas |
sys.Configurations |
sys.sql_dependencies |
sys.type_assembly_usages |
sys.parameter_type_usages |
sys.column_type_usages |
See Also