步驟 4:為表格檔案產生加密結構描述 - AWS Clean Rooms

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 4:為表格檔案產生加密結構描述

若要加密資料,需要描述資料使用方式的加密結構描述。本節說明 C3R 加密用戶端如何協助為含標題列或檔案的 CSV 檔案產生加密結構描述。Parquet

您只需要在每個文件中執行一次此操作。結構描述存在之後,就可以重複使用它來加密相同的檔案 (或任何具有相同資料行名稱的檔案)。如果資料行名稱或所需的加密結構描述變更,您必須更新結構描述檔案。如需詳細資訊,請參閱 (選擇性) 建立結構描述 (進階使用者)

重要

至關重要的是,所有合作方都使用相同的共享密鑰。如果合作方將JOIN被編輯或以其他方式比較查詢中的相等性,則合作方還應協調列名以匹配。否則,SQL 查詢可能會產生意外或不正確的結果。但是,如果協同合作建立者在協同合作建立期間啟用了allowJoinsOnColumnsWithDifferentNames加密設定,則不需要這樣做。如需加密相關設定的詳細資訊,請參閱。密碼計算參數

在結構描述模式下執行時,C3R 加密用戶端會逐欄瀏覽輸入檔案,提示您是否應該以及如何處理該資料行。如果檔案包含許多不需要加密輸出的資料行,互動式結構描述產生可能會變得繁瑣,因為您必須略過每個不需要的資料行。為了避免這種情況,您可以手動編寫結構描述,或創建僅包含所需列的輸入文件的簡化版本。然後,交互式架構生成器可以在該縮小的文件上運行。C3R 加密用戶端會輸出結構描述檔案的相關資訊,並詢問您應如何在目標輸出中包含或加密來源資料行 (如果有的話)。

對於輸入檔案中的每個來源欄,系統會提示您輸入:

  1. 應該產生多少個目標資料行

  2. 每個目標資料欄應如何加密 (如果有的話)

  3. 每個目標資料欄的名稱

  4. 如果資料行以資料行的形式加密,則在加密之前應如何填充資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,對於,只有兩欄:usernamead_variant。對於這些列,我們需要以下內容:

  • 針對要加密為username資料fingerprint行的資料行

  • 對於該ad_variant列是一cleartext

若要產生資fingerprint料欄和資料行的加密結構描述 cleartext
  1. (選擇性) 若要確保c3r-cli.jar要加密的檔案和檔案存在:

    1. 導航到所需的目錄並運行ls(如果使用Mac或Unix/Linux)或者dir如果使用Windows)。

    2. 檢視表格式資料檔案清單 (例如 .csv),然後選擇要加密的檔案。

      在這個例子中,ads.csv是我們要加密的文件。

  2. 從 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

  3. 對於Number of target columns from source column ‘username’?,請輸入,1然後按 Enter

  4. 對於Target column type: [c]leartext, [f]ingerprint, or [s]ealed?,請輸入,f然後按 Enter

  5. 對於Target column headername <default 'username'>按 Enter 鍵。

    使用預設名稱 username ''。

  6. 對於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

  7. 對於Number of target columns from source column ‘ad_variant’?,請輸入,1然後按 Enter

  8. 對於Target column type: [c]leartext, [f]ingerprint, or [s]ealed?,請輸入,c然後按 Enter

  9. 對於Target column headername <default 'username'>按 Enter 鍵。

    使用預設名稱 ad_variant ''。

    結構描述會寫入名為的新檔案ads.json

    注意

    您可以透過在任何文字編輯器中開啟資料架構來檢視資料架構,例如Notepad打開Windows或TextEdit打開macOS。

  10. 您現在已準備好加密資料

範例:使用sealed、fingerprint和cleartext欄產生加密綱要

在此範例中sales.csv,對於,有三欄:usernamepurchased、和product。對於這些列,我們需要以下內容:

  • 對於該product列是一sealed

  • 針對要加密為username資料fingerprint行的資料行

  • 對於該purchased列是一cleartext

若要使用sealed、fingerprint和cleartext欄產生加密綱要
  1. (選擇性) 若要確保c3r-cli.jar要加密的檔案和檔案存在:

    1. 導航到所需的目錄並運行ls(如果使用Mac或Unix/Linux)或者dir如果使用Windows)。

    2. 檢視表格式資料檔案 (.csv) 清單,然後選擇要加密的檔案。

      在這個例子中,sales.csv是我們要加密的文件。

  2. 從 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

  3. 對於Number of target columns from source column ‘username’?,請輸入,1然後按 Enter

  4. 對於Target column type: [c]leartext, [f]ingerprint, or [s]ealed?,請輸入,f然後按 Enter

  5. 對於Target column headername <default 'username'>按 Enter 鍵。

    使用預設名稱 username ''。

  6. 對於Add suffix '_fingerprint' to header to indicate how it was encrypted, [y]es or [n]o <default 'yes'>,請輸入,y然後按 Enter

  7. 對於Number of target columns from source column ‘purchased’?,請輸入,1然後按 Enter

  8. 對於Target column type: [c]leartext, [f]ingerprint, or [s]ealed?,請輸入,c然後按 Enter

  9. 對於Target column headername <default 'purchased'>按 Enter 鍵。

    使用預設名稱 purchased ''。

  10. 對於Number of target columns from source column ‘product’?,請輸入,1然後按 Enter

  11. 對於Target column type: [c]leartext, [f]ingerprint, or [s]ealed?,請輸入,s然後按 Enter

  12. 對於Target column headername <default 'product'>按 Enter 鍵。

    使用預設名稱 product ''。

  13. 對於‘product_sealed’ padding type: [n]one, [f]ixed, or [m]ax <default ’max’?>,按 Enter 選擇預設值。

  14. 若要選擇預設值,Byte-length beyond max length to pad cleartext to in ‘product_sealed’ <default ‘0’>?按 Enter 鍵。

    結構描述會寫入名為的新檔案sales.json

  15. 您現在已準備好加密資料