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
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 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

5.7. Chính sách bảo mật cách đọc kèo bóng đá

Ngoài SQL-StandardPostgreSQL: Tài liệu:Có sẵn thông quaGrant, bảng có thể cóChính sách bảo mật cách đọc kèo bóng đáĐiều đó hạn chế, trên cơ sở người dùng mỗi người, các cách đọc kèo bóng đá có thể được trả về bằng các truy vấn thông thường hoặc chèn, cập nhật hoặc xóa bởi các lệnh sửa đổi dữ liệu. Tính năng này còn được gọi làBảo mật cấp cách đọc kèo bóng đá. Theo mặc định, các bảng không có bất kỳ chính sách nào, do đó, nếu người dùng có quyền truy cập đặc quyền vào bảng theo hệ thống đặc quyền SQL, tất cả các cách đọc kèo bóng đá trong đó đều có sẵn để truy vấn hoặc cập nhật.

Khi bảo mật cách đọc kèo bóng đá được bật trên bảng (vớiBảng thay đổi ... Kích hoạt bảo mật cấp cách đọc kèo bóng đá), Tất cả quyền truy cập bình thường vào bảng để chọn cách đọc kèo bóng đá hoặc sửa đổi cách đọc kèo bóng đá phải được chính sách bảo mật cách đọc kèo bóng đá cho phép. . Các hoạt động áp dụng cho toàn bộ bảng, chẳng hạn nhưcắt ngắnTài liệu tham khảo, không phải chịu bảo mật cách đọc kèo bóng đá.

9457_9573tất cảlệnh hoặc đếnChọn, Chèn, Cập nhậthoặcXóa. Nhiều vai trò có thể được gán cho một cách đọc kèo bóng đá nhất định và được áp dụng thành viên và tư cách thành viên vai trò bình thường.

Để chỉ định các cách đọc kèo bóng đá nào có thể nhìn thấy hoặc có thể sửa đổi theo chính sách, một biểu thức được yêu cầu trả về kết quả boolean. Biểu thức này sẽ được đánh giá cho từng cách đọc kèo bóng đá trước mọi điều kiện hoặc chức năng đến từ truy vấn của người dùng. (Các ngoại lệ duy nhất cho quy tắc này làLeakproofCác chức năng, được đảm bảo không rò rỉ thông tin; Trình tối ưu hóa có thể chọn áp dụng các chức năng như vậy trước khi kiểm tra bảo mật cách đọc kèo bóng đá.) Các cách đọc kèo bóng đá mà biểu thức không trả vềTRUE10394_10768

Superusers và vai trò vớiBypassrlsThuộc tính luôn bỏ qua hệ thống bảo mật cách đọc kèo bóng đá khi truy cập vào bảng. Chủ sở hữu bảng thường bỏ qua bảo mật cách đọc kèo bóng đá, mặc dù chủ sở hữu bảng có thể chọn chịu sự bảo mật cách đọc kèo bóng đá vớiBảng thay đổi ... lực lượng bảo mật cấp cách đọc kèo bóng đá.

Kích hoạt và vô hiệu hóa bảo mật cách đọc kèo bóng đá, cũng như thêm các chính sách vào bảng, luôn luôn là đặc quyền của chủ sở hữu bảng.

cách đọc kèo bóng đá được tạo bằng cách sử dụngPostgreSQL: Tài liệu:Lệnh, được thay đổi bằng cách sử dụngPostgreSQL: Tài liệu: 9Lệnh và bỏ bằng cách sử dụngkèo bóng đá việt nam: Tàilệnh. Để bật và vô hiệu hóa bảo mật cách đọc kèo bóng đá cho một bảng đã cho, hãy sử dụngkèo bóng đá homlệnh.

Mỗi cách đọc kèo bóng đá có một tên và nhiều cách đọc kèo bóng đá có thể được xác định cho một bảng. Vì các cách đọc kèo bóng đá là dành riêng cho bảng, mỗi cách đọc kèo bóng đá cho một bảng phải có một tên duy nhất. Các bảng khác nhau có thể có cách đọc kèo bóng đá có cùng tên.

Khi nhiều cách đọc kèo bóng đá áp dụng cho một truy vấn nhất định, chúng được kết hợp bằng cách sử dụnghoặc, do đó có thể truy cập được một cách đọc kèo bóng đá nếu có bất kỳ chính sách nào cho phép. Điều này tương tự như quy tắc mà một vai trò nhất định có đặc quyền của tất cả các vai trò mà họ là thành viên của.

Như một ví dụ đơn giản, đây là cách tạo cách đọc kèo bóng đá trêntài khoảnMối quan hệ chỉ cho phép các thành viên củaNgười quản lývai trò của các cách đọc kèo bóng đá truy cập và chỉ các cách đọc kèo bóng đá tài khoản của họ:

Tạo tài khoản bảng (văn bản trình quản lý, văn bản công ty, văn bản contact_email);

Thay đổi tài khoản bảng cho phép bảo mật cấp cách đọc kèo bóng đá;

Tạo tài khoản chính sách_Managers trên tài khoản cho người quản lý
    Sử dụng (trình quản lý = current_user);

cách đọc kèo bóng đá trên hoàn toàn cung cấp Avới kiểm tramệnh đề giống hệt với nósử dụng12692_12790Chọn, Cập nhậthoặcXóaCác cách đọc kèo bóng đá hiện tại thuộc về một trình quản lý khác) và các cách đọc kèo bóng đá được sửa đổi bởi một lệnh (do đó các cách đọc kèo bóng đá thuộc về một trình quản lý khác không thể được tạo thông quaChènhoặcCập nhật).

Nếu không có vai trò nào được chỉ định hoặc tên người dùng đặc biệtcông khaiđược sử dụng, sau đó chính sách áp dụng cho tất cả người dùng trên hệ thống. Để cho phép tất cả người dùng chỉ truy cập cách đọc kèo bóng đá của riêng họ trong mộtngười dùngBảng, một cách đọc kèo bóng đá đơn giản có thể được sử dụng:

Tạo cách đọc kèo bóng đá user_policy trên người dùng
    Sử dụng (user_name = current_user);

Điều này hoạt động tương tự như ví dụ trước.

Để sử dụng một chính sách khác cho các cách đọc kèo bóng đá đang được thêm vào bảng so với các cách đọc kèo bóng đá có thể nhìn thấy, nhiều chính sách có thể được kết hợp. Cặp chính sách này sẽ cho phép tất cả người dùng xem tất cả các cách đọc kèo bóng đá trongNgười dùngBảng, nhưng chỉ sửa đổi của riêng họ:

Tạo cách đọc kèo bóng đá user_sel_policy trên người dùng
    Cho chọn
    Sử dụng (đúng);
Tạo cách đọc kèo bóng đá user_mod_policy trên người dùng
    Sử dụng (user_name = current_user);

trong AChọnLệnh, hai cách đọc kèo bóng đá này được kết hợp bằng cách sử dụnghoặc, với hiệu ứng ròng là tất cả các cách đọc kèo bóng đá có thể được chọn. Trong các loại lệnh khác, chỉ áp dụng chính sách thứ hai, để các hiệu ứng giống như trước đây.

Bảo mật cách đọc kèo bóng đá cũng có thể bị vô hiệu hóa vớiBẢNG ALTERlệnh. Vô hiệu hóa bảo mật cách đọc kèo bóng đá không xóa bất kỳ chính sách nào được xác định trên bảng; Họ chỉ đơn giản là bị bỏ qua. Sau đó, tất cả các cách đọc kèo bóng đá trong bảng đều có thể nhìn thấy và có thể sửa đổi, tùy thuộc vào hệ thống đặc quyền SQL tiêu chuẩn.

Dưới đây là một ví dụ lớn hơn về cách tính năng này có thể được sử dụng trong môi trường sản xuất. BảngpasswdMô phỏng tệp mật khẩu Unix:

14783_16633

Như với bất kỳ cài đặt bảo mật nào, điều quan trọng là kiểm tra và đảm bảo rằng hệ thống đang hoạt động như mong đợi. Sử dụng ví dụ trên, điều này chứng minh rằng hệ thống quyền đang hoạt động tốt.

16870_18840

Kiểm tra tính toàn vẹn tham chiếu, chẳng hạn như các ràng buộc chính hoặc chính và các tài liệu tham khảo khóa nước ngoài, luôn luôn bỏ qua bảo mật cách đọc kèo bóng đá để đảm bảo tính toàn vẹn dữ liệu được duy trì. Phải cẩn thận khi phát triển các lược đồ và chính sách cấp cách đọc kèo bóng đá để tránh"Kênh Covert"rò rỉ thông tin thông qua kiểm tra tính toàn vẹn tham chiếu như vậy.

Trong một số bối cảnh, điều quan trọng là phải chắc chắn rằng bảo mật cách đọc kèo bóng đá không được áp dụng. Ví dụ, khi lấy một bản sao lưu, nó có thể là thảm họa nếu bảo mật cách đọc kèo bóng đá âm thầm khiến một số cách đọc kèo bóng đá bị bỏ qua từ bản sao lưu. Trong tình huống như vậy, bạn có thể đặtRow_SecurityTham số cấu hình thànhTẮT. Điều này không tự mình bỏ qua bảo mật cách đọc kèo bóng đá; Những gì nó làm là ném một lỗi nếu bất kỳ kết quả của bất kỳ truy vấn nào sẽ được lọc bởi một chính sách. Lý do cho lỗi sau đó có thể được điều tra và sửa chữa.

19789_20153Chọns hoặc các chức năng chứaChọns, trong các biểu thức cách đọc kèo bóng đá. Tuy nhiên, hãy lưu ý rằng các truy cập như vậy có thể tạo ra các điều kiện cuộc đua có thể cho phép rò rỉ thông tin nếu không được chăm sóc. Ví dụ, hãy xem xét thiết kế bảng sau:

20478_21856

Bây giờ giả sử rằngAlicemuốn thay đổi"Hơi bí mật"Thông tin, nhưng quyết định rằngMalloryKhông nên tin tưởng vào nội dung mới của cách đọc kèo bóng đá đó, vì vậy cô ấy làm:

Bắt đầu;
Cập nhật người dùng đặt nhóm_id = 1 trong đó user_name = 'mallory';
Cập nhật thông tin đặt thông tin = 'Bí mật từ Mallory' trong đó group_id = 2;
LÀM;

trông an toàn; Không có cửa sổ trong đóMallorysẽ có thể xem"Bí mật từ Mallory"Chuỗi. Tuy nhiên, có một điều kiện cuộc đua ở đây. Nếu nhưMalloryđang làm đồng thời, nói,

Chọn * Từ thông tin trong đó nhóm_id = 2 để cập nhật;

Và giao dịch của cô ấy ởĐọc cam kếtChế độ, cô ấy có thể nhìn thấy"Bí mật từ Mallory". Điều đó xảy ra nếu giao dịch của cô ấy đạt đếnThông tincách đọc kèo bóng đá ngay sau22931_22938's. Nó chặn chờAlice23002_23082để cập nhậtmệnh đề. Tuy nhiên, nó khôngkhôngLấy cách đọc kèo bóng đá được cập nhật cho ẩnChọntừNgười dùng, vì phụ đóChọnkhông cóđể cập nhật; Thay vào đóNgười dùngcách đọc kèo bóng đá được đọc với ảnh chụp nhanh được thực hiện khi bắt đầu truy vấn. Do đó, biểu thức chính sách kiểm tra giá trị cũ củaMallory

Có một số cách xung quanh vấn đề này. Một câu trả lời đơn giản là sử dụngChọn ... để chia sẻtrong Sub-Chọns Chính sách bảo mật cách đọc kèo bóng đá. Tuy nhiên, điều đó yêu cầu cấpCập nhậtĐặc quyền trên bảng được tham chiếu (ở đâyngười dùng) cho người dùng bị ảnh hưởng, có thể không mong muốn. (Nhưng một chính sách bảo mật cách đọc kèo bóng đá khác có thể được áp dụng để ngăn họ thực sự thực hiện đặc quyền đó; hoặc phụ-Chọncó thể được nhúng vào hàm xác định bảo mật.) Ngoài ra, sử dụng đồng thời khóa chia sẻ cách đọc kèo bóng đá trên bảng được tham chiếu có thể đặt ra một vấn đề hiệu suất, đặc biệt là nếu các bản cập nhật của nó là thường xuyên. Một giải pháp khác, thực tế nếu các bản cập nhật của bảng được tham chiếu là không thường xuyên, là lấy một khóa độc quyền trên bảng được tham chiếu khi cập nhật nó, để không có giao dịch đồng thời nào có thể kiểm tra các giá trị cách đọc kèo bóng đá cũ. Hoặc người ta chỉ có thể chờ tất cả các giao dịch đồng thời kết thúc sau khi thực hiện cập nhật bảng được tham chiếu và trước khi thực hiện các thay đổi dựa vào tình huống bảo mật mới.

Để biết thêm chi tiết, xemPostgreSQL: Tài liệu:kèo bóng đá hom.