Javascript 雪花UDF和数据加密

Javascript 雪花UDF和数据加密,javascript,encryption,user-defined-functions,snowflake-cloud-data-platform,private-key,Javascript,Encryption,User Defined Functions,Snowflake Cloud Data Platform,Private Key,我想知道是否可以创建UDF,使用私钥对作为加密值插入表中的值进行解密。我在谷歌上找不到任何东西。我发现的唯一一件事是,可能有一个选项可以使用JavaScript UDF和CryptoJS来实现这一点,但我不明白是否真的可以导入CryptoJS模块以在UDF中使用。根据我在文档中收集的信息,这是不可能的 有人知道这种特性、可能性或解决方法吗? 谢谢 您实际上不需要UDF来完成此操作。Snowflake支持带有私钥的加密和解密函数。(从技术上讲,此示例显示了转换为私钥的私钥短语。但它也支持直接密钥规

我想知道是否可以创建UDF,使用私钥对作为加密值插入表中的值进行解密。我在谷歌上找不到任何东西。我发现的唯一一件事是,可能有一个选项可以使用JavaScript UDF和CryptoJS来实现这一点,但我不明白是否真的可以导入CryptoJS模块以在UDF中使用。根据我在文档中收集的信息,这是不可能的

有人知道这种特性、可能性或解决方法吗?
谢谢

您实际上不需要UDF来完成此操作。Snowflake支持带有私钥的加密和解密函数。(从技术上讲,此示例显示了转换为私钥的私钥短语。但它也支持直接密钥规范;请继续阅读):

如果您正在寻找一种方法来解密另一个系统加密的值,那么解密函数可能有效,也可能无效。Snowflake的加密和解密函数使用AES256密码的对称加密。如果源密码是AES-256,则可以进行解密。如果源密码是其他密码,则不会。您可能希望尝试ENCRYPT_RAW函数,该函数接受密钥,而不是处理如何将密码短语转换为密钥的复杂性


您可以使用公共预览功能

外部标记化允许组织标记敏感数据 在将该数据加载到Snowflake中并动态删除之前 在查询运行时使用带有外部函数的屏蔽策略获取数据

甚至还有一个

目前,Snowflake支持使用Protegrity来管理 跨所有数据存储区(如表、, 组织中的数据库、数据仓库)。当雪花呼唤 在屏蔽策略的外部函数中,进行RESTAPI调用 至保护性数据安全网关(DSG)


您可以查看此处描述的
crypto.sential
。至少在浏览器中,它是本机的。不确定雪花是否也支持它。否则,最简单的方法是使用像Python这样的客户端读取加密数据,解密并写回普通数据。
select encrypt('Hello, world.', '531daa2aec446116');  -- Displays as binary jibberish.
select hex_encode(encrypt('Hello, world.', '531daa2aec446116'));  -- Displays as HEX. Convert to hex to store as either binary or string.
create temporary table ENCRYPTED_TABLE(COL1 binary, COL2 string);
insert into ENCRYPTED_TABLE select hex_encode(encrypt('Hello, world.', '531daa2aec446116')), hex_encode(encrypt('Hello, world.', '531daa2aec446116'));
select decrypt(COL1, '531daa2aec446116'), decrypt(hex_decode_binary(COL2), '531daa2aec446116') from ENCRYPTED_TABLE;