Translation not up to date
W tej sekcji opisano sposób zarządzania kluczami szyfrowania kolumn według aplikacji. Wyjaśnia, w jaki sposób należy udostępniać klucze główne oraz jak zapisywać i odczytywać zaszyfrowane dane za pomocą tych kluczy głównych.
Udostępnianie kluczy głównych
Aby udostępnić klucze główne:
Przekaz jawne klucze główne, w następującym formacie:
parameter name: "encryption.key.list" parameter value: "<master key ID>:<master key (base64)> , <master key ID>:<master key (base64)>.."
Na przykład:
sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
Długość kluczy głównych przed kodowaniem base64 może wynosić 16, 24 lub 32 bajty (128, 192 lub 256 bitów).
Zapisywanie zaszyfrowanych danych
Aby zapisać zaszyfrowane dane:
Określ, które kolumny mają być szyfrowane, i które klucze główne mają być używane:
parameter name: "encryption.column.keys" parameter value: "<master key ID>:<column>,<column>;<master key ID>:<column> .."
Określ klucz stopki:
parameter name: "encryption.footer.key" parameter value: "<master key ID>"
Na przykład:
dataFrame.write .option("encryption.footer.key" , "k1") .option("encryption.column.keys" , "k2:SSN,Address;k3:CreditCard") .parquet("<path to encrypted files>")
Uwaga: ` "" ` musi zawierać łańcuch ` .encrypted ` w adresie URL, na przykład `/path/to/my_table.parquet.encrypted`. Jeśli parametr ` "encryption.column.keys" lub ` "encryption.footer.key" ` nie jest ustawiony, zgłaszany jest wyjątek.
Odczytywanie zaszyfrowanych danych
Wymagane metadane są przechowywane w zaszyfrowanych plikach Parkiet.
Aby odczytać zaszyfrowane dane:
Podaj klucze szyfrowania:
sc.hadoopConfiguration.set("encryption.key.list" , "k1:iKwfmI5rDf7HwVBcqeNE6w== , k2:LjxH/aXxMduX6IQcwQgOlw== , k3:rnZHCxhUHr79Y6zvQnxSEQ==")
Wywołaj regularne komendy odczytu parkietu, takie jak:
val dataFrame = spark.read.parquet("<path to encrypted files>")
Uwaga: ` "" ` musi zawierać łańcuch ` .encrypted ` w adresie URL, na przykład `/path/to/my_table.parquet.encrypted`.
Temat nadrzędny: szyfrowanie parkietu