雪花UDF和数据加密

时间:2020-04-30 06:29:14

标签: javascript encryption user-defined-functions snowflake-cloud-data-platform private-key

我想知道是否可以创建UDF,以使用私钥解密作为加密值插入表中的值。我无法通过Google搜索真正找到任何东西。我发现的唯一发现是,可以使用JavaScript UDF和CryptoJS进行选择,但是我不知道是否真的可以导入要在UDF中使用的CryptoJS模块。根据我在文档中收集的信息,这是不可能的。

有人知道这种功能,可能性或解决方法吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

您实际上并不需要UDF来执行此操作。 Snowflake支持使用私钥进行加密和解密的功能。 (从技术上讲,此示例显示了一个已转换为私钥的私钥短语。尽管如此,它也支持直接密钥规范;请继续阅读):

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;

如果您正在寻找一种方法来解密另一个系统加密的值,则解密功能可能会或可能不会起作用。 Snowflake的加密和解密功能使用带有AES256密码的对称加密。如果源密码是AES-256,则可能需要解密才能工作。如果源密码是其他密码,则不会。您可能想尝试ENCRYPT_RAW函数,该函数接受密钥,而不是处理如何将密码短语转换为密钥的复杂性。

https://docs.snowflake.com/en/sql-reference/functions/encrypt.html

答案 1 :(得分:0)

您可以使用公共预览功能External Tokenization

外部令牌化允许组织对敏感数据进行令牌化 在将该数据加载到Snowflake并动态去标记之前 使用带有外部功能的屏蔽策略在查询运行时添加数据。

甚至还有一个integration with Protegrity Data Security Gateway

当前,Snowflake支持使用Protegrity来管理 跨所有数据存储区(例如表格, 数据库,数据仓库)。当雪花呼唤 屏蔽策略中的外部功能,将进行REST API调用 到Protegrity数据安全网关(DSG)。