Aracılığıyla paylaş


SQL Server Denetimi (Veritabanı Altyapısı)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

SQL Server Veritabanı Altyapısı'nın veya tek bir veritabanının bir örneğinin denetimi, Veritabanı Altyapısı'nda gerçekleşen olayların takip edilmesini ve günlüğe kaydedilmesini içerir. SQL Server denetimi, sunucu düzeyinde olaylar için sunucu denetim belirtimleri ve veritabanı düzeyinde olaylar için veritabanı denetim belirtimleri içerebilen sunucu denetimleri oluşturmanıza olanak tanır. Denetlenen olaylar olay günlüklerine veya denetim dosyalarına yazılabilir.

Önemli

Azure SQL Yönetilen Örnek, bu T-SQL özelliğinde belirli davranış değişiklikleri gösterir. Azure SQL Yönetilen Örneği T-SQL farklarının SQL Server ile olan tüm T-SQL davranış değişikliklerine dair ayrıntılar için bölümüne bakın.

Sql Server için, yüklemenizin kamu veya standart gereksinimlerine bağlı olarak çeşitli denetim düzeyleri vardır. SQL Server Denetimi, çeşitli sunucu ve veritabanı nesnelerinde denetimleri etkinleştirmek, depolamak ve görüntülemek için ihtiyacınız olan araçları ve işlemleri sağlar.

Örnek başına sunucu denetim eylem gruplarını ve veritabanı denetim eylem gruplarını veya veritabanı başına veritabanı denetim eylemlerini kaydedebilirsiniz. Denetim olayı, denetlenebilir eylemle her karşılaşıldığında gerçekleşir.

SQL Server'ın tüm sürümleri sunucu düzeyinde denetimleri destekler. Tüm sürümler SQL Server 2016 (13.x) SP1'den başlayarak veritabanı düzeyinde denetimleri destekler. Bundan önce veritabanı düzeyinde denetim Kurumsal, Geliştirici ve Değerlendirme sürümleriyle sınırlıydı. Daha fazla bilgi için bkz. SQL Server 2016 sürümleri tarafından desteklenen özellikler.

Not

Bu konu SQL Server için geçerlidir. SQL Veritabanı için bkz. SQL veritabanı denetimini kullanmaya başlama.

SQL Server Denetim Bileşenleri

denetimi, belirli bir sunucu veya veritabanı eylemleri grubu için birçok öğenin tek bir pakette birleştirilmesidir. SQL Server denetiminin bileşenleri, tıpkı grafikler ve veri öğeleriyle birleştirilmiş bir rapor tanımının rapor oluşturması gibi, denetim olarak adlandırılan bir çıkış üretmek için birleştirilir.

SQL Server denetimi, denetim oluşturmaya yardımcı olmak için Genişletilmiş Olaylar kullanır. Genişletilmiş Olaylar hakkında daha fazla bilgi için bkz. Genişletilmiş Olaylar.

SQL Server Denetimi

SQL Server Audit nesnesi, izlenecek sunucu veya veritabanı düzeyinde eylemlerin ve eylem gruplarının tek bir örneğini toplar. Denetim SQL Server örnek düzeyindedir. SQL Server örneği başına birden çok denetime sahip olabilirsiniz.

Bir denetim tanımlarken, sonuçların çıktısı için konumu belirtirsiniz. Bu, denetim hedefidir. Denetim, devre dışı durumunda oluşturulur ve hiçbir eylemi otomatik olarak denetlemez. Denetim etkinleştirildikten sonra denetim hedefi denetimden veri alır.

Sunucu Denetim Belirtimi

Sunucu Denetim Belirtimi nesnesi bir denetime aittir. Her ikisi de SQL Server örnek kapsamında oluşturulduğundan, denetim başına bir sunucu denetim belirtimi oluşturabilirsiniz.

Sunucu denetim belirtimi, Genişletilmiş Olaylar özelliği tarafından tetiklenen birçok sunucu düzeyindeki eylem grubunu toplar. Sunucu denetim belirtimine denetim eylemi grupları ekleyebilirsiniz. Denetim eylem grupları, Veritabanı Altyapısı'nda gerçekleşen atomik olaylar olan önceden tanımlanmış eylem gruplarıdır. Bu eylemler denetime gönderilir ve bunlar hedefe kaydedilir.

Sunucu düzeyinde denetim eylem grupları SQL Server Denetim Eylem Grupları ve Eylemlermakalesinde açıklanmıştır.

Veritabanı Denetim Belirtimi

Veritabanı Denetim Belirtimi nesnesi de bir SQL Server denetimine aittir. Denetim başına SQL Server veritabanı başına bir veritabanı denetim belirtimi oluşturabilirsiniz.

Veritabanı denetim belirtimi, Genişletilmiş Olaylar özelliği tarafından tetiklenen veritabanı düzeyinde denetim eylemlerini toplar. Veritabanı denetim belirtimine denetim eylem grupları veya denetim olayları ekleyebilirsiniz. Denetim olayları, SQL Server altyapısı tarafından denetlenebilen atomik eylemlerdir. Denetim eylem grupları önceden tanımlanmış eylem gruplarıdır. Her ikisi de SQL Server veritabanı kapsamındadır. Bu eylemler denetime gönderilir ve hedefte kayıt altına alınır. Kullanıcı veritabanı denetim belirtiminde, sistem görünümleri gibi sunucu kapsamlı nesneleri eklemeyin.

Veritabanı düzeyinde denetim eylem grupları ve denetim eylemleri, SQL Server Denetim Eylem Grupları ve Eylemlermakalesinde açıklanmıştır.

Hedef

Bir denetimin sonuçları bir hedefe gönderilir; bu bir dosya, Windows Güvenliği olay günlüğü veya Windows Uygulaması olay günlüğü olabilir. Hedefin daha fazla kayıt yazmak için yeterli alana sahip olduğundan emin olmak için günlüklerin düzenli aralıklarla gözden geçirilmesi ve arşivlenmesi gerekir.

Önemli

Kimliği doğrulanmış tüm kullanıcılar Windows Uygulaması olay günlüğünü okuyabilir ve yazabilir. Uygulama olay günlüğü, Windows Güvenliği olay günlüğünden daha düşük izinler gerektirir ve Windows Güvenliği olay günlüğünden daha az güvenlidir.

Windows Güvenlik günlüğüne yazmak için SQL Server hizmet hesabının güvenlik denetimleri oluşturma ilkesine eklenmesi gerekir. Varsayılan olarak, Yerel Sistem, Yerel Hizmet ve Ağ Hizmeti bu ilkenin bir parçasıdır. Bu ayar, güvenlik ilkesi eklentisi (secpol.msc) kullanılarak yapılandırılabilir. Ayrıca, Nesne erişimi denetimi güvenlik ilkesi, hem Başarı hem de Hataiçin etkinleştirilmelidir. Bu ayar, güvenlik politikası eklentisi (secpol.msc) kullanılarak yapılandırılabilir. Windows Vista veya Windows Server 2008'de (ve üzeri), denetim ilkesi programını (AuditPol.exe)kullanarak komut satırından oluşturulan daha ayrıntılı ilkeyi ayarlayabilirsiniz. Windows Güvenlik günlüğüne yazmayı etkinleştirme adımları hakkında daha fazla bilgi için bkz. Sql Server Denetim Olaylarını Güvenlik Günlüğüne Yazma. Auditpol.exe programı hakkında daha fazla bilgi için 921469 Bilgi Bankası makalesine bakın Ayrıntılı güvenlik denetimiyapılandırmak için Grup İlkesi'ni kullanma. Windows olay günlükleri, Windows işletim sistemi için geneldir. Windows olay günlükleri hakkında daha fazla bilgi için bkz. Olay Görüntüleyicisi'ne Genel Bakış. Denetimde daha kesin izinlere ihtiyacınız varsa ikili dosya hedefini kullanın.

Denetim bilgilerini bir dosyaya kaydederken, kurcalama önlemeye yardımcı olmak için dosya konumuna erişimi aşağıdaki yollarla kısıtlayabilirsiniz:

  • SQL Server Hizmet Hesabı hem Okuma hem de Yazma iznine sahip olmalıdır.

  • Denetim Yöneticileri genellikle Okuma ve Yazma izni gerektirir. Bu, Denetim Yöneticilerinin denetim dosyalarının yönetimi için Windows hesapları olduğunu varsayar; örneğin, bunları farklı paylaşımlara kopyalama, yedekleme vb.

  • Denetim dosyalarını okuma yetkisi olan Denetim Okuyucuları Okuma iznine sahip olmalıdır.

Veritabanı Altyapısı bir dosyaya yazarken bile, diğer Windows kullanıcıları izinleri varsa denetim dosyasını okuyabilir. Veritabanı Altyapısı, okuma işlemlerini engelleyen özel bir kilit almaz.

Veritabanı Altyapısı dosyaya erişebildiğinden, CONTROL SERVER iznine sahip SQL Server oturum açma işlemleri, denetim dosyalarına erişmek için Veritabanı Altyapısı'nı kullanabilir. Denetim dosyasını okuyan herhangi bir kullanıcıyı kaydetmek için master.sys.fn_get_audit_fileüzerinde bir denetim tanımlayın. Bu, SQL Server aracılığıyla denetim dosyasına erişen CONTROL SERVER iznine sahip oturum açma bilgilerini kaydeder.

Denetim Yöneticisi dosyayı farklı bir konuma kopyalarsa (arşiv amacıyla vb.), yeni konumdaki erişim denetim listeleri (ACL'ler) aşağıdaki izinlere indirgenmelidir:

  • Denetim Yöneticisi - Okuma /Yazma

  • Denetim Okuyucu - Oku

Yalnızca Denetim Yöneticilerinin veya Denetim Okuyucularının erişimi olan SQL Server Express örneği gibi ayrı bir SQL Server örneğinden denetim raporları oluşturmanızı öneririz. Raporlama için Veritabanı Altyapısı'nın ayrı bir örneğini kullanarak, yetkisiz kullanıcıların denetim kaydına erişim elde etmesini önlemeye yardımcı olabilirsiniz.

Denetim dosyasının depolandığı klasörü Windows BitLocker Sürücü Şifrelemesi veya Windows Şifreleme Dosya Sistemi kullanarak şifreleyerek yetkisiz erişime karşı ek koruma sağlayabilirsiniz.

Daha fazla bilgi için, hedefe yazılan denetim kayıtlarına bakın: SQL Server Denetim Kayıtları.

SQL Server Denetimini Kullanmaya Genel Bakış

Denetim tanımlamak için SQL Server Management Studio veya Transact-SQL kullanabilirsiniz. Denetim oluşturulup etkinleştirildikten sonra hedef girdileri alır.

Windows'daki Olay Görüntüleyicisi yardımcı programını kullanarak Windows olay günlüklerini okuyabilirsiniz. Dosya hedefleri için SQL Server Management Studio'daki Günlük Dosyası Görüntüleyicisi veya hedef dosyayı okumak için fn_get_audit_file işlevini kullanabilirsiniz.

Denetim oluşturma ve kullanmayla ilgili genel süreç aşağıdaki gibidir.

  1. Bir denetim oluşturun ve hedefi tanımlayın.

  2. Denetime eşleşen bir sunucu denetim belirtimi veya veritabanı denetim belirtimi oluşturun. Denetim belirtimini etkinleştirin.

  3. Denetimi etkinleştirin.

  4. Windows Olay Görüntüleyicisi, Günlük Dosyası Görüntüleyicisiveya fn_get_audit_file işlevini kullanarak denetim olaylarını okuyun.

Daha fazla bilgi için bkz. Sunucu Denetimi ve Sunucu Denetim Belirtimi Oluşturma ve Sunucu Denetimi ve Veritabanı Denetim Belirtimi Oluşturma.

Dikkat Edilmesi Gerekenler

Denetim başlatma sırasında bir hata olması durumunda sunucu başlatılmaz. Bu durumda, sunucu komut satırındaki -f seçeneği kullanılarak başlatılabilir.

Denetim için ON_FAILURE=SHUTDOWN belirtildiğinden bir denetim hatası sunucunun kapanmasına veya başlatılmamasına neden olduğunda, MSG_AUDIT_FORCED_SHUTDOWN olayı günlüğe yazılır. Kapatma işlemi bu ayarın ilk karşılaşması sırasında gerçekleştiğinden, olay bir kez yazılır. Bu olay, denetim nedeniyle kapatmaya yol açan hata iletisinden sonra yazılır. Yönetici, -m bayrağını kullanarak SQL Server'ı Tek Kullanıcı modunda başlatarak denetim kaynaklı kapatmaları atlayabilir. Tek Kullanıcı modunda başlarsanız, ON_FAILURE=SHUTDOWN'ın bu oturumda ON_FAILURE=CONTINUE olarak çalıştırılacak şekilde belirtildiği tüm denetimleri düşüreceksiniz. SQL Server -m bayrağı kullanılarak başlatıldığında, MSG_AUDIT_SHUTDOWN_BYPASSED iletisi hata günlüğüne yazılır.

Hizmet başlatma seçenekleri hakkında daha fazla bilgi için bkz. Veritabanı Altyapısı Hizmeti Başlangıç Seçenekleri.

Denetim Tanımlı Veritabanı Ekleme

Denetim belirtimine sahip olan ve sunucuda var olmayan bir GUID belirten bir veritabanı eklemek, yalnız bırakılmış denetim belirtimine neden olur. Eşleşen GUID'ye sahip bir denetim sunucu örneğinde olmadığından, hiçbir denetim olayı kaydedilmez. Bu durumu düzeltmek için ALTER DATABASE AUDIT SPECIFICATION komutunu kullanarak yalnız bırakılmış denetim belirtimini mevcut bir sunucu denetimine bağlayın. Alternatif olarak, belirtilen GUID ile yeni bir sunucu denetimi oluşturmak için CREATE SERVER AUDIT komutunu da kullanabilirsiniz.

Sql Server Express gibi SQL Server denetimini desteklemeyen, ancak denetim olaylarını kaydetmeyen başka bir SQL Server sürümüne üzerinde denetim belirtimi tanımlanmış bir veritabanı ekleyebilirsiniz.

Veritabanı Yansıtma ve SQL Server Denetimi

Veritabanı denetim belirtimi tanımlanmış olan ve veritabanı yansıtma kullanan bir veritabanı, veritabanı denetim belirtimini içerir. Yansıtılmış SQL örneğinde düzgün çalışmak için aşağıdaki öğelerin yapılandırılması gerekir:

  • Veritabanı denetim belirtiminin denetim kayıtlarını yazabilmesi için yansıtma sunucusu aynı GUID'e sahip bir denetimi bulundurmalıdır. Bu, kaynak Sunucu Denetimi'nden GUID GUID ile CREATE AUDIT komutu kullanılarak yapılandırılabilir.

  • İkili dosya hedefleri için, yansıtma sunucusu hizmet hesabının denetim kaydının yazıldığı konum için uygun izinlere sahip olması gerekir.

  • Windows olay günlüğü hedefleri için, yansıtma sunucusunun bulunduğu bilgisayardaki güvenlik ilkesi, güvenlik veya Uygulama olay günlüğüne hizmet hesabı erişimine izin vermelidir.

Denetim Yöneticileri

sysadmin sabit sunucu rolünün üyeleri, her veritabanındaki dbo kullanıcısı olarak tanımlanır. Yöneticilerin eylemlerini denetlemek için dbo kullanıcısının eylemlerini denetleyebilirsiniz.

Transact-SQL ile Denetim Oluşturma ve Yönetme

SQL Server Denetiminin tüm yönlerini uygulamak için DDL deyimlerini, dinamik yönetim görünümlerini ve işlevlerini ve katalog görünümlerini kullanabilirsiniz.

Veri Tanımı Dil Deyimleri

Denetim belirtimlerini oluşturmak, değiştirmek ve bırakmak için aşağıdaki DDL deyimlerini kullanabilirsiniz:

DDL deyimleri Açıklama
ALTER AUTHORIZATION Güvenliği sağlanabilir bir öğesinin sahipliğini değiştirir.
ALTER DATABASE AUDIT SPECIFICATION SQL Server Denetim özelliğini kullanarak bir veritabanı denetim belirtimi nesnesini değiştirir.
Sunucu Denetimini Değiştir SQL Server Denetim özelliğini kullanarak bir sunucu denetim nesnesini değiştirir.
ALTER SERVER AUDIT SPECIFICATION SQL Server Denetim özelliğini kullanarak bir sunucu denetim belirtimi nesnesini değiştirir.
CREATE DATABASE AUDIT SPECIFICATION SQL Server denetim özelliğini kullanarak bir veritabanı denetim belirtimi nesnesi oluşturur.
CREATE SERVER AUDIT SQL Server Denetimi kullanarak bir sunucu denetim nesnesi oluşturur.
CREATE SERVER AUDIT SPECIFICATION SQL Server Denetim özelliğini kullanarak bir sunucu denetim belirtimi nesnesi oluşturur.
VERİTABANI DENETİM BELİRTİMİ SİL SQL Server Denetim özelliğini kullanarak bir veritabanı denetim belirtimi nesnesini bırakır.
DROP SERVER AUDIT SQL Server Denetim özelliğini kullanarak bir Sunucu Denetim Nesnesi kaldırır.
SUNUCU DENETİM ÖZELLİĞİNİ DÜŞÜR SQL Server Denetim özelliğini kullanarak, bir sunucu denetim belirtimi nesnesini siler.

Dinamik Görünümler ve İşlevler

Aşağıdaki tabloda, SQL Server Denetimi için kullanabileceğiniz dinamik görünümler ve işlevler listelenmiştir.

Dinamik görünümler ve işlevler Açıklama
sys.dm_audit_actions Denetim günlüğünde bildirilebilen her denetim eylemi ve SQL Server Denetimi kapsamında yapılandırılabilir her denetim eylemi grubu için bir satır döndürür.
sys.dm_server_audit_status Denetimin geçerli durumu hakkında bilgi sağlar.
sys.dm_audit_class_type_map Denetim günlüğündeki class_type alanını sys.dm_audit_actionsiçindeki class_desc alanıyla eşleyen bir tablo döndürür.
fn_get_audit_file Sunucu denetimi tarafından oluşturulan bir denetim dosyasından bilgi döndürür.

Katalog Görünümleri

Aşağıdaki tabloda, SQL Server denetimi için kullanabileceğiniz katalog görünümleri listelenmiştir.

Katalog görünümleri Açıklama
sys.database_audit_specifications (veritabanı denetim özellikleri) Bir sunucu örneğindeki SQL Server denetimindeki veritabanı denetim belirtimleri hakkında bilgi içerir.
sys.database_audit_specification_details Tüm veritabanları için bir sunucu örneğindeki SQL Server denetimindeki veritabanı denetim belirtimleri hakkında bilgi içerir.
sys.server_audits Bir sunucu örneğindeki her SQL Server denetimi için bir satır içerir.
sys.server_audit_specifications Bir sunucu örneği üzerinde SQL Server denetimi kapsamında sunucu denetim belirtimleri hakkında bilgi içerir.
sys.server_audit_specifications_details Bir sunucu örneğindeki SQL Server denetimindeki sunucu denetimi belirtim ayrıntıları (eylemler) hakkında bilgi içerir.
sys.server_file_audits Bir sunucu örneğindeki SQL Server denetiminde dosya denetim türü hakkında genişletilmiş bilgileri depolar.

İzinler

SQL Server Denetimi için her özellik ve komutun ayrı izin gereksinimleri vardır.

Sunucu Denetimi veya Sunucu Denetim Belirtimi oluşturmak, değiştirmek veya bırakmak için sunucu yetkilileri, ALTER ANY SERVER AUDIT veya CONTROL SERVER izinlerine ihtiyaç duyar. Veritabanı Denetim Özelliği oluşturmak, değiştirmek veya kaldırmak için, veritabanında ALTER ANY DATABASE AUDIT iznine veya ALTER ya da CONTROL iznine sahip olunması gerekir. Ayrıca, sorumluların veritabanına bağlanma iznine sahip olması veya HERHANGİ Bİr SUNUCU DENETİmİ veya CONTROL SERVER izinlerini DEĞIŞTIRMEsi gerekir.

HERHANGİ Bİr TANIMI GÖRÜNTÜLE izni, sunucu düzeyi denetim görünümlerini görüntülemek için erişim sağlar ve VIEW DEFINITION veritabanı düzeyinde denetim görünümlerini görüntülemek için erişim sağlar. Bu izinlerin reddedilebilmesi, sorumlunun ALTER ANY SERVER AUDIT veya ALTER ANY DATABASE AUDIT izinlerine sahip olsa bile katalog görünümlerini görüntüleme özelliğini geçersiz kılar.

Hakları ve izinleri verme hakkında daha fazla bilgi için bkz. GRANT (Transact-SQL).

Dikkat

Sysadmin rolündeki yetkililer herhangi bir denetim bileşeniyle oynayabilir ve db_owner rolündekiler veritabanındaki denetim belirtimleriyle oynayabilir. SQL Server Denetimi, denetim belirtimini oluşturan veya değiştiren bir oturum açma işleminin en azından ALTER ANY DATABASE AUDIT iznine sahip olduğunu doğrular. Ancak, bir veritabanı eklediğinizde doğrulama yapmaz. Tüm Veritabanı Denetim Belirtimlerinin yalnızca sysadmin veya db_owner rolündeki sorumlular kadar güvenilir olduğunu varsaymalısınız.

Sunucu Denetimi ve Sunucu Denetim Belirtimi oluşturma

Sunucu Denetimi ve Veritabanı Denetim Belirtimi oluşturma

SQL Server Denetim Günlüğünü Görüntüleme

Sql Server Denetim Olaylarını Güvenlik Günlüğüne Yazma

Sunucu Özellikleri (Güvenlik Sayfası)
SQL Server için oturum açma denetiminin nasıl açılacağını açıklar. Denetim kayıtları Windows uygulama günlüğünde depolanır.

c2 denetim modu Sunucu Yapılandırma Seçeneği
SQL Server'da C2 güvenlik uyumluluğu denetim modunu açıklar.

Güvenlik Denetimi Olay Kategorisi (SQL Server Profil Oluşturucu)
SQL Server Profiler'da kullanabileceğiniz denetim olaylarını açıklar. Daha fazla bilgi için bkz. SQL Server Profiler.

SQL İzleme
SQL Server Profiler yerine el ile izleme oluşturmak için SQL İzleme'nin kendi uygulamalarınızda nasıl kullanılabileceğini açıklar.

DDL Tetikleyicileri
Veritabanlarınızdaki değişiklikleri izlemek için Veri Tanımı Dili (DDL) tetikleyicilerini nasıl kullanabileceğinizi açıklar.

Microsoft TechNet: SQL Server TechCenter: SQL Server 2005 Güvenlik ve Koruma
SQL Server güvenliği hakkında up-totarih bilgileri sağlar.