アプリケーションごとの鍵管理

このトピックでは、アプリケーションごとの列暗号化キーの管理方法について説明します。 ここでは、マスターキーの提供方法、およびこれらのマスターキーを使用して暗号化されたデータを書き込み・読み取る方法について説明します。

マスターキーの提供

マスターキーの提供について:

  1. 明示的なマスターキーを、以下の形式で渡してください:

    parameter name: "encryption.key.list"
    parameter value: "<master key ID>:<master key (base64)> , <master key ID>:<master key (base64)>.."
    

    例:

    sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
    

    base64 エンコーディング前のマスターキーの長さは、16、24、または32バイト(128、192、または256ビット)に設定できます。

暗号化されたデータの書き込み

暗号化されたデータを書き込むには:

  1. 暗号化する列と、使用するマスターキーを指定してください:

    parameter name:  "encryption.column.keys"
    parameter value: "<master key ID>:<column>,<column>;<master key ID>:<column> .."
    
  2. フッターキーを指定してください:

    parameter name:  "encryption.footer.key"
    parameter value:  "<master key ID>"
    

    例:

    dataFrame.write
    .option("encryption.footer.key" , "k1")
    .option("encryption.column.keys" , "k2:SSN,Address;k3:CreditCard")
    .parquet("<path to encrypted files>")
    
    注: ` "/path/to/my_table.parquet.encrypted 「.encrypted` という文字列を URL に含める必要がある。もし `" encryption.column.keys "`パラメータか `" encryption.footer.key "`パラメータのどちらかが設定されていなければ、例外が発生する。

暗号化されたデータの読み取り

必要なメタデータは、暗号化されたParquetファイルに格納されています。

暗号化されたデータを読み取るには:

  1. 暗号化キーを入力してください:

    sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
    
  2. 次のような通常のパーケット読み取りコマンドを実行します:

    val dataFrame = spark.read.parquet("<path to encrypted files>")
    
    注: ` "「例えば、` /path/to/my_table.parquet.encrypted `のように、`.encrypted`という文字列を URL。