

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

# ステップ 4: 表形式ファイルの暗号化スキーマを生成する
<a name="gen-encryption-schema-csv"></a>

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

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

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

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

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

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

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

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

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

**注記**  
sealed列として暗号化されている列のデータを暗号化する場合は、どのデータをパディングする必要があるかを判断する必要があります。C3R 暗号化クライアントでは、スキーマ生成時に、列のすべてのエントリを同じ長さにするデフォルトのパディングを推奨します。  
`fixed` の長さを決定する際、パディングはビット単位ではなくバイト単位であることに注意してください。

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


**スキーマの決定表**  

| 決定 | Number of target columns from source column <‘name-of-column’> ? | Target column type: [c] cleartext, [f] fingerprint, or [s] sealed ? | Target column headername <default 'name-of-column'> | Add suffix <suffix> to header to indicate how it was encrypted, [y] yes or [n] no <default 'yes'> | <‘name-of-column\_sealed’> padding type: [n] one, [f] fixed, or [m] max <default ’max’> | 
| --- | --- | --- | --- | --- | --- | 
| 列を暗号化しない。 | 1 | c | 該当しない | 該当しない | 該当しない | 
| 列をfingerprint列として暗号化する。 | 1 | f | デフォルトを選択するか、新しいヘッダー名を入力します。 | 「y」を入力してデフォルト (\_fingerprint) を選択するか、「n」を入力します。 | 該当しない | 
| 列をsealed列として暗号化する。 | 1 | s | デフォルトを選択するか、新しいヘッダー名を入力します。 | 「y」を入力してデフォルト (\_sealed) を選択するか、「n」を入力します。 | パディングタイプを選択します。<br />詳細については、「[(オプション) スキーマの作成 (上級ユーザー)](create-schema.md)」を参照してください。 | 
| 列をfingerprintとsealedの両方として暗号化する。 | 2 | 1 番目のターゲット列に「**f**」と入力します。<br />2 番目のターゲット列に「**s**」と入力します。 | 各ターゲット列のターゲットヘッダーを選択します。 | 「y」を入力してデフォルトを選択するか、「n.」を入力します。 | パディングタイプを選択します (sealed列のみ)。<br />詳細については、「[(オプション) スキーマの作成 (上級ユーザー)](create-schema.md)」を参照してください。 | 

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

**Topics**
+ [例: fingerprint列とcleartext列の暗号化スキーマの生成](#gen-encryption-schema_join)
+ [例:sealed、fingerprint、およびcleartext列を含む暗号化スキーマの生成](#gen-encryption-schema)

## 例: fingerprint列とcleartext列の暗号化スキーマの生成
<a name="gen-encryption-schema_join"></a>

この例では、`ads.csv` に、`username` と `ad_variant` の 2 つの列しかありません。これらの列を次のようにします。
+ `username` 列を `fingerprint` 列として暗号化する
+ `ad_variant` 列を `cleartext` 列にする

**fingerprint列とcleartext列の暗号化スキーマを生成するには**

1. (**オプション) c3r-cli.jar ファイルと暗号化するファイルが存在することを確認します。

   1. 目的のディレクトリに移動し、`ls` (Mac または Unix/Linux を使用している場合)、あるいは `dir` (Windows を使用している場合) を実行します。

   1. 表形式のデータファイル (.csv など) のリストを表示し、暗号化するファイルを選択します。

      この例では、`ads.csv` が暗号化するファイルです。

1. 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 を作成できます。詳細については、「[(オプション) スキーマの作成 (上級ユーザー)](create-schema.md)」を参照してください。
`--output` フラグは出力名を設定するものです。`--output` フラグを含めないと、C3R 暗号化クライアントはデフォルトの出力名 (`<input>.out.csv`、またはスキーマには `<input>.json` など) を選択しようとします。

1. `Number of target columns from source column ‘username’?` で「**1**」を入力して、**Enter** キーを押します。

1. `Target column type: [c]leartext, [f]ingerprint, or [s]ealed?` で「**f**」を入力して、**Enter** キーを押します。

1. `Target column headername <default 'username'>` で **Enter** キーを押します。

   デフォルトのユーザー名「`username`」が使用されます。

1. `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 を実行しようとしても (またはその逆を試みても)、正常に処理されません。

1. `Number of target columns from source column ‘ad_variant’?` で「**1**」を入力して、**Enter** キーを押します。

1. `Target column type: [c]leartext, [f]ingerprint, or [s]ealed?` で「**c**」を入力して、**Enter** キーを押します。

1. `Target column headername <default 'username'>` で **Enter** キーを押します。

   デフォルトのユーザー名「`ad_variant`」が使用されます。

   スキーマが `ads.json` という新しいファイルに書き込まれます。
**注記**  
スキーマは Windows の Notepad や macOS の TextEdit などの任意のテキストエディタで開いて表示できます。

1. これで、[データを暗号化](encrypt-data.md)する準備ができました。

## 例:sealed、fingerprint、およびcleartext列を含む暗号化スキーマの生成
<a name="gen-encryption-schema"></a>

この例では、`sales.csv` に、`username`、`purchased`、および `product` の 3 つの列があります。これらの列を次のようにします。
+ `product` 列を `sealed` 列にする
+ `username` 列を `fingerprint` 列として暗号化する
+ `purchased` 列を `cleartext` 列にする

**sealed、fingerprint、およびcleartext列を含む暗号化スキーマを生成するには**

1. (**オプション) c3r-cli.jar ファイルと暗号化するファイルが存在することを確認します。

   1. 目的のディレクトリに移動し、`ls` (Mac または Unix/Linux を使用している場合)、あるいは `dir` (Windows を使用している場合) を実行します。

   1. 表形式のデータファイル (.csv) のリストを表示し、暗号化するファイルを選択します。

      この例では、`sales.csv` が暗号化するファイルです。

1. CLI から、次のコマンドを実行してスキーマをインタラクティブに作成します。

   `java -jar c3r-cli.jar schema sales.csv --interactive --output=sales.json`
**注記**  
`--interactive` フラグは、インタラクティブモードでのスキーマ作成を選択するものです。これにより、ユーザーはガイド付きワークフローに従ってスキーマを作成することになります。
高度なスキルを持つユーザーは、ガイド付きのワークフローを使用せずに独自のスキーマ JSON を作成できます。詳細については、「[(オプション) スキーマの作成 (上級ユーザー)](create-schema.md)」を参照してください。
列ヘッダーのない .csv ファイルについては、CLI で使用可能なスキーマコマンドの `--noHeaders` フラグを参照してください。
`--output` フラグは出力名を設定するものです。`--output` フラグを含めないと、C3R 暗号化クライアントはデフォルトの出力名 (`<input>.out`、またはスキーマには `<input>.json` など) を選択しようとします。

1. `Number of target columns from source column ‘username’?` で「**1**」を入力して、**Enter** キーを押します。

1. `Target column type: [c]leartext, [f]ingerprint, or [s]ealed?` で「**f**」を入力して、**Enter** キーを押します。

1. `Target column headername <default 'username'>` で **Enter** キーを押します。

   デフォルトのユーザー名「`username`」が使用されます。

1. `Add suffix '_fingerprint' to header to indicate how it was encrypted, [y]es or [n]o <default 'yes'>` で「**y**」を入力して、**Enter** キーを押します。

1. `Number of target columns from source column ‘purchased’?` で「**1**」を入力して、**Enter** キーを押します。

1. `Target column type: [c]leartext, [f]ingerprint, or [s]ealed?` で「**c**」を入力して、**Enter** キーを押します。

1. `Target column headername <default 'purchased'>` で **Enter** キーを押します。

   デフォルトのユーザー名「`purchased`」が使用されます。

1. `Number of target columns from source column ‘product’?` で「**1**」を入力して、**Enter** キーを押します。

1. `Target column type: [c]leartext, [f]ingerprint, or [s]ealed?` で「**s**」を入力して、**Enter** キーを押します。

1. `Target column headername <default 'product'>` で **Enter** キーを押します。

   デフォルトのユーザー名「`product`」が使用されます。

1. `‘product_sealed’ padding type: [n]one, [f]ixed, or [m]ax <default ’max’?>` で **Enter** キーを押してデフォルトを選択します。

1. `Byte-length beyond max length to pad cleartext to in ‘product_sealed’ <default ‘0’>?` で **Enter** キーを押してデフォルトを選択します。

   スキーマが `sales.json` という新しいファイルに書き込まれます。

1. これで、[データを暗号化](encrypt-data.md)する準備ができました。