ステップ 4: 表形式ファイルの暗号化スキーマを生成する - AWS Clean Rooms

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 4: 表形式ファイルの暗号化スキーマを生成する

データを暗号化するには、データの使用方法を記述した暗号化スキーマが必要です。このセクションでは、C3R 暗号化クライアントがヘッダー行またはCSVファイルを含むファイルの暗号化スキーマの生成にどのように役立つかについて説明しますParquet。

この操作はファイルごとに 1 回のみ必要です。スキーマを作成したら、それを再利用して同じファイル (または同じ列名を持つ任意のファイル) を暗号化できます。列名または必要な暗号化スキーマが変更された場合は、スキーマファイルを更新する必要があります。詳細については、「(オプション) スキーマの作成 (上級ユーザー)」を参照してください。

重要

コラボレーションを行うすべての関係者が同じ共有シークレットキーを使用することが最も重要です。また、コラボレーションの関係者は、クエリで列を JOIN する場合や等価比較を行う場合に、列名が一致するように調整する必要があります。そうしないと、SQLクエリが予期しない結果または誤った結果を生成する可能性があります。ただし、コラボレーションクリエーターがコラボレーションの作成中に allowJoinsOnColumnsWithDifferentNames 暗号化設定を有効にしている場合は、これは必要ありません。暗号化に関する設定の詳細については、「暗号コンピューティングパラメータ」を参照してください。

スキーマモードで実行すると、C3R 暗号化クライアントは入力ファイルを列ごとにチェックし、その列を処理すべきかどうか、またどのように処理すべきかのプロンプトを表示します。ファイルに暗号化後の出力では必要のない列が多数含まれていると、不要な列をそれぞれスキップしなければならないため、スキーマ生成のインタラクティブなプロセスが面倒になることがあります。これを回避するには、スキーマを手動で記述するか、必要な列のみを含む簡略版の入力ファイルを作成します。そうすることで、その縮小されたファイルに対してインタラクティブなスキーマ生成プロセスを実行できます。C3R 暗号化クライアントはスキーマファイルに関する情報を出力し、ソース列をターゲット出力にどのように含めるか、またはどのように暗号化するか (暗号化する場合) をたずねます。

入力ファイルのソース列ごとに、次の入力を求められます。

  1. 生成するターゲット列の数

  2. 各ターゲット列を暗号化する方法 (暗号化する場合)

  3. 各ターゲット列の名前

  4. 列をsealed列として暗号化する場合は、暗号化前にデータをどのようにパディングするか

注記

sealed列として暗号化されている列のデータを暗号化する場合は、どのデータをパディングする必要があるかを判断する必要があります。C3R 暗号化クライアントでは、スキーマ生成時に、列のすべてのエントリを同じ長さにするデフォルトのパディングを推奨します。

fixed の長さを決定する際、パディングはビット単位ではなくバイト単位であることに注意してください。

以下はスキーマを作成するための決定表です。

スキーマの決定表
決定 ソース列 <'name-of-column'> のターゲット列の数 Target column type: [c] cleartext, [f] fingerprint, or [s] sealed ? ターゲット列ヘッダー名 <デフォルト 'name-of-column'> Add suffix <suffix> to header to indicate how it was encrypted, [y] yes or [n] no <default 'yes'> <‘name-of-column_詞あり’> パディングタイプ: [n] 1、[f] 固定、または [m] 最大 <デフォルト 'max'>
列を暗号化しない。 1 c 該当しない 該当しない 該当しない
列をfingerprint列として暗号化する。 1 f デフォルトを選択するか、新しいヘッダー名を入力します。 y」を入力してデフォルト (_fingerprint) を選択するか、「n」を入力します。 該当しない
列をsealed列として暗号化する。 1 s デフォルトを選択するか、新しいヘッダー名を入力します。 y」を入力してデフォルト (_sealed) を選択するか、「n」を入力します。

パディングタイプを選択します。

詳細については、「(オプション) スキーマの作成 (上級ユーザー)」を参照してください。

列をfingerprintとsealedの両方として暗号化する。 2

1 番目のターゲット列に「f」と入力します。

2 番目のターゲット列に「s」と入力します。

各ターゲット列のターゲットヘッダーを選択します。 y」を入力してデフォルトを選択するか、「n.」を入力します。

パディングタイプを選択します (sealed列のみ)。

詳細については、「(オプション) スキーマの作成 (上級ユーザー)」を参照してください。

次の 2 つの例は、暗号化スキーマの作成方法を示しています。インタラクションの正確な内容は、入力ファイルとユーザーが入力した回答によって異なります。

例: fingerprint列とcleartext列の暗号化スキーマの生成

この例では、ads.csv に、usernamead_variant の 2 つの列しかありません。これらの列を次のようにします。

  • 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 を実行することができます。または、CLASSPATH環境変数PATH/TO/c3r-cli.jarに を追加した場合は、クラス名を実行することもできます。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列 (_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 という新しいファイルに書き込まれます。

    注記

    スキーマは Windows の Notepad や macOS の TextEdit などの任意のテキストエディタで開いて表示できます。

  10. これで、データを暗号化する準備ができました。

例:sealed、fingerprint、およびcleartext列を含む暗号化スキーマの生成

この例では、sales.csv に、usernamepurchased、および product の 3 つの列があります。これらの列を次のようにします。

  • 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 ファイルについては、 で使用可能なスキーマコマンドの --noHeadersフラグを参照してくださいCLI。

    • --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. これで、データを暗号化する準備ができました。