Paso 4: generar un esquema de cifrado para un archivo tabular - AWS Clean Rooms

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Paso 4: generar un esquema de cifrado para un archivo tabular

Para cifrar datos, se requiere un esquema de cifrado que describa cómo se utilizarán los datos. En esta sección se describe cómo el cliente de cifrado de C3R ayuda a generar un esquema de cifrado para un archivo CSV con una fila de encabezado o un archivo Parquet.

Solo tiene que hacerlo una vez por archivo. Una vez creado el esquema, se puede volver a utilizar para cifrar el mismo archivo (o cualquier archivo con nombres de columna idénticos). Si los nombres de las columnas o el esquema de cifrado deseado cambian, debe actualizar el archivo de esquema. Para obtener más información, consulte (Opcional) Crear un esquema (usuarios avanzados).

importante

Es imprescindible que todas las partes colaboradoras utilicen la misma clave secreta compartida. Las partes colaboradoras también deben coordinar los nombres de las columnas para que coincidan si se va a ejecutar en ellas una operación JOIN o si se van a comparar de cualquier otro modo para garantizar la igualdad en las consultas. De lo contrario, las consultas SQL podrían producir resultados inesperados o incorrectos. No obstante, esto no será necesario si el creador de la colaboración habilitó la configuración de cifrado allowJoinsOnColumnsWithDifferentNames al crear la colaboración. Para obtener más información acerca de los ajustes relevantes para el cifrado, consulte Parámetros de computación criptográfica.

Cuando se ejecuta en modo de esquema, el cliente de cifrado de C3R revisa el archivo de entrada columna por columna y le pregunta si debe tratarse esa columna y de qué manera. Si el archivo contiene un gran número de columnas que no son necesarias para la salida cifrada, la generación del esquema interactivo podría resultar tediosa, ya que habría que saltarse todas las columnas no deseadas. Para evitarlo, puede escribir un esquema manualmente o crear una versión simplificada del archivo de entrada que incluya solo las columnas deseadas. Entonces, el generador de esquemas interactivo podrá ejecutarse en ese archivo reducido. El cliente de cifrado de C3R genera información sobre el archivo de esquema y le pregunta cómo se deben incluir o cifrar las columnas de origen (si es que se deben incluir) en el resultado de destino.

Para cada columna de origen del archivo de entrada, se le preguntará lo siguiente:

  1. Cuántas columnas de destino se deben generar

  2. Cómo se debe cifrar cada columna de destino (si procede)

  3. El nombre de cada columna de destino

  4. Cómo deben rellenarse los datos antes del cifrado si la columna se cifra como columna sealed

nota

Al cifrar datos de una columna que se ha cifrado como columna sealed, debe determinar qué datos precisan relleno. El cliente de cifrado de C3R sugiere un relleno predeterminado durante la generación del esquema, consistente en rellenar todas las entradas de una columna hasta que alcancen la misma longitud.

Al determinar la longitud fixed, tenga en cuenta que el relleno está en bytes, no en bits.

A continuación se proporciona una tabla de decisión para crear el esquema.

Tabla de decisión del esquema
Decisión ¿Número de columnas de destino de la columna de origen <' '>? name-of-column Tipo de columna de destino: [c] cleartext, [f] fingerprint o [s] sealed? Nombre del encabezado de la columna de destino <default 'name-of-column'> Añadir un sufijo <sufijo> al encabezado para indicar cómo se cifró, [y] sí o [n] no <predeterminado 'yes'> <' name-of-column _sealed'> tipo de relleno: [n] uno, [f] fijo o [m] máximo <default 'max'>
Deje la columna sin cifrar. 1 c No aplicable No aplicable No aplicable
Cifre la columna como columna fingerprint. 1 f Elija el nombre predeterminado o introduzca un nombre de encabezado nuevo. Introduzca y para elegir el valor predeterminado (_fingerprint) o introduzcan. No aplicable
Cifre la columna como columna sealed. 1 s Elija el nombre predeterminado o introduzca un nombre de encabezado nuevo. Introduzca y para elegir el valor predeterminado (_sealed) o introduzcan.

Elija el tipo de relleno.

Para obtener más información, consulte (Opcional) Crear un esquema (usuarios avanzados).

Cifre la columna como fingerprint y sealed. 2

Introduzca la primera columna de destino: f.

Introduzca la segunda columna de destino: s.

Elija los encabezados de destino para cada columna de destino. Introduzca y para elegir el valor predeterminado o introduzca n..

Elija el tipo de relleno (solo para columnas sealed).

Para obtener más información, consulte (Opcional) Crear un esquema (usuarios avanzados).

A continuación se muestran dos ejemplos de cómo crear esquemas de cifrado. El contenido exacto de la interacción depende del archivo de entrada y de las respuestas que proporcione.

Ejemplo: Generar un esquema de cifrado para una columna fingerprint y una columna cleartext

En este ejemplo, para ads.csv, solo hay dos columnas: username y ad_variant. Para estas columnas, queremos lo siguiente:

  • Que la columna username se cifre como columna fingerprint

  • Que la columna ad_variant sea una columna cleartext

Para generar un esquema de cifrado para una columna fingerprint y una columna cleartext
  1. (Opcional) Para garantizar que el archivo c3r-cli.jar y el archivo que se va a cifrar estén presentes:

    1. Desplácese al directorio deseado y ejecute ls (si utiliza Mac o Unix/Linux) o dir si utiliza Windows).

    2. Vea la lista de archivos de datos tabulares (por ejemplo, .csv) y elija el archivo que desea cifrar.

      En este ejemplo, ads.csv es el archivo que queremos cifrar.

  2. Desde la CLI, ejecute el siguiente comando para crear un esquema de forma interactiva.

    java -jar c3r-cli.jar schema ads.csv --interactive --output=ads.json

    nota
    • Puede ejecutar java --jar PATH/TO/c3r-cli.jar. O bien, si ha añadido PATH/TO/c3r-cli.jar a su variable de entorno CLASSPATH, también puede ejecutar el nombre de la clase. El cliente de cifrado de C3R buscará en CLASSPATH para encontrarlo (por ejemplo, java com.amazon.psion.cli.Main).

    • El indicador --interactive selecciona el modo interactivo para desarrollar el esquema. Esto guía al usuario a través de un asistente para crear el esquema. Los usuarios con conocimientos avanzados pueden crear su propio esquema JSON sin necesidad de utilizar el asistente. Para obtener más información, consulte (Opcional) Crear un esquema (usuarios avanzados).

    • El indicador --output establece un nombre de salida. Si no incluye el indicador --output, el cliente de cifrado de C3R intentará elegir un nombre de salida predeterminado (por ejemplo, <input>.out.csv o, para el esquema, <input>.json).

  3. En Number of target columns from source column ‘username’?, escriba 1 y luego presione Intro.

  4. En Target column type: [c]leartext, [f]ingerprint, or [s]ealed?, escriba f y luego presione Intro.

  5. En Target column headername <default 'username'>, presione Intro.

    Se utiliza el nombre predeterminado ‘username’.

  6. En Add suffix '_fingerprint' to header to indicate how it was encrypted, [y]es or [n]o <default 'yes'>, escriba y y luego presione Intro.

    nota

    El modo interactivo sugiere añadir sufijos a los encabezados de las columna cifrados (_fingerprint para las columnas fingerprint y _sealed para las columnas sealed). Los sufijos pueden resultar útiles cuando realizas tareas como cargar datos o crear colaboraciones. Servicios de AWS AWS Clean Rooms Estos sufijos pueden ayudar a indicar qué se puede hacer con los datos cifrados de cada columna. Por ejemplo, la operación no funcionará si cifra una columna como columna sealed (_sealed) e intenta una operación JOIN en ella o a la inversa.

  7. En Number of target columns from source column ‘ad_variant’?, escriba 1 y luego presione Intro.

  8. En Target column type: [c]leartext, [f]ingerprint, or [s]ealed?, escriba c y luego presione Intro.

  9. En Target column headername <default 'username'>, presione Intro.

    Se utiliza el nombre predeterminado ‘ad_variant’.

    El esquema se escribe en un nuevo archivo llamado ads.json.

    nota

    Puede ver el esquema abriéndolo en cualquier editor de texto, por ejemplo, Notepad en Windows o TextEdit en macOS.

  10. Ahora ya puede cifrar datos.

Ejemplo: Generar un esquema de cifrado con columnas sealed, fingerprint y columnas

En este ejemplo, para sales.csv, hay tres columnas: username, purchased y product. Para estas columnas, queremos lo siguiente:

  • Que la product columna sea una columna sealed

  • Que la columna username se cifre como columna fingerprint

  • Que la purchased columna sea una columna cleartext

Para generar un esquema de cifrado con columnas sealed, fingerprint y cleartext
  1. (Opcional) Para garantizar que el archivo c3r-cli.jar y el archivo que se va a cifrar estén presentes:

    1. Desplácese al directorio deseado y ejecute ls (si utiliza Mac o Unix/Linux) o dir si utiliza Windows).

    2. Vea la lista de archivos de datos tabulares (.csv) y elija el archivo que desea cifrar.

      En este ejemplo, sales.csv es el archivo que queremos cifrar.

  2. Desde la CLI, ejecute el siguiente comando para crear un esquema de forma interactiva.

    java -jar c3r-cli.jar schema sales.csv --interactive --output=sales.json

    nota
    • El indicador --interactive selecciona el modo interactivo para desarrollar el esquema. Esto guía al usuario a través de un flujo de trabajo guiado para crear el esquema.

    • Si usted es un usuario avanzado, puede crear su propio esquema JSON sin utilizar el flujo de trabajo guiado. Para obtener más información, consulte (Opcional) Crear un esquema (usuarios avanzados).

    • Para los archivos .csv sin encabezados de columna, consulte el indicador --noHeaders del comando de esquema disponible en la CLI.

    • El indicador --output establece un nombre de salida. Si no incluye el indicador --output, el cliente de cifrado de C3R intentará elegir un nombre de salida predeterminado (por ejemplo, <input>.out o, para el esquema, <input>.json).

  3. En Number of target columns from source column ‘username’?, escriba 1 y luego presione Intro.

  4. En Target column type: [c]leartext, [f]ingerprint, or [s]ealed?, escriba f y luego presione Intro.

  5. En Target column headername <default 'username'>, presione Intro.

    Se utiliza el nombre predeterminado ‘username’.

  6. En Add suffix '_fingerprint' to header to indicate how it was encrypted, [y]es or [n]o <default 'yes'>, escriba y y luego presione Intro.

  7. En Number of target columns from source column ‘purchased’?, escriba 1 y luego presione Intro.

  8. En Target column type: [c]leartext, [f]ingerprint, or [s]ealed?, escriba c y luego presione Intro.

  9. En Target column headername <default 'purchased'>, presione Intro.

    Se utiliza el nombre predeterminado ‘purchased’.

  10. En Number of target columns from source column ‘product’?, escriba 1 y luego presione Intro.

  11. En Target column type: [c]leartext, [f]ingerprint, or [s]ealed?, escriba s y luego presione Intro.

  12. En Target column headername <default 'product'>, presione Intro.

    Se utiliza el nombre predeterminado ‘product’.

  13. En ‘product_sealed’ padding type: [n]one, [f]ixed, or [m]ax <default ’max’?>, presione Intro para elegir el valor predeterminado.

  14. Para Byte-length beyond max length to pad cleartext to in ‘product_sealed’ <default ‘0’>?, presione Intro para elegir el valor predeterminado.

    El esquema se escribe en un nuevo archivo llamado sales.json.

  15. Ahora ya puede cifrar datos.