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. Service Pack 1 ve sonraki sürümleri olan SQL Server 2016'da (13.x), tüm sürümler 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'nın sürümleri ve desteklenen özellikleri.

Nota

Bu makale SQL Server için geçerlidir. SQL Veritabanı için bkz. Azure SQL Veritabanı ve Azure Synapse Analytics için denetim.

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ş Olaylara genel bakış.

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 eylemleri makalesinde açıklanmıştır.

Nota

Performans kısıtlamaları nedeniyle tempdb ve geçici tabloları denetlemeyiz. Geçici tablolara karşı deyimleri yakalayan toplu işlem tamamlanan eylem grubu, nesne adlarını doğru bir şekilde doldurmayabilir. Ancak, kaynak tablo her zaman denetlenerek kaynak tablodan geçici tablolara yapılan tüm eklemelerin kaydedilmesi sağlanı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 bunlar hedefe kaydedilir. 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 eylemleri makalesinde 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 ilkesi eklentisi (secpol.msc) kullanılarak yapılandırılabilir. Windows Vista veya Windows Server 2008'de (ve üzeri), denetim ilkesi programını ( kullanarak komut satırından daha ayrıntılı AuditPol.exe 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, izni olan CONTROL SERVER 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 izinli CONTROL SERVER 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 Denetimi'ne 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üleyicisi veya işlevini kullanarak denetim olaylarını fn_get_audit_file 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 başlamamasına veya kapanmasına neden olduğunda, MSG_AUDIT_FORCED_SHUTDOWN olay günlüğe yazılır. Bu ayar ile ilk karşılaşmada kapatılma gerçekleştiği için olay yalnızca bir kez kaydedilir. 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, bu oturumda ON_FAILURE = SHUTDOWNolarak çalıştırılacak şekilde belirtilen tüm denetimlerin ON_FAILURE = CONTINUE sürümünü düşüreceksiniz. SQL Server bayrağıyla -m başlatıldığında, MSG_AUDIT_SHUTDOWN_BYPASSED ileti 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şlatma seçenekleri.

Denetim tanımlı bir veritabanı ekleme

Denetim belirtimi olan ve sunucuda var olmayan bir GUID belirten bir veritabanı eklemek, yalnız bırakılmış bir 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 kalmış denetim belirtimini mevcut bir sunucu denetimine bağlayın. Veya komutunu kullanarak CREATE SERVER AUDIT belirtilen GUID ile yeni bir sunucu denetimi oluşturun.

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

Veritabanı yansıtma ve SQL Server Denetimi

Veritabanı denetim belirtimi tanımlanmış 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, komutu CREATE AUDIT WITH GUID = <guid-from-source-server-audit>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ı Dili deyimleri

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

DDL deyimleri Açıklama
YETKİ DEĞİŞTİR Güvenlik altına alınabilir bir öğenin sahipliğini değiştirir.
VERİTABANI DENETİM BELİRTİMİ 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.
VERİ TABANI DENETİM BELİRTİMİ OLUŞTUR SQL Server denetim özelliğini kullanarak bir veritabanı denetim belirtimi nesnesi oluşturur.
SERVER DENETİMİ OLUŞTUR SQL Server Denetimi kullanarak bir sunucu denetim nesnesi oluşturur.
Sunucu Denetim Özelliği Oluştur 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 kaldırır.
DROP SERVER AUDIT (sunucu denetimini kaldırma komutu) 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 iş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 (Sunucu denetim şartnameleri) Bir sunucu örneği üzerinde SQL Server denetimi kapsamında sunucu denetim belirtimleri hakkında bilgi içerir.
sys.sunucu_denetime_iliskin_ozellikler_detaylari 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.

Bir Sunucu Denetimi veya Sunucu Denetimi 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 silmek için, veritabanı sorumluları veritabanı üzerinde ALTER ANY DATABASE AUDIT, ALTER veya CONTROL iznine ihtiyaç duyar. Ayrıca, sorumluların veritabanına bağlanma izni veya ALTER ANY SERVER AUDIT ya da CONTROL SERVER izinleri olmalıdır.

İzin, VIEW ANY DEFINITION 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 izinler reddedildiğinde, kişi ALTER ANY SERVER AUDIT veya ALTER ANY DATABASE AUDIT izinlerine sahip olsa bile katalog görünümlerini görüntüleme yeteneği etkisiz hale getirilir.

Hak ve izin verme hakkında daha fazla bilgi için bkz. GRANT.

Dikkat

Sysadmin rolündeki sorumlular herhangi bir denetim bileşenini değiştirebilir ve db_owner rolündeki sorumlular veritabanındaki denetim özelliklerini değiştirebilir. SQL Server Denetimi, denetim belirtimini oluşturan veya değiştiren bir oturum açma işleminin en azından izinlere ALTER ANY DATABASE AUDIT 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.

Makale Açıklama
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.
Sunucu yapılandırması: c2 denetim modu 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 güncel bilgiler sağlar.