5

Próbuję włączyć dostęp do liderów zespołu informacji o wynagrodzeniach poprzez PowerBI, ale szyfrować te dane od innych użytkowników i DBA. Użytkownicy, którym odmówiono dostępu do danych w tej kolumnie, powinni nadal móc wykonać zapytanie, ale widzą tylko zaszyfrowane znaki dotyczące informacji o zarobkach.SQL Server 2016: Ukrywanie danych kolumn z DBA, ale konkretni użytkownicy mogą przeglądać dane za pomocą aplikacji

Używam SQL Server 2016.

Ja testowałem nową „” funkcjonalność zawsze szyfrowane, a to działa idealnie ... ale z tą różnicą, że nie jestem w stanie przekazać „ustawienie szyfrowania kolumny = włączony 'parametr do ciągu połączenia PowerBI. Według wszystkich kont PowerBI nie obsługuje obecnie tej funkcji.

Ja obecnie testuje wykorzystanie szyfrowania kolumny poprzez wykorzystanie szyfrowania poziomie kolumn i symetrycznych kluczy, ale problem polega na tym, że jestem ciężko kodowania otwartego klucz symetryczny SymmetricKey1 & dekodowanie kodu CERTYFIKAT certyfikatu1 do SQL i jeśli użytkownicy nie mają dostępu, błąd powoduje błąd SQL podczas testowania przez użytkownika.

Jestem nowicjuszem w zakresie certyfikatów i szyfrowania i jestem obecnie na stromej ścieżce uczenia się ... więc idź łatwo.

Dzięki

Odpowiedz

1

można użyć dynamicznego maskowania danych.

dynamiczne prace maskujące dane przez maskowanie wyjścia kolumny użytkownikom, którzy nie mają uprawnień .Below przykłady zostały przetestowane na 2016 na podstawie dostarczonych demo tutaj: Exploring SQL Server 2016 Dynamic Data Masking – Part One - Creating a Table that uses Dynamic Data Masking

--create a table 

CREATE TABLE ClientInfo 
    (ClientID int IDENTITY, 
    FirstName varchar(65), 
    LastName varchar(65), 
    PhoneNum bigint 
     MASKED WITH (FUNCTION = 'default()'), 
    EmailAddr varchar(100) 
     MASKED WITH (FUNCTION = 'email()'), 
    CreditCardNum varchar(19) MASKED 
     WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)'), 
    BirthDT date MASKED 
     WITH (FUNCTION = 'default()')); 

INSERT Clientinfo (FirstName, LastName, PhoneNum, EmailAddr,CreditCardNum,BirthDT) VALUES 
('George', 'Washington', 5555814441, 
'[email protected]', '0123-4567-8901-2345','02/22/1732'), 
('Thomas', 'Jefferson', 5559841298, 
'[email protected]', '9999-9999-9999-9999', '04/13/1743'), 
('Abraham', 'Lincoln', 5554070123, 
'[email protected]','0000-1111-2222-3333', '02/12/1809'); 

Teraz spróbuj tylko wybrać i zobaczyć dane, ponieważ jesteś administratorem, będzie zobaczyć wszystkie dane

select * from clientinfo 

teraz starają się ograniczyć uprawnienia do użytkowników, dla których, chcesz ograniczyć przeglądanie

CREATE USER user1 WITHOUT LOGIN; 
GRANT SELECT ON ClientInfo TO user1; 

teraz spróbujmy wykonać jako użytkownika

EXECUTE AS USER = 'AppReader'; 
SELECT * FROM ClientInfo; 
REVERT; 

wykonującego powyższe zapytania, nie pokaże wszystkie dane i zostaną zamaskowane różnie na podstawie zamaskowany functions.See poniżej zrzucie

enter image description here

Aby zapewnić dostęp użytkownikom, można użyć poniższego zapytania:

CREATE USER AppAdmin WITHOUT LOGIN; 
GRANT SELECT ON ClientInfo TO AppAdmin; 
GRANT UNMASK TO AppAdmin; 
+0

Dziękuję TheGameiswar, ale utworzyłem kroki ze standardowym użytkownikiem konta Windows (Admin privleges) bez problemu, ale kiedy loguję się jako główny administrator, to ten użytkownik może przeglądać wszystkie dane. – Mako

+0

Administrator może zobaczyć wszystkie dane, jeden sysadmin nie może być odróżniony od innego sysadmin. Aby to działało, musisz utworzyć użytkowników o najmniejszych zastrzeżeniach, jak wspomniano powyżej – TheGameiswar

+0

Dzięki, ale to jest cała koncepcja funkcji "Zawsze szyfrowane" i ukrywanie danych od zewnętrznych administratorów baz danych, sys adminów lub administratorów w chmurze. – Mako

1

Niestety, AE jest jedynym istniejącym wbudowanym rozwiązaniem, które może zapobiec nieautoryzowanemu dostępowi przez dowolnego użytkownika, w tym administratorów baz danych/sysadmins.

Dynamiczne maskowanie danych chroni przed zwykłymi użytkownikami. Próbka podana powyżej może być łatwo poboczna przez dowolnego użytkownika z dostępem z poziomu administratora.

Szyfrowanie na poziomie kolumny nie chroni użytkowników przed uprawnieniami na poziomie administratora. Właściciel bazy danych lub sysadmin zawsze może otworzyć klucz lub go wymienić. Istnieją sposoby obejścia tego poprzez ekm, ale nic nie jest skalowalne ani użyteczne w twoim scenariuszu.

Fałszywi administratorzy to jeden z przypadków, w których Always Encrypted został zaprojektowany, aby rozwiązać problem, dlatego jest właściwym rozwiązaniem. Jest to coś, co zespół PowerBI musi wdrożyć, więc jeśli ta funkcja jest dla Ciebie ważna, zasugeruj dodanie swojego głosu i komentarzy do forum opinii: https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/14732184-sql-server-2016-always-encription-features