按应用程序进行密钥管理
本主题介绍了如何按应用程序管理列加密密钥。 本文介绍了如何生成主密钥,以及如何使用这些主密钥对数据进行加密和解密。
提供主钥匙
提供主钥匙:
请按以下格式提供显式主密钥:
parameter name: "encryption.key.list" parameter value: "<master key ID>:<master key (base64)> , <master key ID>:<master key (base64)>.."例如:
sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")在进行 base64 编码之前,主密钥的长度可以是16、24或32字节(128、192或256位)。
写入加密数据
要写入加密数据:
指定要加密的列以及要使用的主密钥:
parameter name: "encryption.column.keys" parameter value: "<master key ID>:<column>,<column>;<master key ID>:<column> .."请指定页脚键:
parameter name: "encryption.footer.key" parameter value: "<master key ID>"例如:
dataFrame.write .option("encryption.footer.key" , "k1") .option("encryption.column.keys" , "k2:SSN,Address;k3:CreditCard") .parquet("<path to encrypted files>")注: ` ""` 必须包含 URL 中的字符串 ".encrypted`",例如 " /path/to/my_table.parquet.encrypted `。如果未设置`" encryption.column.keys "`参数或`" encryption.footer.key "`参数,则会出现异常。
读取加密数据
所需的元数据存储在加密的 Parquet 文件中。
要读取加密数据:
请提供加密密钥:
sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")调用常规的 Parquet 读取命令,例如:
val dataFrame = spark.read.parquet("<path to encrypted files>")注: ` "" URL 中必须包含字符串".encrypted",例如 " /path/to/my_table.parquet.encrypted "。