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

5.8. tỷ lệ kèo bóng đá tối nay bảo mật hàng

Ngoài SQL-Standardkèo chấp tỷ lệ kèo bóng đá tối nay đá hômCó sẵn thông quaGrant, bảng có thể cótỷ lệ kèo bóng đá tối nay bảo mật hàngĐiều đó hạn chế, trên cơ sở người dùng mỗi người, các tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay8772_8977

Khi bảo mật tỷ lệ kèo bóng đá tối nay được bật trên bảng (vớiBảng thay đổi ... Kích hoạt bảo mật cấp tỷ lệ kèo bóng đá tối nay), Tất cả quyền truy cập bình thường vào bảng để chọn hàng hoặc sửa đổi hàng phải được tỷ lệ kèo bóng đá tối nay bảo mật hà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 tỷ lệ kèo bóng đá tối nay.

tỷ lệ kèo bóng đá tối nay bảo mật hàng có thể được cụ thể cho các lệnh hoặc vai trò hoặc cho cả hai. tỷ lệ kèo bóng đá tối nay có thể được chỉ định để áp dụng chotấ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 tỷ lệ kèo bóng đá tối nay 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 hàng nào có thể nhìn thấy hoặc có thể sửa đổi theo tỷ lệ kèo bóng đá tối nay, 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 hà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 tỷ lệ kèo bóng đá tối nay.) Các tỷ lệ kèo bóng đá tối nay mà biểu thức không trả vềTRUEsẽ không được xử lý. Các biểu thức riêng biệt có thể được chỉ định để cung cấp kiểm soát độc lập đối với các hàng có thể nhìn thấy và các hàng được phép sửa đổi. Các biểu thức tỷ lệ kèo bóng đá tối nay được chạy như một phần của truy vấn và với các đặc quyền của người dùng đang chạy truy vấn, mặc dù các chức năng bảo mật-definer có thể được sử dụng để truy cập dữ liệu không có sẵn cho người dùng gọi.

Superusers và vai trò vớiBypassrls11043_11236Bảng thay đổi ... lực lượng bảo mật cấp tỷ lệ kèo bóng đá tối nay.

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

tỷ lệ kèo bóng đá tối nay được tạo bằng cách sử dụngPostgreSQL: Tài liệu: 15:Lệnh, được thay đổi bằng cách sử dụngPostgreSQL: Tài liệu: 15: soiLệnh và bỏ bằng cách sử dụngtỷ lệ kèo bóng đá tối nay: Tàilệnh. Để bật và vô hiệu hóa bảo mật tỷ lệ kèo bóng đá tối nay cho một bảng đã cho, hãy sử dụngtỷ lệ kèo bónglệnh.

Mỗi tỷ lệ kèo bóng đá tối nay có tên và nhiều tỷ lệ kèo bóng đá tối nay có thể được xác định cho một bảng. Vì các tỷ lệ kèo bóng đá tối nay là dành riêng cho bảng, mỗi tỷ lệ kèo bóng đá tối nay 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ó tỷ lệ kèo bóng đá tối nay có cùng tên.

Khi nhiều tỷ lệ kèo bóng đá tối nay á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(Đối với các tỷ lệ kèo bóng đá tối nay cho phép, là mặc định) hoặc sử dụng(cho các tỷ lệ kèo bóng đá tối nay hạn chế). Đ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. Các tỷ lệ kèo bóng đá tối nay cho phép so với hạn chế được thảo luận thêm bên dưới.

Như một ví dụ đơn giản, đây là cách tạo tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay truy cập và chỉ các tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay;

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);

tỷ lệ kèo bóng đá tối nay trên hoàn toàn cung cấp Avới kiểm tramệnh đề giống hệt với nó13366_13373mệnh đề, để ràng buộc áp dụng cả hai cho các tỷ lệ kèo bóng đá tối nay được chọn bởi một lệnh (để người quản lý không thểChọn, Cập nhậthoặcXóaCác tỷ lệ kèo bóng đá tối nay hiện tại thuộc về một trình quản lý khác) và các tỷ lệ kèo bóng đá tối nay được sửa đổi bởi một lệnh (do đó các tỷ lệ kèo bóng đá tối nay 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 đó tỷ lệ kèo bóng đá tối nay á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 hàng của riêng họ trong mộtNgười dùngBảng, một tỷ lệ kèo bóng đá tối nay đơn giản có thể được sử dụng:

Tạo tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay khác cho các hàng đang được thêm vào bảng so với các hàng có thể nhìn thấy, nhiều tỷ lệ kèo bóng đá tối nay có thể được kết hợp. Cặp tỷ lệ kèo bóng đá tối nay này sẽ cho phép tất cả người dùng xem tất cả các hàng trongngười dùngBảng, nhưng chỉ sửa đổi của riêng họ:

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

trong AChọnLệnh, hai tỷ lệ kèo bóng đá tối nay 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 hàng có thể được chọn. Trong các loại lệnh khác, chỉ áp dụng tỷ lệ kèo bóng đá tối nay thứ hai, để các hiệu ứng giống như trước đây.

Bảo mật tỷ lệ kèo bóng đá tối nay cũng có thể bị vô hiệu hóa vớiBảng thay đổilệnh. Vô hiệu hóa bảo mật hàng không xóa bất kỳ tỷ lệ kèo bóng đá tối nay 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 hà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:

15539_17391

17401_17599

17632_19592

Tất cả các tỷ lệ kèo bóng đá tối nay được xây dựng cho đến nay là các tỷ lệ kèo bóng đá tối nay cho phép, có nghĩa là khi nhiều tỷ lệ kèo bóng đá tối nay được áp dụng, chúng được kết hợp bằng cách sử dụnghoặcHồiNhà điều hành Boolean. Mặc dù các tỷ lệ kèo bóng đá tối nay cho phép có thể được xây dựng để chỉ cho phép truy cập vào các hàng trong các trường hợp dự định, nhưng có thể đơn giản hơn để kết hợp các tỷ lệ kèo bóng đá tối nay cho phép với các tỷ lệ kèo bóng đá tối nay hạn chế (mà các hồ sơ phải được thông qua và được kết hợp bằng cách sử dụngHồixôngNhà điều hành Boolean). Dựa trên ví dụ trên, chúng tôi thêm tỷ lệ kèo bóng đá tối nay hạn chế để yêu cầu quản trị viên được kết nối qua ổ cắm unix cục bộ để truy cập các hồ sơ củaPasswdBảng:

Tạo tỷ lệ kèo bóng đá tối nay admin_local_only trên passwd là hạn chế đối với quản trị viên
    Sử dụng (pg_catalog.inet_client_addr () là null);

Sau đó, chúng ta có thể thấy rằng một quản trị viên kết nối qua mạng sẽ không thấy bất kỳ bản ghi nào, do tỷ lệ kèo bóng đá tối nay hạn chế:

20659_21081

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 hà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à tỷ lệ kèo bóng đá tối nay cấp hàng để tránhKênh Covertrò 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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay âm thầm khiến một số tỷ lệ kèo bóng đá tối nay 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 hà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 tỷ lệ kèo bóng đá tối nay. Lý do cho lỗi sau đó có thể được điều tra và sửa chữa.

Trong các ví dụ trên, các biểu thức tỷ lệ kèo bóng đá tối nay chỉ xem xét các giá trị hiện tại trong hàng sẽ được truy cập hoặc cập nhật. Đây là trường hợp đơn giản và hiệu suất tốt nhất; Khi có thể, tốt nhất là thiết kế các ứng dụng bảo mật hàng để hoạt động theo cách này. Nếu cần phải tham khảo các hàng khác hoặc các bảng khác để đưa ra quyết định tỷ lệ kèo bóng đá tối nay, điều đó có thể được thực hiện bằng cách sử dụng phụ-Chọns hoặc các chức năng chứaChọns, trong các biểu thức tỷ lệ kèo bóng đá tối nay. 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:

22779_24159

Bây giờ giả sử rằngAlicemuốn thay đổiHồiBí mật hơixôngThông tin, nhưng quyết định rằngMalloryKhông nên tin tưởng vào nội dung mới của tỷ lệ kèo bóng đá tối nay đó, 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ể xemBí mật từ MalloryHồiChuỗ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, giả sử,

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ể xemBí mật từ MalloryHồi. Điều đó xảy ra nếu giao dịch của cô ấy đạt đếnThông tintỷ lệ kèo bóng đá tối nay ngay sauAlice's. Nó chặn chờAliceS giao dịch để cam kết, sau đó tìm nạp nội dung tỷ lệ kèo bóng đá tối nay được cập nhật nhờđể cập nhậtmệnh đề. Tuy nhiên, nó khôngkhôngLấy tỷ lệ kèo bóng đá tối nay đượ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ùngHà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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay bảo mật hà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 tỷ lệ kèo bóng đá tối nay bảo mật hà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ụ-26645_26653có 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ẻ tỷ lệ kèo bóng đá tối nay 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ấyAccess ExclusiveKhóa 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ị tỷ lệ kèo bóng đá tối nay 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: 15:tỷ lệ kèo bóng.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không tỷ lệ kèo bóng đá tối nay xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.