5

Tôi đang cố gắng cho phép truy cập vào các nhà lãnh đạo nhóm thông tin tiền lương thông qua PowerBI, nhưng mã hóa dữ liệu này từ người dùng khác và DBA. Người dùng từ chối truy cập vào dữ liệu cột này vẫn có thể thực hiện truy vấn nhưng chỉ thấy các ký tự được mã hóa cho thông tin tiền lương.SQL Server 2016: Ẩn dữ liệu cột từ DBA nhưng người dùng cụ thể có thể xem dữ liệu qua ứng dụng

Tôi đang sử dụng SQL Server 2016.

Tôi đã thử nghiệm 'Luôn được mã hóa' tính năng mới, và các công trình này một cách hoàn hảo ... nhưng với ngoại lệ mà tôi không thể vượt qua cài đặt 'cột mã hóa = kích hoạt 'tham số đến chuỗi kết nối PowerBI. Bởi tất cả các tài khoản PowerBI hiện không hỗ trợ chức năng này.

Tôi hiện đang thử nghiệm việc sử dụng mã hóa cột thông qua việc sử dụng mã hóa cấp độ cột và khóa đối xứng, nhưng vấn đề với điều này là tôi khó mã hóa mã OPEN SYMMETRIC KEY SymmetricKey1 & DECRYPTION BY CERTIFICATE Certificate1 vào SQL và nếu người dùng không có quyền truy cập thì lỗi sẽ khiến SQL thất bại khi được kiểm tra bởi người dùng.

Tôi mới sử dụng chứng chỉ và mã hóa và hiện tại tôi đang ở trên một đường cong học tập dốc ... vì vậy hãy dễ dàng với tôi.

Cảm ơn

Trả lời

1

bạn có thể sử dụng mặt nạ dữ liệu động.

động tác dữ liệu mặt nạ bằng mặt nạ ra cột cho người dùng, những người không có quyền .Below ví dụ đã được thử nghiệm trên 2016 dựa trên bản demo cung cấp ở đây: 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'); 

Bây giờ cố gắng chỉ cần chọn và xem dữ liệu, vì bạn là một quản trị viên, bạn sẽ được xem tất cả dữ liệu

select * from clientinfo 

bây giờ cố gắng để hạn chế quyền tới người dùng, bạn muốn hạn chế xem

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

bây giờ cho phép cố gắng thực hiện như thành viên này

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

thực hiện trên truy vấn, sẽ không hiển thị tất cả dữ liệu và sẽ được đeo mặt nạ khác nhau dựa trên functions.See đeo mặt nạ dưới đây screenshot

enter image description here

Để cung cấp quyền truy cập cho người dùng, bạn có thể sử dụng truy vấn bên dưới

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

Cảm ơn TheGameiswar, nhưng tôi đã tạo các bước với người dùng tài khoản Windows chuẩn (Admin privleges) mà không có vấn đề nhưng khi tôi đăng nhập như là quản trị chính 'sa' người dùng này có thể xem tất cả các dữ liệu. – Mako

+0

Quản trị viên có thể xem tất cả dữ liệu, một sysadmin không thể được phân biệt với một sysadmin khác. Để làm việc này, bạn phải tạo người dùng có ít quyền riêng tư như đã đề cập ở trên – TheGameiswar

+0

Cảm ơn, nhưng đây là toàn bộ khái niệm về chức năng 'Luôn mã hóa' và ẩn dữ liệu từ các DBA bên ngoài, quản trị viên của sys hoặc quản trị viên đám mây. – Mako

1

Thật không may, AE là giải pháp tích hợp sẵn có duy nhất có thể ngăn chặn bất kỳ người dùng nào truy cập trái phép, bao gồm cả DBAs/sysadmins.

Che giấu dữ liệu động bảo vệ người dùng thông thường. Mẫu được cung cấp ở trên dễ dàng được phụ thuộc bởi bất kỳ người dùng nào có quyền truy cập cấp quản trị.

Mã hóa cấp cột thường không bảo vệ chống lại người dùng có quyền cấp quản trị. Một chủ sở hữu DB hoặc sysadmin luôn có thể mở khóa hoặc thay thế nó. Có giải pháp cho điều này thông qua ekm nhưng không có khả năng mở rộng hoặc có thể sử dụng trong kịch bản của bạn.

Quản trị viên giả mạo là một trong các trường hợp sử dụng Luôn được mã hóa được thiết kế để giải quyết để giải pháp phù hợp. Đây là điều mà nhóm PowerBI cần triển khai, do đó, nếu tính năng này quan trọng đối với bạn, hãy đề nghị bạn thêm phiếu bầu và nhận xét vào diễn đàn phản hồi của họ: https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/14732184-sql-server-2016-always-encription-features

Các vấn đề liên quan