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