0 / 0
Go back to the English version of the documentation
由应用程序管理密钥
Last updated: 2024年10月07日
由应用程序管理密钥

本主题描述如何通过应用程序来管理列加密密钥。 它说明如何提供主密钥,以及如何使用这些主密钥来读写已加密的数据。

提供主密钥

要提供主密钥,请完成下列步骤:

  1. 按以下格式传递显式主密钥:

    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 位)。

写入已加密的数据

要写入已加密的数据,请完成下列步骤:

  1. 指定要加密的列,以及要使用的主密钥:

    parameter name:  "encryption.column.keys"
    parameter value: "<master key ID>:<column>,<column>;<master key ID>:<column> .."
    
  2. 指定文件尾密钥:

    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 文件中。

要读取已加密的数据,请完成下列步骤:

  1. 提供加密密钥:

    sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
    
  2. 调用常规 Parquet 读取命令,例如:

    val dataFrame = spark.read.parquet("<path to encrypted files>")
    
    注: ` "" ` 必须在 URL 中包含字符串 ` .encrypted ` ,例如 `/path/to/my_table.parquet.encrypted`。

父主题: Parquet 加密

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more