En este tema se describe cómo gestionar las claves de cifrado de columnas por aplicación. Se explica cómo proporcionar claves maestras y cómo escribir y leer datos cifrados utilizando estas claves maestras.
Suministro de claves maestras
Para proporcionar claves maestras:
Pase las claves maestras explícitas, en el formato siguiente:
parameter name: "encryption.key.list" parameter value: "<master key ID>:<master key (base64)> , <master key ID>:<master key (base64)>.."
Por ejemplo:
sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
La longitud de las claves maestras antes de la codificación base64 puede ser 16, 24 o 32 bytes (128, 192 o 256 bits).
Escritura de datos cifrados
Para escribir datos cifrados:
Especifique las columnas se deben cifrar y las claves maestras que se utilizarán:
parameter name: "encryption.column.keys" parameter value: "<master key ID>:<column>,<column>;<master key ID>:<column> .."
Especifique la clave de pie de página:
parameter name: "encryption.footer.key" parameter value: "<master key ID>"
Por ejemplo:
dataFrame.write .option("encryption.footer.key" , "k1") .option("encryption.column.keys" , "k2:SSN,Address;k3:CreditCard") .parquet("<path to encrypted files>")
Nota: ` "" ` debe contener la serie ` .encrypted ` en el URL, por ejemplo `/path/to/my_table.parquet.encrypted`. Si no se establece el parámetro ` "encryption.column.keys" ` o el parámetro ` "encryption.footer.key" `, se emitirá una excepción.
Lectura de datos cifrados
Los metadatos necesarios se almacenan en los archivos Parquet cifrados.
Para leer los datos cifrados:
Proporcione las claves de cifrado:
sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
Llame a los mandatos de lectura de parquet, como por ejemplo:
val dataFrame = spark.read.parquet("<path to encrypted files>")
Nota: ` "" ` debe contener la serie ` .encrypted ` en el URL, por ejemplo `/path/to/my_table.parquet.encrypted`.
Tema principal: Cifrado de Parquet