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