0

我试图为用户提供整个数据库的访问权限,但删除对具有机密数据的特定表或特定模式的访问权限,但它只是没有解决,尝试了多个 - 授予和撤销语句但徒劳无功。

这是我到目前为止测试过的。

最初,我为用户担任这个角色

GRANT ALL ON DATABASE raw TO ROLE transformer; 

检查了赠款并删除了

SHOW GRANTS TO ROLE transformer;
revoke select on all tables in schema raw.<secret_schema> from role transformer;
revoke all on DATABASE raw from ROLE transformer; 

开始授予对单个架构/表的访问权限,但“授予数据库使用权”只是将每个架构/表访问权限授予用户

grant usage on database raw to role transformer ;  -- usage gives all tables access 
grant usage on schema raw.<open_schema> to role transformer ;
grant all on schema raw.<open_schema> to role transformer ;
grant select on all tables raw.<open_schema> to role transformer ;

最后,也尝试了这些撤销,但徒劳无功

revoke select on table raw.<secret_schema>.s from ROLE transformer;
revoke usage on schema raw.<secret_schema> from role transformer;

有关更多信息,此访问权限适用于 DBT 用户和分析师用户,他们可以点击/选择/读取原始数据库,但只有 1 个模式/表不应该被访问,其余的都应该带有“未来表”子句。

深度设计:https ://blog.getdbt.com/how-we-configure-snowflake/

4

2 回答 2

1

将数据库原始使用权授予角色转换器;-- 使用赋予所有表访问权限

这不是授予对表的访问权限的原因;别的东西是。您可以确认运行一个像这样的简单脚本:

use role securityadmin;
create role new_role_1;
grant role new_role_1 to user my_user;
use role sysadmin;
grant usage on database test to role new_role_1;
use role new_role_1;
select * from test.public.foo;  --SQL compilation error: Object 'TEST.PUBLIC.FOO' does not exist or not authorized.
use role sysadmin;
select * from test.public.foo;  -- Works

角色继承自其他角色。默认情况下,所有角色都继承自 PUBLIC 角色。有人可以授予 PUBLIC 角色该角色继承的权限吗?它是否从具有比 PUBLIC 更多权限的角色继承?

于 2021-09-15T18:54:09.040 回答
1

正如 Greg 已经提到(并演示过),“GRANT ALL ON DATABASE raw TO ROLE x”不授予访问数据库中对象的权限。它授予修改数据库对象的权限(在您的情况下,不需要它,我建议您不要根据“最小特权原则”授予它)。

https://docs.snowflake.com/en/user-guide/security-access-control-privileges.html#database-privileges

我认为,令人困惑的是,如果您尝试撤消未授予的权限,“撤消”命令不会返回任何错误:

create role r2;
revoke all on database gokhan_db from role r2;

因此,您的撤消命令不会失败,但实际上,它们不会撤消任何内容,因为此权限已分配给角色 public:

revoke select on table raw.<secret_schema>.s from ROLE transformer;
revoke usage on schema raw.<secret_schema> from role transformer;

你能再检查一下角色 public 的权限吗?

show grants to role public;
于 2021-09-16T06:25:36.583 回答