(Opsional) Buat skema (pengguna tingkat lanjut) - AWS Clean Rooms

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 dengansealed,fingerprint, dan kolom cleartext 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 file. Apache Parquet

  • 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:

  1. Kolom sumber mana yang memetakan kolom yang mengubah kolom dalam file output melalui nama tajuknya (skema yang dipetakan) atau posisi (skema posisi)

  2. Kolom target mana yang akan tetap cleartext

  3. Kolom target mana yang akan dienkripsi untuk kueri SELECT

  4. Kolom target mana yang akan dienkripsi untuk kueri JOIN

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— Nama STRING header 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 sourceHeader mana saja dalam skema tidak muncul di file output.

  • targetHeader— Nama STRING header dari kolom yang sesuai dalam file output.

    catatan

    Bidang ini opsional untuk skema yang dipetakan. Jika bidang ini dihilangkan, sourceHeader digunakan kembali untuk nama header dalam output. Entah _fingerprint atau _sealed ditambahkan jika kolom output masing-masing adalah fingerprint kolom atau sealed kolom.

  • type— Kolom target dalam file output. TYPE Yaitu, salah satu cleartextsealed, atau fingerprint tergantung pada bagaimana kolom akan digunakan dalam kolaborasi.

  • pad- Bidang objek skema kolom yang hanya ada saat ada. TYPE sealed Nilai yang sesuai dari PAD adalah objek yang menggambarkan bagaimana data harus empuk sebelum dienkripsi.

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

    Untuk menentukan padding pra-enkripsi, type dan length digunakan sebagai berikut:

    • PAD_TYPEas none — Tidak ada padding yang akan diterapkan pada data kolom dan length bidang tidak berlaku (yaitu, dihilangkan).

    • PAD_TYPEas fixed — Data kolom diempuk dengan byte length yang ditentukan.

    • PAD_TYPEas max — Data kolom diempuk dengan ukuran panjang byte nilai terpanjang ditambah length byte 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— Nama STRING header 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— Nama STRING header dari kolom yang sesuai dalam file output.

    catatan

    Bidang ini diperlukan untuk skema posisi.

  • type— Kolom target dalam file output. TYPE Yaitu, salah satu cleartextsealed, atau fingerprint tergantung pada bagaimana kolom akan digunakan dalam kolaborasi.

  • pad- Bidang objek skema kolom yang hanya ada saat ada. TYPE sealed Nilai yang sesuai dari PAD adalah objek yang menggambarkan bagaimana data harus empuk sebelum dienkripsi.

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

    Untuk menentukan padding pra-enkripsi, type dan length digunakan sebagai berikut:

    • PAD_TYPEas none — Tidak ada padding yang akan diterapkan pada data kolom dan length bidang tidak berlaku (yaitu, dihilangkan).

    • PAD_TYPEas fixed — Data kolom diempuk dengan byte length yang ditentukan.

    • PAD_TYPEas max — Data kolom diempuk dengan ukuran panjang byte nilai terpanjang ditambah length byte 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, max membutuhkan 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=