Go back to the English version of the documentation由应用程序管理密钥
由应用程序管理密钥
Last updated: 2024年10月07日
本主题描述如何通过应用程序来管理列加密密钥。 它说明如何提供主密钥,以及如何使用这些主密钥来读写已加密的数据。
提供主密钥
要提供主密钥,请完成下列步骤:
按以下格式传递显式主密钥:
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`。
父主题: Parquet 加密