Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Applies to:SQL Server
Azure SQL Managed Instance
Auditing, SQL Server Veritabanı Motorunun bir örneği veya tek bir veritabanında, Veritabanı Motoru üzerinde gerçekleşen olayları izlemeyi ve kaydetmeyi içerir. SQL Server denetimi, sunucu düzeyindeki 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.
SQL Server için, devlet veya kurulumunuzun standartlarına 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.
Bu makale SQL Server ve Azure SQL Managed Instance için geçerlidir.
- SQL Server tüm sürümleri sunucu düzeyinde denetimleri destekler. Service Pack 1 ve sonraki sürümleriyle SQL Server 2016 (13.x) sürümünde, tüm sürümler veritabanı düzeyinde denetimleri destekler. SQL Server 2016 (13.x) öncesinde 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 ve desteklenen özellikleri.
- Azure SQL Managed Instance içinde SQL Server Denetimi desteklenir ve Azure SQL Managed Instance veritabanları ile SQL Server'daki veritabanları arasında farklar vardır.
- SQL Veritabanı denetimi hakkında ayrıntılar için Azure SQL Veritabanı Denetimi bölümüne bakın.
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ştirilen bir rapor tanımının rapor oluşturması gibi, denetim olarak adlandırılan bir çıktı oluşturmak için birleştirilir.
SQL Server denetim, denetim oluşturmaya yardımcı olmak için Extended Events 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, sunucu veya veritabanı düzeyinde eylemlerin tek bir örneğini ve izlenecek eylem gruplarını 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ı Motoru'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 denetlenmiyor. 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
Database Denetim Belirtimi nesnesi de 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. Audit 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
Denetimin sonuçları bir dosya, Windows Security olay günlüğü veya Windows Uygulama olay günlüğü olabilecek bir hedefe gönderilir. 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 Uygulama olay günlüğünü okuyabilir ve yazabilir. Uygulama olay günlüğü, Windows Security olay günlüğünden daha düşük izinler gerektirir ve Windows Security olay günlüğünden daha az güvenlidir.
Windows Security günlüğüne yazmak için SQL Server hizmet hesabının Genel güvenlik denetimleri 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 ilkesini ayarlayabilirsiniz. Windows Security 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. Event Viewer Overview. 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 hesap 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.
Database Engine bir dosyaya yazarken bile, diğer Windows kullanıcılar izinleri varsa denetim dosyasını okuyabilir. Database Engine, okuma işlemlerini engelleyen özel bir kilit almaz.
Database Engine dosyaya erişebildiği için CONTROL SERVER iznine sahip SQL Server oturumları, denetim dosyalarına erişmek amacıyla Database Engine'i kullanabilir. SQL Server 2022 (16.x) ve sonraki sürümlerinde VIEW SERVER SECURITY AUDIT izni, fn_get_audit_file kullanarak denetim dosyalarını okumak için yeterlidir. 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, denetim dosyasına SQL Server aracılığıyla erişen CONTROL SERVER iznine sahip oturum açma bilgilerini kaydeder. İzinler hakkında fn_get_audit_file daha fazla bilgi için bkz. sys.fn_get_audit_file.
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 Database Engine 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.
Hedefe yazılan denetim kayıtları hakkında daha fazla bilgi için bkz. SQL Server Denetim Kayıtları.
SQL Server Denetimi 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 Event Viewer yardımcı programını kullanarak Windows olay günlüklerini okuyabilirsiniz. Dosya hedefleri için, hedef dosyayı okumak amacıyla SQL Server Management Studio'daki Günlük Dosyası Görüntüleyicisi veya fn_get_audit_file işlevini kullanabilirsiniz.
Denetim oluşturma ve kullanmayla ilgili genel süreç aşağıdaki gibidir.
- Bir denetim oluşturun ve hedefi tanımlayın.
- Denetime eşleşen bir sunucu denetim belirtimi veya veritabanı denetim belirtimi oluşturun. Denetim belirtimini etkinleştirin.
- Denetimi etkinleştirin.
- Windows Event Viewer, Log Dosya Görüntüleyicisi veya
fn_get_audit_fileiş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 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 tek kullanıcı modunda SQL Server 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 -m bayrağıyla 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. Database Engine Hizmet başlatma seçenekleri.
Azure SQL Managed Instance'da iç işlemler
- Azure SQL Database ve Azure SQL Managed Instance'da,
SQLDBControlPlaneFirstPartyApptarafından başlatılan olaylar, Azure SQL Database kontrol düzleminin iç Azure işlevidir.SQLDBControlPlaneFirstPartyApptarafından başlatılan olaylar, SQL altyapısı ile Azure Resource Manager arasındaki iç eşitleme işleminin bir parçasıdır. Bu olaylar kaynak yönetiminin normal bir parçasıdır ve Azure doğru kaynak gösterimi ve işlemi için gereklidir.
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 denetimi 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.
Yönetici etkinliğini denetleme
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.
İzinler
SQL Server Denetimi için her özellik ve komut ayrı ayrı izin gereksinimlerine sahiptir.
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.
fn_get_audit_file kullanarak denetim verilerini okumak için, SQL Server 2019 (15.x) ve önceki sürümleri sunucuda CONTROL SERVER izni gerektirirken, SQL Server 2022 (16.x) ve sonraki sürümler için VIEW SERVER SECURITY AUDIT izni gerekir. Daha fazla bilgi için bkz. sys.fn_get_audit_file.
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 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.
Transact-SQL ile denetim oluşturma ve yönetme
SQL Server Denetimi'nin 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 Denetimi özelliğini kullanarak bir veritabanı denetim belirtimi nesnesini değiştirir. |
| Sunucu Denetimini Değiştir |
SQL Server Denetimi özelliğini kullanarak bir sunucu denetim nesnesini değiştirir. |
| SUNUCU DENETİM ÖZELLİĞİNİ DEĞİŞTİR | SQL Server Denetimi ö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 Denetimi özelliğini kullanarak bir sunucu denetim belirtimi nesnesi oluşturur. |
| VERİTABANI DENETİM BELİRTİMİ SİL | SQL Server Denetimi özelliğini kullanarak bir veritabanı denetim spesifikasyonunu siler. |
| DROP SERVER AUDIT (sunucu denetimini kaldırma komutu) | SQL Server Denetimi özelliğini kullanarak bir Sunucu Denetim Nesnesi kaldırır. |
| SUNUCU DENETİM ÖZELLİĞİNİ DÜŞÜR | SQL Server Denetimi özelliğini kullanarak bir sunucu denetim belirtimi nesnesini kaldırır. |
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 listeleniyor.
| 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 denetim için kullanabileceğiniz katalog görünümleri listeleniyor.
| 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 denetiminde 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ğindeki SQL Server denetiminde sunucu denetim belirtimleri hakkında bilgi içerir. |
| sys.sunucu_denetime_iliskin_ozellikler_detaylari | Bir sunucu örneğindeki SQL Server denetiminde sunucu denetim belirtimi ayrıntıları (eylemler) hakkında bilgi içerir. |
| sys.server_file_audits | Dosya denetim türü hakkındaki genişletilmiş bilgileri bir sunucu örneğindeki SQL Server denetiminde depolar. |