Tôi đã thấy một số hướng dẫn đề xuất rằng bạn bảo mật cơ sở dữ liệu bằng cách phân lớp tất cả truy cập dữ liệu thông qua các thủ tục đã lưu.Những lợi ích bảo mật nào được cung cấp bằng cách sử dụng các thủ tục được lưu trữ để truy cập dữ liệu?
Tôi biết rằng đối với SQL Server, bạn có thể bảo mật các bảng và thậm chí cả các cột chống lại các hoạt động CRUD.
Ví dụ:
--// Logged in as 'sa'
USE AdventureWorks;
GRANT SELECT ON Person.Address(AddressID, AddressLine1) to Matt;
GRANT UPDATE ON Person.Address(AddressLine1) to Matt;
--// Logged in as 'Matt'
SELECT * from Person.Address; --// Fail
SELECT AddressID, AddressLine1 from Person.Address; --// Succeed
UPDATE Person.Address SET AddressLine1 = '#____ 2700 Production Way'
WHERE AddressID = 497; --// Succeed
Cho rằng bạn có thể đảm bảo bảng và thậm chí là cột chống lại các hoạt động CRUD, làm thế nào để sử dụng một thủ tục lưu trữ cung cấp bảo mật bổ sung, hoặc quản lý an ninh?
Có lẽ vì nó có hiệu quả trong loại bảo mật quan trọng nhất nếu bạn là dba - nó bảo vệ cơ sở dữ liệu khỏi các truy vấn được viết bởi các lập trình viên sử dụng mã thủ tục. (nửa đùa ...) – dkretz