Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zabezpieczenia Column-Level umożliwiają klientom kontrolę dostępu do kolumn tabeli na podstawie kontekstu wykonywania użytkownika lub członkostwa w grupie.
Zabezpieczenia na poziomie kolumn upraszczają projektowanie i kodowanie zabezpieczeń w aplikacji, co pozwala ograniczyć dostęp do kolumn w celu ochrony poufnych danych. Na przykład upewnienie się, że konkretni użytkownicy mogą uzyskiwać dostęp tylko do niektórych kolumn tabeli, które są odpowiednie dla ich działu. Logika ograniczeń dostępu znajduje się w warstwie bazy danych, a nie z dala od danych w innej warstwie aplikacji. Baza danych stosuje ograniczenia dostępu za każdym razem, gdy jest podejmowana próba dostępu do danych z dowolnej warstwy. To ograniczenie sprawia, że bezpieczeństwo jest bardziej niezawodne i niezawodne dzięki zmniejszeniu obszaru powierzchni ogólnego systemu zabezpieczeń. Ponadto zabezpieczenia na poziomie kolumny eliminują również potrzebę wprowadzenia widoków w celu filtrowania kolumn w celu nałożenia ograniczeń dostępu dla użytkowników.
Zabezpieczenia na poziomie kolumn można zaimplementować za pomocą GRANT Object Permissions składni języka T-SQL. Dzięki temu mechanizmowi obsługiwane są zarówno uwierzytelnianie SQL, jak i Microsoft Entra ID (wcześniej Azure Active Directory).
Należy również rozważyć możliwość wymuszania zabezpieczeń na poziomie wiersza na tabelach, opierając się na filtrze klauzuli WHERE.
Składnia
Składnia instrukcji GRANT dla uprawnień obiektu umożliwia udzielanie uprawnień do list kolumn rozdzielanych przecinkami w tabeli.
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
Przykłady
W poniższym przykładzie pokazano, jak ograniczyć TestUser dostęp do SSN kolumny Membership tabeli:
Utwórz tabelę Membership z kolumną SSN używaną do przechowywania numerów ubezpieczenia społecznego:
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);
Zezwalaj TestUser na dostęp do wszystkich kolumn z wyjątkiem dla kolumny SSN zawierającej poufne dane:
GRANT SELECT ON Membership(MemberID, FirstName, LastName, Phone, Email) TO TestUser;
Zapytania wykonywane jako TestUser kończą się niepowodzeniem, jeśli zawierają kolumnę SSN:
SELECT * FROM Membership;
Wraz z wystąpieniem powstałego błędu:
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'.
Przypadki użycia
Kilka przykładów użycia zabezpieczeń na poziomie kolumny dzisiaj:
- Firma świadcząca usługi finansowe umożliwia tylko menedżerom kont dostęp do numerów ubezpieczenia społecznego klienta (SSN), numerów telefonów i innych danych osobowych.
- Dostawca opieki zdrowotnej umożliwia tylko lekarzom i pielęgniarkom dostęp do poufnych dokumentacji medycznej, jednocześnie uniemożliwiając członkom działu rozliczeniowego wyświetlanie tych danych.