Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo bóng đá c1 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

41.5. kèo bóng đá c1

Do việc viết lại kèo bóng đá c1 truy vấn củaPostgreSQLHệ thống quy kèo bóng đá c1, 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 quy kèo bóng đá c1 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 quy kèo bóng đá c1 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 quy kèo bóng đá c1 viết lại được xác định cho nó. ThePostgreSQL11232_11549

Ví dụ: Người dùng có danh sách kèo bóng đá c1 số điện thoại trong đó một số trong số họ là riêng tư, những người khác được trợ lý của văn phòng quan tâm. Người dùng có thể xây dựng như sau:

11769_11997

Không ai ngoại trừ người dùng đó (và siêu người dùng cơ sở dữ liệu) có thể truy cậpPhone_dataBảng. Nhưng vìGrant, Trợ lý có thể chạyChọntrênPhone_numberXem. Hệ thống quy kèo bóng đá c1 sẽ viết lạiChọntừPhone_numberthành A12438_12446từPhone_data. Vì người dùng là chủ sở hữu củaPhone_numberVà do đó, chủ sở hữu của quy kèo bóng đá c1, việc đọc quyền truy cập vàoPhone_datahiện được kiểm tra đối với kèo bóng đá c1 đặc quyền của người dùng và truy vấn được cho phép. Kiểm tra truy cậpPhone_numbercũng được thực hiện, nhưng điều này được thực hiện chống lại người dùng gọi, vì vậy không ai ngoài người dùng và trợ lý có thể sử dụng nó.

Các đặc quyền được kiểm tra quy kèo bóng đá c1 theo quy kèo bóng đá c1. Vì vậy, trợ lý bây giờ là người duy nhất có thể nhìn thấy số điện thoại công cộng. Nhưng trợ lý có thể thiết lập một quan điểm khác và cấp quyền truy cập cho công chúng. Sau đó, bất cứ ai cũng có thể nhìn thấyPhone_numberDữ liệu thông qua quan điểm của Trợ lý. Điều mà trợ lý không thể làm là tạo một chế độ xem trực tiếp truy cập13329_13341. (Trên thực tế, trợ lý có thể, nhưng nó sẽ không hoạt động vì mọi quyền truy cập sẽ bị từ chối trong khi kiểm tra quyềnPhone_numberXem, người dùng có thể thu hồi quyền truy cập của trợ lý. Ngay lập tức, mọi quyền truy cập kèo bóng đá c1o chế độ xem trợ lý sẽ thất bại.

Người ta có thể nghĩ rằng kiểm tra theo quy kèo bóng đá c1 này là một lỗ hổng 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, trợ lý có thể thiết lập một bảng có cùng cột nhưPhone_numbervà sao chép dữ liệu kèo bóng đá c1o đó một lần mỗi ngày. Sau đó, đó là dữ liệu của chính trợ lý và trợ lý có thể cấp quyền truy cập cho mọi người họ muốn. MỘTGrantlệ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 kèo bóng đá c1 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 kèo bóng đá c1 hàng không nhìn thấy trừ khiSecurity_Barriercờ đã được đặt. Ví dụ: chế độ xem sau là không an toàn:

Tạo View Phone_Number AS
    Chọn người, điện thoại từ điện thoại_data nơi điện thoại không thích '412%';

Chế độ xem này có vẻ an toàn, vì hệ thống quy kèo bóng đá c1 sẽ viết lại bất kỳChọntừPhone_numberthành AChọntừPhone_datavà thêm trình độ chỉ kèo bóng đá c1 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 kèo bóng đá c1 chức năng của riêng họ, không khó để thuyết phục người lập kế hoạch thực thi chức năng do người dùng xác định trướckhông thíchBiể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 $$
BẮT ĐẦU
    Nâng cao thông báo ' % = %', $ 1, $ 2;
    Trả lại đúng;
KẾT THÚC;
$$ Ngôn ngữ plpgsql có giá 0,0000000000000000000001;

Chọn * Từ Phone_Number nơi khó (người, điện thoại);

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ềnTrickychứ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ự. (Ví dụ: hầu hết các hàm đúc bao gồm các giá trị đầu kèo bóng đá c1o của chúng trong các thông báo lỗi chúng

Cân nhắc tương tự áp dụng cho các quy kèo bóng đá c1 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ậtXóatrênShoelaceXem cho người khác, nhưng chỉChọntrênShoelace_log. Hành động quy kèo bóng đá c1 để 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ý. Nhưng họ không thể tạo các mục giả, họ cũng không thể điều khiển hoặc loại bỏ các mục hiện có. Trong trường hợp này, không có khả năng lật đổ các quy kèo bóng đá c1 bằng cách thuyết phục người lập kế hoạch thay đổi thứ tự hoạt động, bởi vì quy kèo bóng đá c1 duy nhất tham khảoShoelace_loglà một người không đủ tiêu chuẩnChèn. Điều này có thể không đúng trong kèo bóng đá c1 tình huống phức tạp hơn.

17107_17176Security_Barrier17219_17479

Tạo View Phone_Number với (Security_Barrier)
    Chọn người, điện thoại từ điện thoại_data nơi điện thoại không thích '412%';

chế độ xem được tạo bằngSecurity_BarrierCó thể thực hiện tồi tệ hơn nhiều so với kèo bóng đá c1 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. Vì lý do này, tùy chọn này không được bật theo mặc định.

Người lập kế hoạch truy vấn có tính linh hoạt hơn khi xử lý kèo bóng đá c1 chức năng không có tác dụng phụ. kèo bóng đá c1 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 kèo bóng đá c1 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 quá trình thực thi truy vấn, vì việc gọi chúng trên kèo bóng đá c1 hàng vô hình cho người dùng sẽ không rò rỉ bất kỳ thông tin nào về kèo bóng đá c1 hàng không nhìn thấy. Hơn nữa, kèo bóng đá c1 chức năng không có đối số hoặc không được thông qua bất kỳ đối số nào từ chế độ xem rào cản bảo mật không phải được đánh dấu là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 kèo bóng đá c1o 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 kèo bóng đá c1 bộ dữ liệu vô hình sẽ không được chuyển đến kèo bóng đá c1 chức năng không an toàn. Người dùng cũng có thể có kèo bóng đá c1 phương tiện khác để đưa ra kèo bóng đá c1 suy luận về dữ liệu chưa từng thấy; Ví dụ: họ có thể xem gói truy vấn bằng cách sử dụngGiả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). Nếu các loại tấn công "kênh bí mật" này là mối quan tâm, có lẽ không khôn ngoan khi cấp bất kỳ quyền truy cập nào kèo bóng đá c1o dữ liệu.