Zamansal tablo güvenliği

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL VeritabanıAzure SQL Yönetilen ÖrneğiSQL database in Microsoft Fabric

Zaman tablolarını güvence altına almak için, onlara uygulanan güvenlik ilkelerini anlamanız gerekir. Bu ilkeleri anladıktan sonra, , ALTER TABLE, ve SELECT ifadelerine güvenlik CREATE TABLEuygulayabilirsiniz.

Güvenlik ilkeleri

Aşağıdaki tabloda, zamana bağlı tablolar için geçerli olan güvenlik ilkeleri açıklanmaktadır:

Principle Description
Sistem sürümünü etkinleştirme/devre dışı bırakma, etkilenen nesnelerde en yüksek ayrıcalıkları gerektirir SYSTEM_VERSIONING etkinleştirilmesi ve devre dışı bırakılması için hem geçerli hem de geçmiş tablosunda CONTROL izni gerekir.
Geçmiş verileri doğrudan değiştirilemez SYSTEM_VERSIONING, ON olduğunda, kullanıcılar geçerli ya da geçmiş tablo üzerindeki izinlerinden bağımsız olarak geçmiş verilerini değiştiremez. Bu sınırlama hem veri hem de şema değişikliklerini içerir. 1
Geçmiş verilerini sorgulamak için geçmiş tablosunda SELECT izni gerekir Geçerli tabloda SELECT izni olan bir kullanıcının, geçmiş tablosunda otomatik olarak SELECT izni yoktur.
Denetim, geçmiş tablosunu etkileyen işlemleri belirli şekillerde gösterir Geçerli tablodaki denetim ayarları, geçmiş tablosuna otomatik olarak uygulanmaz. Geçmiş tablosu için denetimi açıkça etkinleştirmelisiniz. Etkinleştirdikten sonra, geçmiş tablosunda denetim, başarılı olup olmadıklarına bakmadan veriye doğrudan erişim girişimlerini yakalar.

SELECT Zamansal sorgu uzantısı ile işlemin geçmiş tablosunu etkilediğini gösterir.

CREATE/ALTER zamansal tablo, izin denetiminin geçmiş tablosunda da gerçekleştiği bilgisini gösterir. Denetim dosyası, geçmiş tablosu için ek kayıtlar içerir.

Mevcut tablodaki veri işleme dili (DML) işlemleri, işlemin geçmiş tablosunu etkilediğini ortaya koymakta, additional_information ancak gerekli bağlamı sağladığını ortaya koymaktadır (DML sonucudur SYSTEM_VERSIONING).

1 Geçerli tablo ve geçmiş tablosu üzerinde ALTER izniniz varsa ve geçerli tablodan bir sütunu kaldırırsanız, geçmiş tablosundaki ilişkili sütun da SYSTEM_VERSIONINGON olsa bile kaldırılır.

Şema işlemlerini gerçekleştirme

SYSTEM_VERSIONING ONolarak ayarlandığında şema değiştirme işlemleri sınırlıdır.

Yasaklanan ALTER SCHEMA operasyonlar

Operation Geçerli tablo Geçmiş tablosu
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION Yalnızca SWITCH IN (bkz. Zamansal tablolar içeren bölüm) Yalnızca SWITCH OUT (bkz. Zamansal tablolar içeren bölüm)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

İzin verilen ALTER TABLE işlemler

Operation Current History
ALTER TABLE...REBUILD İzin verilmiş (bağımsız olarak) İzin verilmiş (bağımsız olarak)
CREATE INDEX İzin verilmiş (bağımsız olarak) İzin verilmiş (bağımsız olarak)
CREATE STATISTICS İzin verilmiş (bağımsız olarak) İzin verilmiş (bağımsız olarak)

CREATE zamana bağlı tablo deyiminin güvenliği

Feature Yeni geçmiş tablosu oluşturma Mevcut geçmiş tablosunu yeniden kullanma
İzin gerekiyor Veritabanında izin CREATE TABLE

ALTER güncel ve geçmiş tablolarını oluşturduğunuz şemalar için izin
Veritabanında izin CREATE TABLE

ALTER mevcut tabloyu oluşturduğunuz şema için izin.

Geçici tablo oluşturulurken CONTROL deyiminin parçası olarak belirtilen geçmiş tablosu üzerindeki CREATE TABLE izni.
Audit Denetim, kullanıcıların iki nesne oluşturmayı denediğini gösterir. İşlem, veritabanında tablo oluşturma izninin olmaması veya her iki tablo için şemaları değiştirme izninin olmaması nedeniyle başarısız olabilir. Denetim, zamansal tablonun oluşturulduğunu gösterir. Veritabanında tablo oluşturma izni olmaması, geçici tablo şemasını değiştirme izinlerinin olmaması veya geçmiş tablosunda izin olmaması nedeniyle işlem başarısız olabilir.

ALTER zamansal tablo SET (SYSTEM_VERSIONING) ifadesinin güvenliği

Feature Yeni geçmiş tablosu oluşturma Mevcut geçmiş tablosunu yeniden kullanma
İzin gerekiyor Veritabanında CONTROL izni.

Veritabanında CREATE TABLE izni.

ALTER geçmiş tablosunu oluşturduğunuz şemalar üzerinde izin.
CONTROL Değiştirdiğiniz özgün tablo üzerinde izniniz olmalıdır.

CONTROL deyiminin parçası olarak belirtilen geçmiş tablosunda ALTER TABLE izni.
Audit Denetim, zamana bağlı tablonun değiştirildiğini ve geçmiş tablosunun aynı anda oluşturulduğunu gösterir. Bu işlem, veritabanında tablo oluşturma izninin olmaması, geçmiş tablosunun şemasını değiştirme izninin olmaması veya zamansal tabloyu değiştirme izni olmaması nedeniyle başarısız olabilir. Denetim, zamana bağlı tablonun değiştirildiğini, ancak işlemin geçmiş tablosuna erişim gerektirdiğini gösterir. Geçmiş tablosunda izin olmaması veya geçerli tablodaki izinlerin olmaması nedeniyle işlem başarısız olabilir.

SELECT deyiminin güvenliği

geçmiş tablosunu etkilemeyen SELECT deyimleri için SELECT izni değişmeden kalır. Geçmiş tablosunu etkileyen SELECT deyimler için, hem geçerli tablo hem de geçmiş tablosu üzerinde SELECT iznine sahip olmanız gerekir.