PostgreSQL: soi kèo bóng đá truoctran | |||
---|---|---|---|
prev | UP | Chương 38. Hệ thống tỷ lệ kèo bóng đá | Tiếp theo |
Do viết lại các truy vấn củaPostgreSQLHệ thống tỷ lệ kèo bóng đá, các bảng/chế độ xem khác so với các bảng được sử dụng trong truy vấn ban đầu được truy cập. Khi các tỷ lệ kèo bóng đá cập nhật được sử dụng, điều này có thể bao gồm quyền truy cập ghi vào các bảng.
Viết lại các tỷ lệ kèo bóng đá không có chủ sở hữu riêng. Chủ sở hữu của một mối quan hệ (bảng hoặc chế độ xem) tự động là chủ sở hữu của các tỷ lệ kèo bóng đá viết lại được xác định cho nó.PostgreSQLHệ thống tỷ lệ kèo bóng đá thay đổi hành vi của hệ thống điều khiển truy cập mặc định. Các mối quan hệ được sử dụng do các tỷ lệ kèo bóng đá được kiểm tra đối với các đặc quyền của chủ sở hữu tỷ lệ kèo bóng đá, chứ không phải người dùng gọi tỷ lệ kèo bóng đá.
Ví dụ: Người dùng có một danh sách các số điện thoại trong đó một số trong số họ là riêng tư, những người khác được thư ký của văn phòng quan tâm. Anh ấy có thể xây dựng những điều sau:
Tạo bảng điện thoại_data (văn bản người, văn bản điện thoại, boolean riêng);
Không ai ngoại trừ anh ta (và siêu nhân cơ sở dữ liệu) có thể truy cậpPhone_dataBảng. Nhưng vìGrant, Thư ký có thể chạyChọntrênPhone_numberXem. Hệ thống tỷ lệ kèo bóng đá sẽ viết lạiChọntừPhone_numberthành AChọntừPhone_data. Vì người dùng là chủ sở hữu củaPhone_numberVà do đó, chủ sở hữu của tỷ lệ kèo bóng đá, việc đọc quyền truy cập vàoPhone_Datahiện được kiểm tra đối với các đặc tỷ lệ kèo bóng đáền của anh ta và truy vấn được cho phép. Kiểm tra truy cậpPhone_number
Các đặc quyền được kiểm tra tỷ lệ kèo bóng đá theo tỷ lệ kèo bóng đá. Vì vậy, thư ký bây giờ là người duy nhất có thể nhìn thấy số điện thoại công cộng.Phone_numberDữ liệu thông qua quan điểm của Bộ trưởng. Những gì thư ký không thể làm là tạo một chế độ xem trực tiếp truy cậpPhone_data. (Trên thực tế, anh ta có thể, nhưng nó sẽ không hoạt động vì mọi tỷ lệ kèo bóng đáền truy cập sẽ bị từ chối trong quá trình kiểm tra tỷ lệ kèo bóng đáềnPhone_numberXem, anh ta có thể thu hồi tỷ lệ kèo bóng đáền truy cập của mình. Ngay lập tức, mọi tỷ lệ kèo bóng đáền truy cập vào quan điểm của Bộ trưởng sẽ thất bại.
Người ta có thể nghĩ rằng kiểm tra theo tỷ lệ kèo bóng đá này là một lỗ bảo mật, nhưng thực tế nó không phải là. Nhưng nếu nó không hoạt động theo cách này, thư ký có thể thiết lập một bảng có cùng cột nhưPhone_numbervà sao chép dữ liệu vào đó một lần mỗi ngày. Sau đó, đó là dữ liệu của riêng anh ấy và anh ấy có thể cấp tỷ lệ kèo bóng đáền truy cập cho mọi người anh ấy muốn.Grantlệnh có nghĩa là,"Tôi tin tưởng bạn". Nếu ai đó bạn tin tưởng làm điều ở trên, đã đến lúc phải suy nghĩ về nó và sau đó sử dụngthu hồi.
Lưu ý rằng trong khi các chế độ xem có thể được sử dụng để ẩn nội dung của một số cột bằng cách sử dụng kỹ thuật được hiển thị ở trên, chúng không thể được sử dụng để che giấu dữ liệu một cách đáng tin cậy trong các hàng không nhìn thấySecurity_BarrierCờ đã được đặt. Ví dụ: chế độ xem sau là không an toàn:
Tạo View Phone_Number AS
Chế độ xem này có vẻ an toàn, vì hệ thống tỷ lệ kèo bóng đá sẽ viết lại bất kỳ nàoChọntừPhone_numberthành AChọntừPhone_Datavà thêm trình độ chỉ các mục nhập trong đóĐiện thoạiKhông bắt đầu với 412 là muốn. Nhưng nếu người dùng có thể tạo chức năng của riêng mình, không khó để thuyết phục người lập kế hoạch thực hiện chức năng do người dùng xác định trướckhông thích
Biểu thức. Ví dụ:
Tạo chức năng Tricky (văn bản, văn bản) Trả về Bool dưới dạng $$
Mỗi người và số điện thoại trongPhone_DataBảng sẽ được in dưới dạngThông báo, vì người lập kế hoạch sẽ chọn thực hiện rẻ tiềnTricky
chức năng trước khi đắt hơnkhông thích
. Ngay cả khi người dùng bị ngăn chặn xác định các chức năng mới, các chức năng tích hợp có thể được sử dụng trong các cuộc tấn công tương tự.
Cân nhắc tương tự áp dụng cho các tỷ lệ kèo bóng đá cập nhật. Trong các ví dụ của phần trước, chủ sở hữu của các bảng trong cơ sở dữ liệu ví dụ có thể cấp các đặc quyềnChọn, Chèn, Cập nhậtvàXóatrênShoelaceXem cho người khác, nhưng chỉChọntrênShoelace_log. Hành động tỷ lệ kèo bóng đá để ghi các mục nhật ký vẫn sẽ được thực thi thành công và người dùng khác có thể thấy các mục nhật ký.Shoelace_loglà một không đủ tiêu chuẩnChèn. Điều này có thể không đúng trong các tình huống phức tạp hơn.
Khi cần thiết để cung cấp bảo mật cấp hàng,Security_Barrierthuộc tính nên được áp dụng cho chế độ xem. Điều này ngăn chặn các hàm và toán tử được chọn một cách độc hại được truyền các giá trị từ các hàng cho đến khi chế độ xem đã thực hiện công việc của nó.
Tạo View Phone_Number với (Security_Barrier)
chế độ xem được tạo bằngSecurity_BarrierCó thể thực hiện tồi tệ hơn nhiều so với các chế độ xem được tạo mà không cần tùy chọn này. Nói chung, không có cách nào để tránh điều này: kế hoạch nhanh nhất có thể phải bị từ chối nếu nó có thể thỏa hiệp bảo mật.
Người lập kế hoạch truy vấn có tính linh hoạt hơn khi xử lý các chức năng không có tác dụng phụ. Các chức năng như vậy được gọi làLeakproof, và bao gồm nhiều toán tử đơn giản, thường được sử dụng, chẳng hạn như nhiều toán tử bình đẳng. Trình lập kế hoạch truy vấn có thể cho phép các chức năng như vậy được đánh giá một cách an toàn tại bất kỳ điểm nào trong tỷ lệ kèo bóng đá trình thực thi truy vấn, vì việc gọi chúng trên các hàng vô hình cho người dùng sẽ không rò rỉ bất kỳ thông tin nào về các hàng không nhìn thấy.LeakproofĐể được đẩy xuống, vì chúng không bao giờ nhận được dữ liệu từ chế độ xem. Ngược lại, một hàm có thể gây ra lỗi tùy thuộc tỷ lệ tỷ lệ kèo bóng đáo các giá trị nhận được dưới dạng đối số (chẳng hạn như một hàm gây ra lỗi trong trường hợp tràn hoặc phân chia theo 0) không bị rò rỉ và có thể cung cấp thông tin quan trọng về các hàng không nhìn thấy nếu được áp dụng trước các bộ lọc hàng của chế độ xem bảo mật.
Điều quan trọng là phải hiểu rằng ngay cả một chế độ xem được tạo bằngSecurity_BarrierTùy chọn chỉ nhằm bảo mật theo nghĩa hạn chế rằng nội dung của các bộ dữ liệu vô hình sẽ không được truyền đến các hàm có thể không an toàn. Người dùng cũng có thể có các phương tiện khác để đưa ra các suy luận về dữ liệu chưa từng thấy;Giải thíchhoặc đo thời gian chạy của các truy vấn so với chế độ xem. Kẻ tấn công độc hại có thể suy ra điều gì đó về lượng dữ liệu chưa từng thấy hoặc thậm chí có được một số thông tin về phân phối dữ liệu hoặc các giá trị phổ biến nhất (vì những điều này có thể ảnh hưởng đến thời gian chạy của kế hoạch; hoặc thậm chí, vì chúng cũng được phản ánh trong số liệu thống kê tối ưu hóa, lựa chọn kế hoạch).