(Optional) Erstellen Sie ein Schema (fortgeschrittene Benutzer) - AWS Clean Rooms

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

(Optional) Erstellen Sie ein Schema (fortgeschrittene Benutzer)

Das manuelle Erstellen eines Schemas ist für fortgeschrittene Benutzer vorgesehen.

Im Folgenden finden Sie eine Beschreibung des JSON Schemadateiformats für Eingabedateien mit oder ohne Spaltenüberschriften. Fortgeschrittene Benutzer können das Schema bei Bedarf direkt schreiben oder ändern.

Anmerkung

Der C3R-Verschlüsselungsclient kann Sie bei der Erstellung eines Schemas entweder durch den unter beschriebenen interaktiven Prozess Beispiel: Generieren Sie ein Verschlüsselungsschema mit sealed Spaltenfingerprint, und cleartext oder durch die Erstellung einer Stub-Vorlage unterstützen.

Schemas für zugeordnete und positionierte Tabellen

Im folgenden Abschnitt werden zwei Arten von Tabellenschemas beschrieben:

  • Zugeordnetes Tabellenschema — Dieses Schema wird für die Verschlüsselung von CSV-Dateien mit einer Kopfzeile und Dateien verwendet. Apache Parquet

  • Positionstabellenschema — Dieses Schema wird zum Verschlüsseln von CSV-Dateien ohne Kopfzeile verwendet.

Der C3R-Verschlüsselungsclient kann eine tabellarische Datei für eine Zusammenarbeit verschlüsseln. Dazu muss er über eine entsprechende Schemadatei verfügen, die angibt, wie die verschlüsselte Ausgabe aus der Eingabe abgeleitet werden soll.

Der C3R-Verschlüsselungsclient kann helfen, ein Schema für eine INPUT Datei zu generieren, indem er den Befehl C3R-Verschlüsselungsclient Schema in der Befehlszeile ausführt. Ein Beispiel für einen Befehl ist. java -jar c3r-cli.jar schema --interactive INPUT

Das Schema spezifiziert die folgenden Informationen:

  1. Welche Quellspalten werden anhand ihrer Header-Namen (zugeordnete Schemas) oder ihrer Position (Positionsschemas) welchen transformierten Spalten in der Ausgabedatei zugeordnet

  2. Welche Zielspalten sollen erhalten bleiben cleartext

  3. Welche Zielspalten sollen für SELECT Abfragen verschlüsselt werden

  4. Welche Zielspalten sollen für JOIN Abfragen verschlüsselt werden

Diese Informationen sind in einer tabellenspezifischen JSON Schemadatei kodiert, die aus einem einzigen Objekt besteht, dessen headerRow Feld ein boolescher Wert ist. Der Wert muss true für Parquet Dateien und CSV-Dateien mit einer Kopfzeile gelten, andernfalls. false

Zugeordnetes Tabellenschema

Das zugeordnete Schema hat die folgende Form.

{ "headerRow": true, "columns": [ { "sourceHeader": STRING, "targetHeader": STRING, "type": TYPE, "pad": PAD }, ... ] }

Falls headerRow jatrue, ist das nächste Feld im Objektcolumns, das eine Reihe von Spaltenschemas enthält, die Quellüberschriften Zielüberschriften zuordnen (d. h. JSON Objekte, die beschreiben, was die Ausgabespalten enthalten sollen).

  • sourceHeader— Der STRING Header-Name der Quellspalte, aus der die Daten abgeleitet wurden.

    Anmerkung

    Dieselbe Quellspalte kann für mehrere Zielspalten verwendet werden.

    Eine Spalte aus der Eingabedatei, die nicht sourceHeader irgendwo im Schema aufgeführt ist, erscheint nicht in der Ausgabedatei.

  • targetHeader— Der STRING Header-Name der entsprechenden Spalte in der Ausgabedatei.

    Anmerkung

    Dieses Feld ist für zugeordnete Schemas optional. Wenn dieses Feld weggelassen wird, sourceHeader wird das für den Header-Namen in der Ausgabe wiederverwendet. Entweder _fingerprint oder _sealed wird angehängt, wenn es sich bei der Ausgabespalte um eine fingerprint Spalte bzw. sealed Spalte handelt.

  • type— Die TYPE der Zielspalte in der Ausgabedatei. Das heißt, eine von cleartextsealed, oder fingerprint hängt davon ab, wie die Spalte in der Kollaboration verwendet wird.

  • pad— Ein Feld eines Spaltenschemaobjekts, das nur vorhanden ist, wenn es vorhanden TYPE istsealed. Sein entsprechender Wert von PAD ist ein Objekt, das beschreibt, wie die Daten aufgefüllt werden sollen, bevor sie verschlüsselt werden.

    { "type": PAD_TYPE, "length": INT }

    Sie geben die Auffüllung vor der Verschlüsselung an type und length werden wie folgt verwendet:

    • PAD_TYPEas none — Auf die Daten der Spalte wird kein Auffüllen angewendet, und das length Feld ist nicht zutreffend (d. h. es wird weggelassen).

    • PAD_TYPEas fixed — Die Daten der Spalte werden auf die angegebene Anzahl length von Byte aufgefüllt.

    • PAD_TYPEas max — Die Daten der Spalte werden auf die Größe der Bytelänge des längsten Werts zuzüglich weiterer length Byte aufgefüllt.

Im Folgenden finden Sie ein Beispiel für ein zugeordnetes Schema mit einer Spalte für jeden Typ.

{ "headerRow": true, "columns": [ { "sourceHeader": "FullName", "targetHeader": "name", "type": "cleartext" }, { "sourceHeader": "City", "targetHeader": "city_sealed", "type": "sealed", "pad": { "type": "max", "length": 16 } }, { "sourceHeader": "PhoneNumber", "targetHeader": "phone_number_fingerprint", "type": "fingerprint" }, { "sourceHeader": "PhoneNumber", "targetHeader": "phone_number_sealed", "type": "sealed", "pad": { "type": "fixed", "length": 20 } } ] }

Als komplexeres Beispiel finden Sie im Folgenden eine CSV-Beispieldatei mit Headern.

FirstName,LastName,Address,City,State,PhoneNumber,Title,Level,Notes Jorge,Souza,12345 Mills Rd,Anytown,SC,703-555-1234,CEO,10, Paulo,Santos,0 Street,Anytown,MD,404-555-111,CIO,9,This is a really long note that could really be a paragraph Mateo,Jackson,1 Two St,Anytown,NY,304-555-1324,COO,9,"" Terry,Whitlock4 N St,Anytown,VA,407-555-8888,EA,7,Secret notes Diego,Ramirez,9 Hollows Rd,Anytown,VA,407-555-1222,SDE I,4,null John,Doe,8 Hollows Rd,Anytown,VA,407-555-4321,SDE I,4,Jane's younger brother Jane,Doe,8 Hollows Rd,Anytown,VA,407-555-4322,SDE II,5,John's older sister

Im folgenden Beispiel für ein zugeordnetes Schema sind die Spalten FirstName und LastName Spalten. cleartext Die State Spalte ist als fingerprint Spalte und als sealed Spalte mit einer Auffüllung von verschlüsselt. none Die übrigen Spalten werden weggelassen.

{ "headerRow": true, "columns": [ { "sourceHeader": "FirstName", "targetHeader": "GivenName", "type": "cleartext" }, { "sourceHeader": "LastName", "targetHeader": "Surname", "type": "cleartext" }, { "sourceHeader": "State", "targetHeader": "State_Join", "type": "fingerprint" }, { "sourceHeader": "State", "targetHeader": "State", "type": "sealed", "pad": { "type": "none" } } ] }

Im Folgenden finden Sie die CSV-Datei, die sich aus dem zugewiesenen Schema ergibt.

givenname,surname,state_fingerprint,state John,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:FQ3n3Ahv9BQQNWQGcugeHzHYzEZE1vapHa2Uu4SRgSAtZ3qObjPA4TcsHt+BOkMKBcnHWI13BeGG/SBqmj7vKpI= Paulo,Santos,01:hmac:CHF4eIrtTNgAooU9v4h9Qjc+txBnMidQTjdjWuaDTTA=,01:enc:KZ5n5GtaXACco65AXk48BQO2durDNR2ULc4YxmMC8NaZZKKJiksU1IwFadAvV4iBQ1Bus5TU5c4biez3bilfTY8= Mateo,Jackson,01:hmac:iIRnjfNBzryusIJ1w35lgNzeY1RQ1bSfq6PDHW8Xrbk=,01:enc:mLKpS5HIOSgphdEsrzhEdIp/eN9nBO2gAbIygt4OFn4LalYn9Xyj/XUWXlmn8zFe2T4kyDTD8kGOvpQEUGxAUFk= Diego,Ramirez,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:rmZhT98Zm+IIGw1UTjMIJP4IrW/AAltBLMXcHvnYfRgmWP623VFQ6aUnhsb2MDqEw4G5Uwg5rKKZepUxx5uKbfk= Jorge,Souza,01:hmac:3BxJdXiFFyZ8HBbYNqqEhBVqhNOd7s2ZiKUe7QiTyo8=,01:enc:vVaqWC1VRbhvkf8gnuR7q0zxVPcvEjuaglYz34+KyyLcGZLpAmsDUc6wZ07f2KvHoOySqRsEU7dG1QfdHYcTSWE= Terry,Whitlock01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:3c9VEWbODO/xbQjdGuccLvI7oZTBdPU+SyrJIyr2kudfAxbuMQ2uRdU/q7rbgyJjxZS8M2U35ILJf/lDgTyg7cM= Jane,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:9RWv46YLveykeNZ/G0NdlYFg+AVdOnu05hHyAYTQkPLHnyX+0/jbzD/g9ZT8GCgVE9aB5bV4ooJIXHGBVMXcjrQ=

Positionstabellenschema

Das Positionsschema hat die folgende Form.

{ "headerRow": false, "columns": [ [ { "targetHeader": STRING, "type": TYPE, "pad": PAD }, { "targetHeader": STRING, "type": TYPE, "pad": PAD } ], [], ... ] }

Falls headerRow jafalse, ist das nächste Feld im Objektcolumns, das eine Reihe von Einträgen enthält. Jeder Eintrag ist selbst ein Array von null oder mehr positionellen Spaltenschemas (kein sourceHeader Feld). Dabei handelt es sich um JSON Objekte, die beschreiben, was die Ausgabe enthalten soll.

  • sourceHeader— Der STRING Header-Name der Quellspalte, aus der die Daten abgeleitet werden.

    Anmerkung

    Dieses Feld muss in Positionsschemas weggelassen werden. In Positionsschemas wird die Quellspalte aus dem entsprechenden Index der Spalte in der Schemadatei abgeleitet.

  • targetHeader— Der STRING Header-Name der entsprechenden Spalte in der Ausgabedatei.

    Anmerkung

    Dieses Feld ist für Positionsschemas erforderlich.

  • type— Die TYPE der Zielspalte in der Ausgabedatei. Das heißt, eine von cleartextsealed, oder fingerprint hängt davon ab, wie die Spalte in der Kollaboration verwendet wird.

  • pad— Ein Feld eines Spaltenschemaobjekts, das nur vorhanden ist, wenn es vorhanden TYPE istsealed. Sein entsprechender Wert von PAD ist ein Objekt, das beschreibt, wie die Daten aufgefüllt werden sollen, bevor sie verschlüsselt werden.

    { "type": PAD_TYPE, "length": INT }

    Sie geben die Auffüllung vor der Verschlüsselung an type und length werden wie folgt verwendet:

    • PAD_TYPEas none — Auf die Daten der Spalte wird kein Auffüllen angewendet, und das length Feld ist nicht zutreffend (d. h. es wird weggelassen).

    • PAD_TYPEas fixed — Die Daten der Spalte werden auf die angegebene Anzahl length von Byte aufgefüllt.

    • PAD_TYPEas max — Die Daten der Spalte werden auf die Größe der Bytelänge des längsten Werts zuzüglich weiterer length Byte aufgefüllt.

      Anmerkung

      fixedist nützlich, wenn Sie im Voraus eine Obergrenze für die Bytegröße der Spaltendaten kennen. Ein Fehler wird ausgelöst, wenn Daten in dieser Spalte länger als angegeben sindlength.

      maxist praktisch, wenn die genaue Größe der Eingabedaten unbekannt ist, da es unabhängig von der Größe der Daten funktioniert. maxErfordert jedoch zusätzliche Verarbeitungszeit, da die Daten zweimal verschlüsselt werden. maxverschlüsselt die Daten einmal, wenn sie in die temporäre Datei eingelesen werden, und einmal, nachdem der längste Dateneintrag in der Spalte bekannt ist.

      Außerdem wird die Länge des längsten Werts zwischen Aufrufen des Clients nicht gespeichert. Wenn Sie planen, Ihre Daten stapelweise oder regelmäßig neue Daten zu verschlüsseln, beachten Sie, dass die daraus resultierenden Chiffretext-Längen je nach Batch variieren können.

Im Folgenden finden Sie ein Beispiel für ein Positionsschema.

{ "headerRow": false, "columns": [ [ { "targetHeader": "name", "type": "cleartext" } ], [ { "targetHeader": "city_sealed", "type": "sealed", "pad": { "type": "max", "length": 16 } } ], [ { "targetHeader": "phone_number_fingerprint", "type": "fingerprint" }, { "targetHeader": "phone_number_sealed", "type": "sealed", "pad": { "type": "fixed", "length": 20 } } ] ] }

Im Folgenden finden Sie ein Beispiel für eine CSV-Beispieldatei, falls sie nicht die erste Zeile mit den Überschriften hatte.

Jorge,Souza,12345 Mills Rd,Anytown,SC, 703 -555 -1234,CEO, 10, Paulo,Santos, 0 Street,Anytown,MD, 404-555-111,CIO, 9,This is a really long note that could really be a paragraph Mateo,Jackson, 1 Two St,Anytown,NY, 304-555-1324,COO, 9, "" Terry,Whitlock, 4 N St,Anytown,VA, 407-555-8888,EA, 7,Secret notes Diego,Ramirez, 9 Hollows Rd,Anytown,VA, 407-555-1222,SDE I, 4,null John,Doe, 8 Hollows Rd,Anytown,VA, 407-555-4321,SDE I, 4,Jane's younger brother Jane,Doe, 8 Hollows Rd,Anytown,VA, 407-555-4322,SDE II, 5,John's older sister

Das Positionsschema hat die folgende Form.

{ "headerRow": false, "columns": [ [ { "targetHeader": "GivenName", "type": "cleartext" } ], [ { "targetHeader": "Surname", "type": "cleartext" } ], [], [], [ { "targetHeader": "State_Join", "type": "fingerprint" }, { "targetHeader": "State", "type": "sealed", "pad": { "type": "none" } } ], [], [], [], [] ] }

Das vorherige Schema erzeugt die folgende Ausgabedatei mit einer Kopfzeile, die die angegebenen Ziel-Header enthält.

givenname,surname,state_fingerprint,state Mateo,Jackson,01:hmac:iIRnjfNBzryusIJ1w35lgNzeY1RQ1bSfq6PDHW8Xrbk=,01:enc:ENS6QD3cMVl9vQEGfe9MNWfR0UOupchswZFr94zOMG5jY/Q8m/Y5SA89dJwKpT5rGPp8e36h6klwDoslpFzGvU0= Jorge,Souza,01:hmac:3BxJdXiFFyZ8HBbYNqqEhBVqhNOd7s2ZiKUe7QiTyo8=,01:enc:LKo0zirq2++XEIIIMNRjAsGMdyWUDwYaum0B+IFP+rUf1BNeZDJjtFe1Z+zbZfXQWwJy52Rt7HqvAb2WIK1oMmk= Paulo,Santos,01:hmac:CHF4eIrtTNgAooU9v4h9Qjc+txBnMidQTjdjWuaDTTA=,01:enc:MyQKyWxJ9kvK1xDQQtXlUNwv3F+yrBRr0xrUY/1BGg5KFgOn9pK+MZ7g+ZNqZEPcPz4lht1u0t/wbTaqzOCLXFQ= Jane,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:Pd8sbITBfb0/ttUB4svVsgoYkDfnDvgkvxzeci0Yxq54rLSwccy1o3/B50C3cpkkn56dovCwzgmmPNwrmCmYtb4= Terry,Whitlock01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:Qmtzu3B3GAXKh2KkRYTiEAaMopYedsSdF2e/ADUiBQ9kv2CxKPzWyYTD3ztmKPMka19dHre5VhUHNpO3O+j1AQ8= Diego,Ramirez,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:ysdg+GHKdeZrS/geBIooOEPLHG68MsWpx1dh3xjb+fG5rmFmqUcJLNuuYBHhHAlxchM2WVeV1fmHkBX3mvZNvkc= John,Doe,01:hmac:UK8s8Cn/WR2JO/To2dTxWD73aDEe2ZUXeSHy3Tv+1Mk=,01:enc:9uX0wZuO7kAPAx+Hf6uvQownkWqFSKtWS7gQIJSe5aXFquKWCK6yZN0X5Ea2N3bn03Uj1kh0agDWoiP9FRZGJA4=