4个版本
0.1.5 | 2024年6月10日 |
---|---|
0.1.4 | 2024年5月15日 |
0.1.3 | 2024年5月8日 |
0.1.2 | 2024年4月22日 |
0.1.0 |
|
#565 在 数据库接口
11KB
147 行
Accumulo访问表达式用于PostgreSQL
简介
本项目提供了一种PostgreSQL扩展,允许使用Accumulo访问表达式解析、评估和过滤行(行级安全)以在PostgreSQL查询中使用。该扩展以Rust扩展的形式实现。
没有优秀的 pgrx项目,开发将不可能实现。
安装
待办事项
cargo install cargo-pgrx
cargo pgrx init --pg15=download
cargo build --release
cargo pgrx run pg15
#cargo pgrx package
CREATE EXTENSION accumulo_access_pg;
用法
带有行级安全的示例
create role users;
create user johnny;
grant users to johnny;
create table secret_stuff(id serial primary key, data text not null, authz_expr text not null);
alter table secret_stuff enable row level security;
insert into secret_stuff(data, authz_expr) values('pretty secret', 'label1');
insert into secret_stuff(data, authz_expr) values('moar secret', 'label1|label2');
insert into secret_stuff(data, authz_expr) values('wat', 'label2');
insert into secret_stuff(data, authz_expr) values('win', 'label2 & (label3 | label4)');
grant select on secret_stuff to users;
create policy evaluate_policies on secret_stuff using ( sec_authz_check(authz_expr, current_setting('session.authorizations')));
-- ...
set session authorization johnny;
select current_user,session_user;
-- current_user | session_user
----------------+--------------
-- johnny | johnny
set session.authorizations = 'label1';
select * from secret_stuff;
-- id | data | authz_expr
------+---------------+---------------
-- 1 | pretty secret | label1
-- 2 | moar secret | label1|label2
-- (2 rows)
set session.authorizations = 'label2,label3';
select * from secret_stuff;
-- id | data | authz_expr
------+-------------+----------------------------
-- 2 | moar secret | label1|label2
-- 3 | wat | label2
-- 4 | win | label2 & (label3 | label4)
-- (3 rows)
待办事项
- 使缓存功能可配置(策略、大小)
- 实现一些基准测试。
- 支持签名授权(JWT?仅原始签名?)
许可证
本项目同时受Apache 2.0许可证和MIT许可证的许可。有关详细信息,请参阅LICENSE_APACHE
和LICENSE_MIT
文件。
贡献
欢迎贡献。请打开一个问题或拉取请求。
依赖项
~22MB
~489K SLoC