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.

Diyagramda, ilk sütun kapalı bir asma kilit ve hücreleri turuncu renk, diğer sütunlar ise beyaz hücreler şeklinde olan şematik tablo gösterilir.

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.

Sonraki adımlar