Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
(Opsional) Buat skema (pengguna tingkat lanjut)
Membuat skema secara manual adalah untuk pengguna tingkat lanjut.
Berikut ini adalah deskripsi format file skema JSON untuk file input dengan atau tanpa header kolom. Pengguna tingkat lanjut dapat langsung menulis atau memodifikasi skema jika diinginkan.
catatan
Klien enkripsi C3R dapat membantu Anda dalam membuat skema melalui proses interaktif yang dijelaskan dalam Contoh: Menghasilkan skema enkripsi dengan sealed, fingerprint, dan cleartext kolom atau melalui pembuatan templat rintisan.
Skema tabel yang dipetakan dan posisi
Bagian berikut menjelaskan dua jenis skema tabel:
-
Skema tabel yang dipetakan - Skema ini digunakan untuk mengenkripsi file.csv dengan baris header dan Apache Parquet berkas.
-
Skema tabel posisi - Skema ini digunakan untuk mengenkripsi file.csv tanpa baris header.
Klien enkripsi C3R dapat mengenkripsi file tabular untuk kolaborasi. Untuk melakukan ini, ia harus memiliki file skema yang sesuai yang menentukan bagaimana output terenkripsi harus diturunkan dari input.
Klien enkripsi C3R dapat membantu menghasilkan skema untuk INPUT file dengan menjalankan perintah skema klien enkripsi C3R di baris perintah. Contoh dari sebuah perintah adalahjava
-jar c3r-cli.jar schema --interactive INPUT.
Skema menentukan informasi berikut:
-
Kolom sumber mana yang memetakan kolom yang mengubah kolom dalam file output melalui nama tajuknya (skema yang dipetakan) atau posisi (skema posisi)
-
Kolom target mana yang akan tetap cleartext
-
Kolom target mana yang akan dienkripsi SELECT pertanyaan
-
Kolom target mana yang akan dienkripsi JOIN pertanyaan
Informasi ini dikodekan dalam file skema JSON khusus tabel, yang terdiri dari satu objek yang bidangnya headerRow adalah nilai Boolean. Nilai harus true untuk Parquet file dan file.csv dengan baris header, dan false sebaliknya.
Skema tabel yang dipetakan
Skema yang dipetakan memiliki bentuk sebagai berikut.
{ "headerRow": true, "columns": [ { "sourceHeader": STRING, "targetHeader": STRING, "type": TYPE, "pad": PAD }, ... ] }
Jika headerRow yatrue, bidang berikutnya dalam objek adalahcolumns, yang berisi larik skema kolom yang memetakan header sumber ke header target (yaitu, objek JSON yang menjelaskan apa yang harus berisi kolom keluaran).
-
sourceHeader— NamaSTRINGheader dari kolom sumber tempat datanya berasal.catatan
Kolom sumber yang sama dapat digunakan untuk beberapa kolom target.
Kolom dari file input yang tidak terdaftar sebagai di
sourceHeadermana saja dalam skema tidak muncul di file output. -
targetHeader— NamaSTRINGheader dari kolom yang sesuai dalam file output.catatan
Bidang ini opsional untuk skema yang dipetakan. Jika bidang ini dihilangkan,
sourceHeaderdigunakan kembali untuk nama header dalam output. Entah_fingerprintatau_sealedditambahkan jika kolom output adalah fingerprint kolom atau sealed kolom masing-masing. -
type— Kolom target dalam file output.TYPEYaitu, salah satucleartextsealed, ataufingerprinttergantung pada bagaimana kolom akan digunakan dalam kolaborasi. -
pad- Bidang objek skema kolom yang hanya ada saat ada.TYPEsealedNilai yang sesuai dariPADadalah objek yang menggambarkan bagaimana data harus empuk sebelum dienkripsi.{ "type": PAD_TYPE, "length": INT }Untuk menentukan padding pra-enkripsi,
typedanlengthdigunakan sebagai berikut:-
PAD_TYPEasnone— Tidak ada padding yang akan diterapkan pada data kolom danlengthbidang tidak berlaku (yaitu, dihilangkan). -
PAD_TYPEasfixed— Data kolom diempuk dengan bytelengthyang ditentukan. -
PAD_TYPEasmax— Data kolom dipadatkan dengan ukuran panjang byte nilai terpanjang ditambahlengthbyte tambahan.
-
Berikut ini adalah contoh skema yang dipetakan, dengan kolom masing-masing jenis.
{ "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 } } ] }
Sebagai contoh yang lebih kompleks, berikut ini adalah contoh file.csv dengan header.
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
Dalam contoh skema dipetakan berikut, kolom FirstName dan LastName kolom. cleartext StateKolom dienkripsi sebagai fingerprint kolom dan sebagai sealed kolom dengan padding. none Kolom yang tersisa dihilangkan.
{ "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" } } ] }
Berikut ini adalah file.csv yang dihasilkan dari skema yang dipetakan.
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=
Skema tabel posisi
Skema posisi memiliki bentuk sebagai berikut.
{ "headerRow": false, "columns": [ [ { "targetHeader": STRING, "type": TYPE, "pad": PAD }, { "targetHeader": STRING, "type": TYPE, "pad": PAD } ], [], ... ] }
Jika headerRow yafalse, bidang berikutnya dalam objek adalahcolumns, yang berisi array entri. Setiap entri itu sendiri merupakan larik skema kolom posisi nol atau lebih (tanpa sourceHeader bidang), yang merupakan objek JSON yang menjelaskan apa yang harus dikandung output.
-
sourceHeader— NamaSTRINGheader dari kolom sumber tempat datanya berasal.catatan
Bidang ini harus dihilangkan dalam skema posisi. Dalam skema posisi, kolom sumber disimpulkan oleh indeks kolom yang sesuai dalam file skema.
-
targetHeader— NamaSTRINGheader dari kolom yang sesuai dalam file output.catatan
Bidang ini diperlukan untuk skema posisi.
-
type— Kolom target dalam file output.TYPEYaitu, salah satucleartextsealed, ataufingerprinttergantung pada bagaimana kolom akan digunakan dalam kolaborasi. -
pad- Bidang objek skema kolom yang hanya ada saat ada.TYPEsealedNilai yang sesuai dariPADadalah objek yang menggambarkan bagaimana data harus empuk sebelum dienkripsi.{ "type": PAD_TYPE, "length": INT }Untuk menentukan padding pra-enkripsi,
typedanlengthdigunakan sebagai berikut:-
PAD_TYPEasnone— Tidak ada padding yang akan diterapkan pada data kolom danlengthbidang tidak berlaku (yaitu, dihilangkan). -
PAD_TYPEasfixed— Data kolom diempuk dengan bytelengthyang ditentukan. -
PAD_TYPEasmax— Data kolom dipadatkan dengan ukuran panjang byte nilai terpanjang ditambahlengthbyte tambahan.catatan
fixedberguna jika Anda tahu sebelumnya batas atas pada ukuran byte data kolom. Kesalahan muncul jika ada data di kolom itu lebih panjang dari yang ditentukanlength.maxnyaman ketika ukuran yang tepat dari data input tidak diketahui karena berfungsi terlepas dari ukuran data. Namun,maxmembutuhkan waktu pemrosesan tambahan karena mengenkripsi data dua kali.maxmengenkripsi data sekali saat dibaca ke file sementara dan sekali setelah entri data terpanjang di kolom diketahui.Juga, panjang nilai terpanjang tidak disimpan di antara pemanggilan klien. Jika Anda berencana untuk mengenkripsi data Anda dalam batch, atau mengenkripsi data baru secara berkala, ketahuilah bahwa panjang ciphertext yang dihasilkan dapat bervariasi antar batch.
-
Berikut ini adalah contoh skema posisi.
{ "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 } } ] ] }
Sebagai contoh kompleks, berikut ini adalah contoh file.csv jika tidak memiliki baris pertama dengan header.
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
Skema posisi memiliki bentuk berikut.
{ "headerRow": false, "columns": [ [ { "targetHeader": "GivenName", "type": "cleartext" } ], [ { "targetHeader": "Surname", "type": "cleartext" } ], [], [], [ { "targetHeader": "State_Join", "type": "fingerprint" }, { "targetHeader": "State", "type": "sealed", "pad": { "type": "none" } } ], [], [], [], [] ] }
Skema sebelumnya menghasilkan file output berikut dengan baris header yang berisi header target yang ditentukan.
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=