在 SQL 中實現(xiàn)行級安全控制可以通過使用 RESTRICT
關(guān)鍵字來限制用戶對特定行的訪問權(quán)限。具體步驟如下:
employee
表。CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
manager_id INT
);
INSERT INTO employee (id, name, department, manager_id)
VALUES (1, 'Alice', 'HR', NULL),
(2, 'Bob', 'IT', 1),
(3, 'Charlie', 'Finance', 1);
hr_manager
角色。CREATE ROLE hr_manager;
hr_manager
角色訪問 employee
表的權(quán)限。GRANT SELECT ON employee TO hr_manager;
RESTRICT
關(guān)鍵字來限制 hr_manager
角色只能查看屬于自己部門的員工數(shù)據(jù)。CREATE POLICY department_policy
ON employee
FOR SELECT
USING (department = current_user);
現(xiàn)在,只有屬于 HR 部門的用戶才能查看屬于 HR 部門的員工數(shù)據(jù),其他部門的用戶無法查看 HR 部門的員工數(shù)據(jù)。通過這種方式,可以實現(xiàn)行級安全控制。