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.
Şunlar için geçerlidir:Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics (yalnızca ayrılmış SQL havuzları)
Yapı'da SQL veritabanı
Azure SQL Veritabanı, Microsoft Fabric'teki SQL veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics dinamik veri maskeleyi (DDM) destekler. Dinamik veri maskeleme, hassas verilerin görünürlüğünü ayrıcalık sahibi olmayan kullanıcılardan gizler.
Dinamik veri maskeleme, müşterilerin hassas verilerin ne kadarının ortaya çıkarıldığını uygulama katmanı üzerinde en az etkiyle belirlemesini sağlayarak hassas verilere yetkisiz erişimi önlemeye yardımcı olur. Bu, belirlenen veritabanı alanları üzerinde sorgunun sonuç kümesindeki hassas verileri gizleyen, ancak veritabanındaki veriler değiştirilmeyen ilke tabanlı bir güvenlik özelliğidir.
Örneğin, bir çağrı merkezindeki hizmet temsilcisi, e-posta adresinin birkaç karakterini onaylayarak arayan kişi tanımlayabilir, ancak e-posta adresinin tamamı hizmet temsilcisine açıklanmamalıdır. Herhangi bir sorgunun sonuç kümesindeki e-posta adresinin tamamını maskeleyen bir maskeleme kuralı tanımlanabilir. Başka bir örnek olarak, bir geliştiricinin uyumluluk düzenlemelerini ihlal etmeden sorun giderme amacıyla üretim ortamlarını sorgulaması için kişisel verileri korumak için uygun bir veri maskesi tanımlanabilir.
Dinamik veri maskeleme temelleri
Azure SQL Veritabanı için, SQL Veritabanı yapılandırma bölmenizdeki Güvenlik'in altındaki Dinamik Veri Maskeleme bölmesini seçerek Azure portalında bir dinamik veri maskeleme ilkesi ayarlarsınız.
Bu özellik, SQL Yönetilen Örneği için Azure portalı veya Doku'daki SQL veritabanı kullanılarak ayarlanamaz. Bunun yerine, bu makaledeki Ayrıntılı izin örneğinde olduğu gibi Transact-SQL (T-SQL) kullanın. Daha fazla bilgi için bkz . Dinamik veri maskeleme.
Dinamik veri maskeleme ilkesi
Maskelemenin dışında tutulan SQL kullanıcıları: Microsoft Entra ID kimliklerini içerebilen ve SQL sorgu sonuçlarında maskelenmemiş veriler alan SQL kullanıcılarından oluşan bir dizi. Sunucu yöneticisi, Microsoft Entra admin ve db_owner rolü gibi yönetici haklarına sahip kullanıcılar özgün verileri maske olmadan görüntüleyebilir. (Not: SQL Server'daki sysadmin rolü için de geçerlidir)
Maskeleme kuralları: Maskelenecek belirlenen alanları ve kullanılan maskeleme işlevini tanımlayan bir kural kümesi. Ayrılan alanlar veritabanı şeması adı, tablo adı ve sütun adı kullanılarak tanımlanır.
Maskeleme işlevleri: Farklı senaryolar için verilerin açığa çıkışının denetlendiği bir yöntem kümesi.
Maskeleme işlevi Maskeleme mantığı Varsayılan Belirlenen alanların veri türlerine göre tam maskeleme
Alanın boyutu dize veri türleri için 4 karakterden azsa (veya daha az) kullanınXXXX(nchar, ntext, nvarchar).
Sayısal veri türleri için sıfır değeri kullanın (bigint, bit, ondalık, int, para, sayısal, smallint, smallmoney, tinyint, float, real).
Tarih/saat veri türleri (1900-01-01, datetime2, datetime, datetimeoffset, smalldatetime, time) için kullanın.
sql_variant için geçerli türün varsayılan değeri kullanılır.
XML için belge<masked />kullanılır.
Özel veri türleri (zaman damgası, tablo, HierarchyID, uniqueidentifier, ikili, görüntü, varbinary ve uzamsal türler) için boş bir değer kullanın.Kredi kartı Belirlenen alanların son dört basamağını kullanıma sunan ve kredi kartı biçiminde ön ek olarak sabit bir dize ekleyen maskeleme yöntemi. XXXX-XXXX-XXXX-1234E-posta İlk harfi kullanıma sunan ve e-posta adresi biçiminde sabit bir dize ön eki kullanarak etki alanını XXX.com ile değiştiren maskeleme yöntemi. aXX@XXXX.comRastgele sayı Seçilen sınırlara ve gerçek veri türlerine göre rastgele bir sayı oluşturan maskeleme yöntemi. Belirlenen sınırlar eşitse maskeleme işlevi sabit bir sayıdır.
Özel metin İlk ve son karakterleri kullanıma sunan ve ortaya özel bir doldurma dizesi ekleyen maskeleme yöntemi. Özgün dize, kullanıma sunulan ön ekten ve son ekten daha kısaysa, yalnızca doldurma dizesi kullanılır. prefix[padding]suffix
Tarih saat Tarih/saat sütunları(datetime, datetime2, date, time, datetimeoffset ve smalldatetime) için ayrıntılı maskeleme sağlar. Yıl (), ay (), gün ( datetime("Y")), saat (datetime("M")datetime("D")), dakika (datetime("h")datetime("m")) veya saniye (datetime("s")) gibi belirli bileşenleri maskeleyebilirsiniz. Bu işlevi T-SQL kullanarak uygularsınız.
Örneğin:
- Maske yılı:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
- Maske ayı:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
- Maske dakikası:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').
Maskelenmesi önerilen alanlar
DDM öneri altyapısı, veritabanınızdaki belirli alanları hassas olabilecek alanlar olarak işaretleyerek maskeleme için iyi adaylar olabilir. Portaldaki Dinamik Veri Maskeleme bölmesinde veritabanınız için önerilen sütunları görürsünüz. Bir veya daha fazla sütun için Maske Ekle'yi seçin, ardından uygun maskeleme işlevini seçin ve kaydet'i seçerek bu alanlara maske uygulayın.
T-SQL kullanarak dinamik veri maskelemesini yönetme
- Dinamik veri maskesi oluşturmak için bkz . Dinamik Veri Maskesi Oluşturma.
- Mevcut bir sütuna maske eklemek veya düzenlemek için bkz . Mevcut Sütunda Maske Ekleme veya Düzenleme.
- Maskelenmemiş verileri görüntüleme izinleri vermek için bkz . Maskelenmemiş Verileri Görüntüleme İzinleri Verme.
- Dinamik veri maskesini bırakmak için bkz . Dinamik Veri Maskesi Bırakma.
PowerShell cmdlet'lerini kullanarak veritabanınız için dinamik veri maskeleme ayarlama
Veri maskeleme ilkeleri
Veri maskeleme kuralları
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
REST API kullanarak veritabanınız için dinamik veri maskeleme ayarlama
Veri maskeleme ilkesini ve kurallarını program aracılığıyla yönetmek için REST API'yi kullanabilirsiniz. Yayımlanan REST API aşağıdaki işlemleri destekler:
Veri maskeleme ilkeleri
- Oluştur veya Güncelleştir: Veritabanı veri maskeleme ilkesi oluşturur veya güncelleştirir.
- Get: Veritabanı veri maskeleme ilkesini alır.
Veri maskeleme kuralları
- Oluştur veya Güncelleştir: Veritabanı veri maskeleme kuralı oluşturur veya güncelleştirir.
- Veritabanına Göre Listele: Veritabanı veri maskeleme kurallarının listesini alır.
İzinler
Dinamik veri maskeleme işlemini aşağıdaki yerleşik rollerle yapılandırabilirsiniz:
Dinamik veri maskeleme kullanmak için gerekli eylemler şunlardır:
Okuma/Yazma:
Microsoft.Sql/servers/databases/dataMaskingPolicies/*
Okuma:
Microsoft.Sql/servers/databases/dataMaskingPolicies/read
Yazmak:
Microsoft.Sql/servers/databases/dataMaskingPolicies/write
T-SQL komutuyla dinamik veri maskeleme kullanırken izinler hakkında daha fazla bilgi edinmek için bkz . İzinler.
Ayrıntılı izin örneği
Hassas verilere yetkisiz erişimi engelleyin ve veritabanının farklı düzeylerinde yetkisiz bir kullanıcıya maskeleyerek denetimi elde edin. Herhangi bir veritabanı kullanıcısına veya rolüne veritabanı düzeyinde, şema düzeyinde, tablo düzeyinde veya sütun düzeyinde izinler verebilir veya iptal UNMASK edebilirsiniz. Microsoft Entra kimlik doğrulaması ile birlikte Azure UNMASK ortamınızda tutulan kullanıcılar, gruplar ve uygulamalar için izinler yönetilebilir. İzin, UNMASK veritabanında depolanan verilere yetkisiz erişimi denetlemek ve sınırlamak ve veri güvenliği yönetimini geliştirmek için ayrıntılı bir yol sağlar.
Kullanıcı tablolarını içerecek şema oluşturma:
CREATE SCHEMA Data; GOMaskelenmiş sütunlarla tablo oluşturma:
CREATE TABLE Data.Membership ( MemberID INT IDENTITY (1, 1) NOT NULL, FirstName VARCHAR (100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL, LastName VARCHAR (100) NOT NULL, Phone VARCHAR (12) MASKED WITH (FUNCTION = 'default()') NULL, Email VARCHAR (100) MASKED WITH (FUNCTION = 'email()') NOT NULL, DiscountCode SMALLINT MASKED WITH (FUNCTION = 'random(1, 100)') NULL, BirthDay DATETIME MASKED WITH (FUNCTION = 'default()') NULL );Örnek veri ekleme:
INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) VALUES ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'), ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5, '1990-05-14 11:30:00'), ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50, '2004-02-29 14:20:10'), ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40, '1990-03-01 06:00:00');Hizmet tablolarını içerecek şema oluşturma:
CREATE SCHEMA Service; GOMaskelenmiş sütunlarla hizmet tablosu oluşturma:
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY (1, 1) NOT NULL, Feedback VARCHAR (100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );Örnek veri ekleme:
INSERT INTO Service.Feedback (Feedback, Rating, Received_On) VALUES ('Good', 4, '2022-01-25 11:25:05'), ('Excellent', 5, '2021-12-22 08:10:07'), ('Average', 3, '2021-09-15 09:00:00');Veritabanında farklı kullanıcılar oluşturun:
CREATE USER ServiceAttendant WITHOUT LOGIN; GO CREATE USER ServiceLead WITHOUT LOGIN; GO CREATE USER ServiceManager WITHOUT LOGIN; GO CREATE USER ServiceHead WITHOUT LOGIN; GOVeritabanındaki kullanıcılara okuma izinleri verin:
ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; ALTER ROLE db_datareader ADD MEMBER ServiceLead; ALTER ROLE db_datareader ADD MEMBER ServiceManager; ALTER ROLE db_datareader ADD MEMBER ServiceHead;Kullanıcılara farklı
UNMASKizinler verin:için sütun düzeyi
UNMASKizni verinServiceAttendant:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;ServiceLeadiçin tablo düzeyiUNMASKiznini ver.GRANT UNMASK ON Data.Membership TO ServiceLead;Şema düzeyi
UNMASKizniniServiceManageriçin verin.GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;Veritabanı düzeyinde
UNMASKizniniServiceHeadkullanıcısına ver.GRANT UNMASK TO ServiceHead;
Kullanıcı
ServiceAttendantbağlamı altındaki verileri sorgula:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Kullanıcı
ServiceLeadbağlamı altındaki verileri sorgula:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Kullanıcı
ServiceManagerbağlamı altındaki verileri sorgula:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Verileri kullanıcı bağlamı altında sorgulama
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;İzinleri iptal
UNMASKetmek için aşağıdaki T-SQL deyimlerini kullanın:REVOKE UNMASK ON Data.Membership (FirstName) FROM ServiceAttendant; REVOKE UNMASK ON Data.Membership FROM ServiceLead; REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; REVOKE UNMASK FROM ServiceHead;