Gestión de claves por aplicación

En este tema se describe cómo gestionar las claves de cifrado de columnas por aplicación. Explica cómo generar claves maestras y cómo escribir y leer datos cifrados utilizando dichas claves maestras.

Suministro de llaves maestras

Para proporcionar llaves maestras:

  1. Introduce las claves maestras explícitas con el siguiente formato:

    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 de 16, 24 o 32 bytes (128, 192 o 256 bits).

Escritura de datos cifrados

Para escribir datos cifrados:

  1. Especifique qué columnas desea cifrar y qué claves maestras desea utilizar:

    parameter name:  "encryption.column.keys"
    parameter value: "<master key ID>:<column>,<column>;<master key ID>:<column> .."
    
  2. Especifica la clave del 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 cadena `.encrypted` en el URL, por ejemplo ` /path/to/my_table.parquet.encrypted `. Si el parámetro `" encryption.column.keys "` o el parámetro `" encryption.footer.key "` no están establecidos, se lanzará una excepción.

Lectura de datos cifrados

Los metadatos necesarios se almacenan en los archivos Parquet cifrados.

Para leer los datos cifrados:

  1. Proporcione las claves de cifrado:

    sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
    
  2. Ejecuta los comandos habituales de lectura de Parquet, como:

    val dataFrame = spark.read.parquet("<path to encrypted files>")
    
    Nota: ` "" debe contener la cadena `.encrypted` en el URL, por ejemplo ` /path/to/my_table.parquet.encrypted `.