Sütun düzeyi güvenlik
Column-Level güvenlik, müşterilerin tablo sütunlarına erişimi kullanıcının yürütme bağlamı veya grup üyeliğine göre denetlemesine olanak tanır.
Sütun düzeyinde güvenlik, uygulamanızda güvenliğin tasarımını ve kodlamasını basitleştirerek hassas verileri korumak için sütun erişimini kısıtlamanıza olanak sağlar. Örneğin, belirli kullanıcıların departmanlarıyla ilgili bir tablonun yalnızca belirli sütunlarına erişebilmesini sağlama. Erişim kısıtlama mantığı, başka bir uygulama katmanındaki verilerden uzakta değil veritabanı katmanında bulunur. Veritabanı, herhangi bir katmandan veri erişimi denenişinde erişim kısıtlamalarını uygular. Bu kısıtlama, genel güvenlik sisteminizin yüzey alanını azaltarak güvenliğinizi daha güvenilir ve sağlam hale getirir. Ayrıca sütun düzeyinde güvenlik, kullanıcılara erişim kısıtlaması uygulamak için sütunları filtrelemek için görünümler ekleme gereksinimini de ortadan kaldırır.
GRANT Nesne İzinleri T-SQL söz dizimi ile sütun düzeyinde güvenlik uygulayabilirsiniz. Bu mekanizmayla hem SQL kimlik doğrulaması hem de Microsoft Entra kimliği (eski adıyla Azure Active Directory) kimlik doğrulaması desteklenir.
Ayrıca, bir WHERE
yan tümce filtresine göre tablolarda Satır düzeyi güvenliği zorunlu kılma özelliğini de göz önünde bulundurun.
Syntax
Nesne izinleri deyiminin GRANT
söz dizimi, tablodaki virgülle ayrılmış sütun listelerine izinler verilmesini sağlar.
GRANT <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS <database_principal> ]
<permission> ::=
SELECT
| UPDATE
<database_principal> ::=
Database_user
| Database_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
Örnekler
Aşağıdaki örnekte tablonun sütununa erişimin SSN
nasıl kısıtlanması TestUser
gösterilmektedirMembership
:
Sosyal güvenlik numaralarını depolamak için kullanılan sütunlu SSN
bir tablo oluşturunMembership
:
CREATE TABLE Membership
(MemberID int IDENTITY,
FirstName varchar(100) NULL,
SSN char(9) NOT NULL,
LastName varchar(100) NOT NULL,
Phone varchar(12) NULL,
Email varchar(100) NULL);
Hassas verilere sahip olan sütun dışındakiSSN
tüm sütunlara erişmeye izin verTestUser
:
GRANT SELECT ON Membership(MemberID, FirstName, LastName, Phone, Email) TO TestUser;
Şu sütunu içeren sorgular başarısız olarak TestUser
yürütülür SSN
:
SELECT * FROM Membership;
Sonuçta oluşan hatayla:
Msg 230, Level 14, State 1, Line 12
The SELECT permission was denied on the column 'SSN' of the object 'Membership', database 'CLS_TestDW', schema 'dbo'.
Uygulama alanları
Sütun düzeyinde güvenliğin bugün nasıl kullanıldığına dair bazı örnekler:
- Finansal hizmetler şirketi yalnızca hesap yöneticilerinin müşteri sosyal güvenlik numaralarına (SSN), telefon numaralarına ve diğer kişisel verilere erişmesine izin verir.
- Sağlık hizmeti sağlayıcısı, yalnızca doktorların ve hemşirelerin hassas tıbbi kayıtlara erişmesine izin verirken faturalama departmanı üyelerinin bu verileri görüntülemesini engeller.