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