Delen via


Beveiliging op kolomniveau

Column-Level beveiliging stelt klanten in staat om de toegang tot tabelkolommen te 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. Zorg er bijvoorbeeld voor dat specifieke gebruikers alleen toegang hebben tot bepaalde kolommen van een tabel die relevant zijn voor hun afdeling. De toegangsbeperkingslogica bevindt zich in de databaselaag in plaats van de gegevens in een andere toepassingslaag. De database past de toegangsbeperkingen toe telkens wanneer gegevenstoegang vanuit elke laag wordt geprobeerd. Deze beperking maakt uw beveiliging betrouwbaarder en robuuster door het oppervlak van uw algehele beveiligingssysteem te verminderen. Bovendien elimineert beveiliging op kolomniveau de noodzaak om weergaven te introduceren om kolommen uit te filteren voor het opleggen van toegangsbeperkingen voor de gebruikers.

U kunt beveiliging op kolomniveau implementeren met de T-SQL-syntaxis van 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 clausefilter.

Diagram toont een schematische tabel met de eerste kolom die wordt geleid door een gesloten hangslot en de cellen een oranje kleur terwijl de andere kolommen witte cellen zijn.

Syntaxis

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 kunt voorkomen dat TestUser toegang krijgt tot de SSN kolom van de Membership tabel:.

Tabel maken Membership met SSN de 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 TestUser tot alle kolommen toestaan, met uitzondering van de SSN kolom, die de gevoelige gegevens bevat:

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

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

Gebruikssituaties

Enkele voorbeelden van hoe beveiliging op kolomniveau 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 toe toegang te krijgen tot gevoelige medische dossiers, terwijl leden van de factureringsafdeling deze gegevens niet mogen bekijken.

Volgende stappen