本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 4:為表格檔案產生加密結構描述
若要加密資料,需要描述資料使用方式的加密結構描述。本節說明 C3R 加密用戶端如何協助為含標題列或檔案的 CSV 檔案產生加密結構描述。Parquet
您只需要在每個文件中執行一次此操作。結構描述存在之後,就可以重複使用它來加密相同的檔案 (或任何具有相同資料行名稱的檔案)。如果資料行名稱或所需的加密結構描述變更,您必須更新結構描述檔案。如需詳細資訊,請參閱 (選擇性) 建立結構描述 (進階使用者)。
重要
至關重要的是,所有合作方都使用相同的共享密鑰。如果合作方將JOIN被編輯或以其他方式比較查詢中的相等性,則合作方還應協調列名以匹配。否則,SQL 查詢可能會產生意外或不正確的結果。但是,如果協同合作建立者在協同合作建立期間啟用了allowJoinsOnColumnsWithDifferentNames
加密設定,則不需要這樣做。如需加密相關設定的詳細資訊,請參閱。密碼計算參數
在結構描述模式下執行時,C3R 加密用戶端會逐欄瀏覽輸入檔案,提示您是否應該以及如何處理該資料行。如果檔案包含許多不需要加密輸出的資料行,互動式結構描述產生可能會變得繁瑣,因為您必須略過每個不需要的資料行。為了避免這種情況,您可以手動編寫結構描述,或創建僅包含所需列的輸入文件的簡化版本。然後,交互式架構生成器可以在該縮小的文件上運行。C3R 加密用戶端會輸出結構描述檔案的相關資訊,並詢問您應如何在目標輸出中包含或加密來源資料行 (如果有的話)。
對於輸入檔案中的每個來源欄,系統會提示您輸入:
-
應該產生多少個目標資料行
-
每個目標資料欄應如何加密 (如果有的話)
-
每個目標資料欄的名稱
-
如果資料行以資料行的形式加密,則在加密之前應如何填充資sealed料
注意
當您針對已加密為資料行的資料行加密資sealed料時,必須判斷哪些資料需要填補。C3R 加密用戶端會在結構描述產生期間建議使用預設填補,將資料行中的所有項目填補至相同長度。
在確定的長度時fixed
,請注意填充是以字節為單位,而不是位。
以下是建立結構描述的決策表。
結構定義決策表 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
決策 | 來源資料欄中的目標資料行數 <' name-of-column '>? | 目標資料欄類型:[c] cleartext fingerprint、[f] 或 [s]sealed? | 目標資料欄標題名稱 <default 'name-of-column'> | 將後綴添加<suffix>到標題以指示它是如何加密的,[y] yes 或 [n] 否 <default 'yes'> | <' name-of-column _ 密封 '> 填補類型:[n] 一個,[f] 固定,或 [m] 最大值 <default 'max'> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
保持未加密的資料欄。 | 1 | c | 不適用 | 不適用 | 不適用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
將資料行加密為fingerprint資料行。 | 1 | f | 選擇預設值或輸入新的表頭名稱。 | 輸入y 以選擇預設值 (_fingerprint ) 或輸入n 。 |
不適用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
將資料行加密為sealed資料行。 | 1 | s | 選擇預設值或輸入新的表頭名稱。 | 輸入y 以選擇預設值 (_sealed ) 或輸入n 。 |
選擇填充類型。 如需詳細資訊,請參閱 (選擇性) 建立結構描述 (進階使用者)。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
將資料行加密為fingerprint和sealed。 | 2 |
輸入第一個目標欄:f。 輸入第二個目標欄:s。 |
選擇每個目標欄的目標標題。 | 輸入y 以選擇預設值或輸入 n. |
選擇填補類型 (僅適用於sealed欄)。 如需詳細資訊,請參閱 (選擇性) 建立結構描述 (進階使用者)。 |
以下是如何建立加密結構描述的兩個範例。互動的確切內容取決於輸入檔案和您提供的回應。
範例:產生資fingerprint料欄和資料欄的加密綱要 cleartext
在此範例中ads.csv
,對於,只有兩欄:username
和ad_variant
。對於這些列,我們需要以下內容:
-
針對要加密為
username
資料fingerprint
行的資料行 -
對於該
ad_variant
列是一cleartext
列
若要產生資fingerprint料欄和資料行的加密結構描述 cleartext
-
(選擇性) 若要確保c3r-cli.jar要加密的檔案和檔案存在:
-
導航到所需的目錄並運行
ls
(如果使用Mac或Unix/Linux)或者dir
如果使用Windows)。 -
檢視表格式資料檔案清單 (例如 .csv),然後選擇要加密的檔案。
在這個例子中,
ads.csv
是我們要加密的文件。
-
-
從 CLI 執行下列命令,以互動方式建立結構描述。
java -jar c3r-cli.jar schema ads.csv --interactive --output=ads.json
注意
-
你可以
java --jar PATH/TO/c3r-cli.jar
跑 或者,如果您已PATH/TO/c3r-cli.jar
將 CLASSPATH 環境變數加入,也可以執行類別名稱。C3R 加密客戶端將在 CLASSPATH 中查找以查找它(例如,)。java com.amazon.psion.cli.Main
-
該
--interactive
標誌選擇用於開發模式的交互模式。這會引導使用者完成建立結構描述的精靈。具備進階技能的使用者可以建立自己的結構描述 JSON,而無需使用精靈。如需詳細資訊,請參閱 (選擇性) 建立結構描述 (進階使用者)。 -
該
--output
標誌設置一個輸出名稱。如果您未包含該--output
標誌,則 C3R 加密用戶端會嘗試挑選預設輸出名稱 (例如<input>.out.csv
或結構描述)。<input>.json
-
-
對於
Number of target columns from source column ‘username’?
,請輸入,1
然後按 Enter。 -
對於
Target column type: [c]leartext, [f]ingerprint, or [s]ealed?
,請輸入,f
然後按 Enter。 -
對於
Target column headername <default 'username'>
,請按 Enter 鍵。使用預設名稱
username
''。 -
對於
Add suffix '_fingerprint' to header to indicate how it was encrypted, [y]es or [n]o <default 'yes'>
,請輸入,y
然後按 Enter。注意
互動模式會建議新增至加密資料行標題的尾碼 (
_fingerprint
適用於fingerprint資料行和資料_sealed
行sealed)。當您執行諸如上傳資料 AWS 服務 或建立 AWS Clean Rooms 共同作業等工作時,字尾可能會有所幫助。這些後綴有助於指示每個列中的加密數據可以做什麼。例如,如果您將列加密為 sealed column (_sealed
) 並嘗試對其進行操作或嘗試反向操作,那麼事情將無法正常工作。JOIN -
對於
Number of target columns from source column ‘ad_variant’?
,請輸入,1
然後按 Enter。 -
對於
Target column type: [c]leartext, [f]ingerprint, or [s]ealed?
,請輸入,c
然後按 Enter。 -
對於
Target column headername <default 'username'>
,請按 Enter 鍵。使用預設名稱
ad_variant
''。結構描述會寫入名為的新檔案
ads.json
。注意
您可以透過在任何文字編輯器中開啟資料架構來檢視資料架構,例如Notepad打開Windows或TextEdit打開macOS。
-
您現在已準備好加密資料。
範例:使用sealed、fingerprint和cleartext欄產生加密綱要
在此範例中sales.csv
,對於,有三欄:username
purchased
、和product
。對於這些列,我們需要以下內容:
-
對於該
product
列是一sealed
列 -
針對要加密為
username
資料fingerprint
行的資料行 -
對於該
purchased
列是一cleartext
列
若要使用sealed、fingerprint和cleartext欄產生加密綱要
-
(選擇性) 若要確保c3r-cli.jar要加密的檔案和檔案存在:
-
導航到所需的目錄並運行
ls
(如果使用Mac或Unix/Linux)或者dir
如果使用Windows)。 -
檢視表格式資料檔案 (.csv) 清單,然後選擇要加密的檔案。
在這個例子中,
sales.csv
是我們要加密的文件。
-
-
從 CLI 執行下列命令,以互動方式建立結構描述。
java -jar c3r-cli.jar schema sales.csv --interactive --output=sales.json
注意
-
該
--interactive
標誌選擇用於開發模式的交互模式。這會引導使用者完成建立結構描述的引導式工作流程。 -
如果您是進階使用者,則無需使用引導式工作流程,即可建立自己的結構定義 JSON。如需詳細資訊,請參閱 (選擇性) 建立結構描述 (進階使用者)。
-
對於沒有欄標題的 .csv 檔案,請參閱 CLI 中可用的結構描述命令的
--noHeaders
旗標。 -
該
--output
標誌設置一個輸出名稱。如果您未包含該--output
標誌,則 C3R 加密用戶端會嘗試挑選預設輸出名稱 (例如<input>.out
或結構描述)。<input>.json
-
-
對於
Number of target columns from source column ‘username’?
,請輸入,1
然後按 Enter。 -
對於
Target column type: [c]leartext, [f]ingerprint, or [s]ealed?
,請輸入,f
然後按 Enter。 -
對於
Target column headername <default 'username'>
,請按 Enter 鍵。使用預設名稱
username
''。 -
對於
Add suffix '_fingerprint' to header to indicate how it was encrypted, [y]es or [n]o <default 'yes'>
,請輸入,y
然後按 Enter。 -
對於
Number of target columns from source column ‘purchased’?
,請輸入,1
然後按 Enter。 -
對於
Target column type: [c]leartext, [f]ingerprint, or [s]ealed?
,請輸入,c
然後按 Enter。 -
對於
Target column headername <default 'purchased'>
,請按 Enter 鍵。使用預設名稱
purchased
''。 -
對於
Number of target columns from source column ‘product’?
,請輸入,1
然後按 Enter。 -
對於
Target column type: [c]leartext, [f]ingerprint, or [s]ealed?
,請輸入,s
然後按 Enter。 -
對於
Target column headername <default 'product'>
,請按 Enter 鍵。使用預設名稱
product
''。 -
對於
‘product_sealed’ padding type: [n]one, [f]ixed, or [m]ax <default ’max’?>
,按 Enter 選擇預設值。 -
若要選擇預設值,請
Byte-length beyond max length to pad cleartext to in ‘product_sealed’ <default ‘0’>?
按 Enter 鍵。結構描述會寫入名為的新檔案
sales.json
。 -
您現在已準備好加密資料。