当前位置: 首页 > news >正文

行级安全性

行级安全性

一 是什么
第一句话:

行级别的安全性允许数据库管理员根据用户的身份和其他条件,限制对表中特定行的访问

第二句话:

RLS是一种基于行的安全策略,通过定义策略来限制数据库用户对表数据的访问权限。

优点:

在启用RLS之前,数据库的权限控制主要在表级别,即限制用户是否可以访问某个表

​ 在启用RLS之后,不同的用户可以在行级别,访问同一表中的不同数据

二 怎么用
概念性使用:

第一步:对某个表启用行级安全性

alter table table_name enable ROW LEVEL SECURITY;

第二步:创建策略

(在某张表上针对某个操作某个用户某个范围的数据 创建策略)

create policy policy_name on table_name
for {select/insert/update/delete}
to {user_name}
USING (condition);

FOR 指定操作类型,可以是 SELECT、INSERT、UPDATE 或 DELETE。
TO 指定该策略适用的角色。
USING 指定条件,决定哪些行是可见或可操作的。

实际使用示例:

创造条件

drop table if exists temp.departments;CREATE TABLE temp.departments (id SERIAL PRIMARY KEY,name VARCHAR(255) NOT NULL UNIQUE,manager VARCHAR(255) NOT NULL
);INSERT INTO temp.departments(name, manager)
VALUES('Sales', 'alice'),('Marketing', 'bob'),('IT', 'jack'),('test','sys');select * from temp.departments;创建一个策略,让sys用户只能看到manager为sys的行
https://juejin.cn/post/7485776678872301603

表数据如下:

在这里插入图片描述

开启行安全性

# 全表开启行安全性
alter table temp.departments enable row level security;
# 按照需求开启行安全性 让sys用户只能看到manager为sys的行
create policy departments_manager on temp.departments
for select
to sys
using(manager=current_user)

验证:行级安全性的前提是,安全策略指定的用户对该表已有指定权限

#先给sys用户授予temp.departments表的select权限
grant usage on schema temp to sys;
grant select on temp.departments to sys;
#再用sys用户登录再查看该表
select * from temp.departments;

在这里插入图片描述
可参考:http://xiwangwangguoyuan.com/article/jpsphe.html

http://www.dtcms.com/a/240943.html

相关文章:

  • 进程地址空间(比特课总结)
  • python如何将word的doc另存为docx
  • 保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
  • 提取目标区域的Argo剖面数据(nc)
  • 如何做接口测试(详解)
  • 亚马逊测评,采购环境安全需要解决哪些问题,提高成功率
  • el-select下拉框 添加 el-checkbox 多选框
  • 无人机侦测与反制技术的进展与应用
  • 第一季度过程
  • 微服务商城-商品微服务
  • (原创改进)73-CEEMDAN-VMD-SSA-LSSVM功率/风速时间序列预测!
  • matlab自控仿真【第一弹】❀传递函数和输出时域表达式
  • 设计模式作业
  • 分布式系统简述
  • 03_跨域问题解决
  • [尚庭公寓]01-项目概述
  • PKIX path building failed问题小结
  • 向量几何的二元性:叉乘模长与内积投影的深层联系
  • Flutter状态管理框架RiverPod入门
  • rk3506上移植lvgl应用
  • ui框架-文件列表展示
  • 【TVM 教程】如何使用 TVM Pass Infra
  • 力扣热题100 k个一组反转链表题解
  • 【Java基础】​​向上转型(Upcasting)和向下转型(Downcasting)
  • PLC入门【4】基本指令2(SET RST)
  • 手游刚开服就被攻击怎么办?如何防御DDoS?
  • Python importlib 动态加载
  • 在 Windows 11/10 中打开任务管理器的 6 种方法(无需 Ctrl+Alt+Delete)
  • Linux线程与进程关系及底层实现
  • 现代Vue状态管理:Pinia完全指南