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, fingerprint, und cleartext Spalten 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 verwendet und Apache Parquet Dateien.
-
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:
-
Welche Quellspalten werden anhand ihrer Header-Namen (zugeordnete Schemas) oder ihrer Position (Positionsschemas) welchen transformierten Spalten in der Ausgabedatei zugeordnet
-
Welche Zielspalten sollen erhalten bleiben cleartext
-
Für welche Zielspalten sollen verschlüsselt werden SELECT queries
-
Für welche Zielspalten sollen verschlüsselt werden JOIN queries
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 für sein true
Parquet Dateien und CSV-Dateien mit einer Kopfzeile und false
andere.
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 Quellkopfzeilen Zielüberschriften zuordnen (d. h. JSON-Objekte, die beschreiben, was die Ausgabespalten enthalten sollen).
-
sourceHeader
— DerSTRING
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
— DerSTRING
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 die Ausgabespalte ein fingerprint Spalte oder sealed jeweils eine Spalte. -
type
— DieTYPE
der Zielspalte in der Ausgabedatei. Das heißt, eine voncleartext
sealed
, oderfingerprint
hängt davon ab, wie die Spalte in der Kollaboration verwendet wird. -
pad
— Ein Feld eines Spaltenschemaobjekts, das nur vorhanden ist, wenn es vorhandenTYPE
istsealed
. Sein entsprechender Wert vonPAD
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
undlength
werden wie folgt verwendet:-
PAD_TYPE
asnone
— Auf die Daten der Spalte wird kein Auffüllen angewendet, und daslength
Feld ist nicht zutreffend (d. h. es wird weggelassen). -
PAD_TYPE
asfixed
— Die Daten der Spalte werden auf die angegebene Anzahllength
von Byte aufgefüllt. -
PAD_TYPE
asmax
— Die Daten der Spalte werden auf die Größe der Bytelänge des längsten Werts zuzüglich weitererlength
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 handelt es sich bei den Spalten FirstName
und LastName
um 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
— DerSTRING
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
— DerSTRING
Header-Name der entsprechenden Spalte in der Ausgabedatei.Anmerkung
Dieses Feld ist für Positionsschemas erforderlich.
-
type
— DieTYPE
der Zielspalte in der Ausgabedatei. Das heißt, eine voncleartext
sealed
, oderfingerprint
hängt davon ab, wie die Spalte in der Kollaboration verwendet wird. -
pad
— Ein Feld eines Spaltenschemaobjekts, das nur vorhanden ist, wenn es vorhandenTYPE
istsealed
. Sein entsprechender Wert vonPAD
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
undlength
werden wie folgt verwendet:-
PAD_TYPE
asnone
— Auf die Daten der Spalte wird kein Auffüllen angewendet, und daslength
Feld ist nicht zutreffend (d. h. es wird weggelassen). -
PAD_TYPE
asfixed
— Die Daten der Spalte werden auf die angegebene Anzahllength
von Byte aufgefüllt. -
PAD_TYPE
asmax
— Die Daten der Spalte werden auf die Größe der Bytelänge des längsten Werts zuzüglich weitererlength
Byte aufgefüllt.Anmerkung
fixed
ist 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
.max
ist praktisch, wenn die genaue Größe der Eingabedaten unbekannt ist, da es unabhängig von der Größe der Daten funktioniert.max
Erfordert jedoch zusätzliche Verarbeitungszeit, da die Daten zweimal verschlüsselt werden.max
verschlü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=