Meta veri görünürlük yapılandırma
Önceki sürümlerinde SQL Server, bir veritabanındaki tüm nesneler için meta veriler, üyelerine görünür ortak rolü.Bu örnek olarak oturum açan herhangi bir kullanıcı anlamına gelir SQL Server bile bu nesneler, kullanıcı var. hiçbir hak sunucudaki her nesnenin meta veriler görüntüleyebilirsiniz
De SQL Server 2005 ve daha sonra meta veriler görünürlük sınırlı güvenli hale Getirilebilenler olduğunu ya da sahibi olan bir kullanıcı ya da, kullanıcı verildi bazı izni.Örneğin, aşağıdaki sorgu döndürür kullanıcı izni gibi verilmişse bir satır seçin veya tablo Ekle myTable.
SELECT name, object_id
FROM sys.tables
WHERE name = 'myTable';
GO
Ancak, kullanıcı herhangi bir izni yoksa myTable, sorgunun döndürdüğü bir boş sonuç küme.
Kapsam ve meta veri görünürlük yapılandırma etkisi
Meta veri görünürlük yapılandırma, yalnızca aşağıdaki güvenli hale Getirilebilenler için geçerlidir.
Katalog Görünümleri |
Veritabanı Altyapısı sp_help stored procedures |
yerleşik işlevler risklere meta verileri |
Bilgi şema görünümlerini |
Uyumluluk Görünümleri |
Genişletilmiş özellikler |
Meta veri görünürlük yapılandırma aşağıdaki güvenli hale Getirilebilenler için geçerli değildir.
Sistem tabloları sevkiyat günlük |
SQL Server Aracısı sistem tabloları |
Veritabanı Bakım planı sistem tabloları |
Yedekleme sistem tabloları |
Yineleme sistem tabloları |
Çoğaltma ve SQL Server Agent sp_help saklı yordamlar |
Sınırlı meta veriler erişilebilirlik aşağıdaki anlamına gelir:
Varsayalım uygulamaları ortak meta veriler erişim keser.
Sistem görünümleri sorgulamaları yalnızca satırların alt küme küme küme kümesini döndürebilir veya bazen boş bir sonuç küme.
Meta veri verilirken, yerleşik işlevler objectpropertyex gibi null döndürebilir.
The Veritabanı Altyapısı sp_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ıştırılmasına ve bu nedenle, meta veriler erişilebilirlik sınırlı.Saklı yordam meta verilerlerine erişmeye çalıştığında, aşağıdaki kodda, tablo myTable , arayan herhangi bir hak olan bir boş sonuç küme döndürülür.Daha önceki sürümlerinde SQL 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ın meta veriler görüntülemek izin vermek için Arayanların uygun bir kapsam görünüm TANIMI izni verebilirsiniz: Nesne düzeyinde, veritabanı düzey veya sunucu düzeyinde.Arayan görünüm TANIMI izni, bu nedenle, önceki örnekte, myTable, saklı yordam işlevi satır.Daha fazla bilgi için bkz: grant (Transact-sql) ve Veritabanı izinleri (Transact-sql).
Böylece sahibinin kimlik bilgileri altında yürütür saklı yordam de değiştirebilirsiniz.Yordam sahibi ve tablo sahibi aynı sahip, sahiplik zincirleme uygular ve yordam sahibinin güvenlik bağlamı için meta veriler erişim sağlayan, myTable.Bu senaryo altında aşağıdaki kod çaðýrana meta veriler satırı döndürür.
Not
Aşağıdaki örnek sys.objects Katalog görünümü yerine sys.sysobjects uyumluluk 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
execute as arayan güvenlik bağlamında geçici olarak geçiş yapmak için kullanabilirsiniz.Daha fazla bilgi için bkz: execute (Transact-sql).
Sahipliği zincir oluşturma hakkında daha fazla bilgi için bkz: Sahiplik Chains.
Yararları ve meta veri görünürlük yapılandırma sınırları
Meta veri görünürlük yapılandırma, genel güvenlik planınızın önemli bir rol oynayabilirsiniz.Ancak, nitelikli ve belirlenen kullanıcı zorla açığa bazı durumlar vardır meta veriler.Öneririz, dağıtmak birçok savunma savunma olarak meta veriler izinleri.
Çıkması, zorlamak teorik olarak mümkündür meta veriler hata iletilerinde sorgularda doðrulama değerlendirme sırasını işleme göre.Örneğin olasılığını deneme yanılma saldırılarına özgü olup SQL Server.İlişkisel cebiri içinde izin verilen ilişkilendirilebilir ve yer değiştirebilme dönüştürmeleri örtük.Döndürülen hata iletileri bilgiler sınırlayarak bu riski ortadan kaldırmak.Daha bu şekilde meta veriler görünürlük sınırlamak için izleme bayrağı ile 3625 sunucuyu başlatabilirsiniz.Bu izleme bayrağı hata iletilerinde gösterilen bilgi miktarını sınırlandırır.Dolayısıyla, bu zorunlu bildirimlerini önlemeye yardımcı olur.Kullanýcýnýzýn hata iletileri kısa ve hata ayıklama amacıyla kullanmak zor olabilir olmasıdır.Daha fazla bilgi için bkz: sql Server hizmeti başlangıç seçeneklerini kullanma ve İzleme Bayrakları (Transact-SQL).
Aşağıdaki meta veriler Zorlanmış açığa tabi değildir:
Depolanan değeri provider_string sütun , sys.servers.alter any bağlantılı sunucu izni olan bir kullanıcı, bu null değerini göreceksiniz sütun.
Kullanıcı tanımlı bir nesne bir saklı yordam veya tetikleyiciyi gibi kaynak tanımı.Yalnızca aşağıdakilerden biri doğru olduğunda, kaynak kodu görünür:
Kullanıcı nesnesi üzerinde görünüm TANIMI izni vardır.
Kullanıcı nesnesi üzerinde görünüm TANIMI izni engellendi ve nesnenin denetim, alter veya Sahiplik Al iznine sahip.Diğer tüm kullanıcıların null göreceksiniz.
Aşağıda, tanım sütunlar bulunan katalog görünümleri:
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.
Bilgi şema görünümlerini aşağıdaki sütunlarda:
INFORMATION_SCHEMA.CHECK_CONSTRAINTS.CHECK_CLAUSE
INFORMATION_SCHEMA.SÜTUNLAR.COLUMN_DEFAULT
INFORMATION_SCHEMA.ETKİ ALANLARI.DOMAIN_DEFAULT
INFORMATION_SCHEMA.ROUTINE_COLUMNS.COLUMN_DEFAULT
INFORMATION_SCHEMA.YORDAMLAR.ROUTINE_DEFINITION
INFORMATION_SCHEMA.GÖRÜNÜMLER.VIEW_DEFINITION
OBJECT_DEFINITION() işlev
Password_hash içinde saklanan değeri sütun , sys.sql_logins.control server izni olan bir kullanıcı, bu null değerini göreceksiniz sütun.
Not
Yerleşik Sistem yordamları ve işlevleri sql tanımları ile ortak olarak görünür sys.system_sql_modules Katalog görünümü, sp_helptext saklı yordamve OBJECT_DEFINITION() işlev.
Meta veri görünürlük genel ilkeleri
meta veriler görünürlük ile ilgili dikkate alınması gereken bazı genel ilkeleri şunlardır:
Sabit rolleri örtülü izinleri
İzinleri kapsamı
deny önceliği
Alt bileşen meta veriler görünürlük
Sabit rolleri ve örtülü izinleri
Sabit roller tarafından erişilebilecek meta veriler ilgili örtülü izinlerinin bağlıdır.
İzinleri kapsamı
Bir kapsamı adresindeki izinleri bu kapsam ve tüm meta veriler görebilme olanağı kapsam içine de beraberlerinde getirirler.Örneğin, bir şema üzerinde select iznine grantee bu şema tarafından bulunan tüm güvenli hale Getirilebilenler üzerinde select iznine sahip olduğunu gösterir.Bir şema üzerinde select izni verme, bu nedenle ş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 kullanıcı sağlar.Kapsamları hakkında daha fazla bilgi için bkz: (Veritabanı altyapısı) izinleri sıradüzeni.
deny önceliği
REDDET genellikle diğer izinleri üzerinde önceliğe sahiptir.Örneğin, bir veritabanı kullanıcı bir şema üzerinde execute izni verilir, ancak bu şema içinde saklı bir yordam üzerinde execute izni engellendi, kullanıcı bu saklı yordam meta veriler görüntüleyemez.
Ayrıca, bir kullanıcı bir şema üzerinde execute izni engellendi, ancak bu şema içinde saklı bir yordam üzerinde execute izni verilmiş olan kullanıcı bu saklı yordam meta veriler görüntüleyemez.
Başka bir örnek, bir kullanıcı hakkı ve sizin çeşitli rol üyelikleri mümkündür bir saklı yordam üzerinde execute izni engellendi deny önceliklidir ve kullanıcı görüntüleyemez meta veriler saklı yordam.
Alt bileşen meta veri görünürlük
Dizinler gibi alt bileşenler görünürlüğünü kontrol kısıtlamaları ve tetikleyiciler üst izinler tarafından belirlenir.Bu alt bileşenleri grantable izni yok.Örneğin, bir kullanıcı bir tablo üzerinde bazı izni verilmişse, kullanıcı tablolar, sütunlar, dizinler, Denetim kısıtlamaları, Tetikleyiciler ve diğer tür alt bileşenleri için meta veriler görüntüleyebilirsiniz.
Tüm veritabanı kullanıcıları için erişilebilir olan meta verileri
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 izinleriniz yok; Bu nedenle, bir kullanıcı bir dosya grubu meta veriler görüntüleme izni verilemez.Ancak, bir tablo oluşturabilirsiniz herhangi bir kullanıcı dosya grubu erişim olanağına sahip olması gerekir meta veriler on kullanmak için filegroup veya TEXTIMAGE_ON filegroup yan tümcelerinde, 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 listeler ortak rolü.
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 |
Ayrıca bkz.