我们可以像在 SQL Server 中那样加密雪花中的存储过程吗?
Posted
技术标签:
【中文标题】我们可以像在 SQL Server 中那样加密雪花中的存储过程吗?【英文标题】:Can we Encrypt Stored procedures in snowflakes similar to what we do in SQL Server? 【发布时间】:2020-04-27 09:50:48 【问题描述】:我们能否像在 SQL Server 中那样加密 Snowflake 中的存储过程?
例如,类似于
CREATE PROCEDURE #EncryptSP
WITH ENCRYPTION
AS
QUERY HERE
GO
【问题讨论】:
【参考方案1】:Snowflake 数据库中的所有内容都是加密的,因此我认为问题在于允许用户运行存储过程但看不到其内容。这不是问题。
-- Using a database called TEST
grant usage on database test to role public;
grant usage on schema public to role public;
-- Create a secure procedure and run it as SYSADMIN (or whatever role you want)
create or replace secure procedure test.public.hello_world()
returns string
language javascript
execute as owner
as
$$
return "Hello world";
$$;
-- Allow users in the PUBLIC role to run the procedure
grant usage on procedure HELLO_WORLD() to role PUBLIC;
-- Test that users in role PUBLIC can run the procedure
use role public;
use database test;
use schema public;
call HELLO_WORLD();
-- However, they cannot see the stored procedure
select get_ddl('procedure', 'HELLO_WORLD()');
-- The owner can.
use role SYSADMIN;
select get_ddl('procedure', 'HELLO_WORLD()');
【讨论】:
嗨,格雷格,感谢您的回答。这似乎是合乎逻辑的。我希望用户使用存储过程,但看不到您指出的内容。那么,只有管理员角色我们才能做到这一点,还是我们也可以创建自定义角色? 您也可以使用自定义角色。 谢谢格雷格!感谢您的及时回复。以上是关于我们可以像在 SQL Server 中那样加密雪花中的存储过程吗?的主要内容,如果未能解决你的问题,请参考以下文章
我们可以像在处理中那样在 PyQt5 中绘制 3D/2D 对象吗?
我可以将 Flyway 与 SQL Server 加密一起使用吗?
在Snowflake sql中我们可以调用Oracle Sequence函数吗