Delen via


Beveiliging op kolomniveau

met Column-Level beveiliging kunnen klanten de toegang tot tabelkolommen beheren op basis van de uitvoeringscontext of groepslidmaatschap van de gebruiker.

Beveiliging op kolomniveau vereenvoudigt het ontwerp en de codering van beveiliging in uw toepassing, zodat u de toegang tot kolommen kunt beperken om gevoelige gegevens te beveiligen. Bijvoorbeeld om ervoor te zorgen dat specifieke gebruikers alleen toegang hebben tot bepaalde kolommen van een tabel die relevant zijn voor hun afdeling. De logica voor toegangsbeperking bevindt zich in de databaselaag in plaats van weg van de gegevens in een andere toepassingslaag. De database past de toegangsbeperkingen toe telkens wanneer gegevenstoegang wordt geprobeerd vanuit een laag. Deze beperking maakt uw beveiliging betrouwbaarder en robuuster door de oppervlakte van uw algehele beveiligingssysteem te verminderen. Bovendien hoeft u met beveiliging op kolomniveau ook geen weergaven te introduceren om kolommen uit te filteren voor het opleggen van toegangsbeperkingen aan de gebruikers.

U kunt beveiliging op kolomniveau implementeren met de T-SQL-syntaxis GRANT-objectmachtigingen . Met dit mechanisme worden zowel SQL-verificatie als Microsoft Entra-id-verificatie (voorheen Azure Active Directory) ondersteund.

Overweeg ook de mogelijkheid om beveiliging op rijniveau af te dwingen voor tabellen, op basis van een WHERE componentfilter.

In het diagram ziet u een schematische tabel met de eerste kolom als kop een gesloten hangslot en de cellen een oranje kleur, terwijl de andere kolommen witte cellen zijn.

Syntax

Met de syntaxis van de GRANT instructie voor objectmachtigingen kunt u machtigingen verlenen aan door komma's gescheiden kolomlijsten in een tabel.

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

Voorbeelden

In het volgende voorbeeld ziet u hoe u de toegang tot de SSN kolom van de Membership tabel kunt beperkenTestUser:

Tabel maken Membership met SSN kolom die wordt gebruikt voor het opslaan van burgerservicenummers:

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);

Toegang tot alle kolommen toestaan TestUser , met uitzondering van de SSN kolom, die de gevoelige gegevens bevat:

GRANT SELECT ON Membership(MemberID, FirstName, LastName, Phone, Email) TO TestUser;

Query's die worden uitgevoerd als TestUser mislukken als ze de SSN kolom bevatten:

SELECT * FROM Membership;

Met de resulterende fout:

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'.

Gebruiksvoorbeelden

Enkele voorbeelden van hoe beveiliging op kolomniveau tegenwoordig wordt gebruikt:

  • Een financiĆ«le dienstverlener staat alleen accountmanagers toe toegang te hebben tot burgerservicenummers (SSN), telefoonnummers en andere persoonsgegevens van klanten.
  • Een zorgverlener staat alleen artsen en verpleegkundigen toegang tot gevoelige medische gegevens toe, terwijl leden van de factureringsafdeling deze gegevens niet kunnen bekijken.

Volgende stappen