Tabellen basierend auf verschlüsselten Datensätzen in Amazon S3 erstellen - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tabellen basierend auf verschlüsselten Datensätzen in Amazon S3 erstellen

Athena kann Tabellen lesen und in sie schreiben, deren zugrunde liegende Datensätze SSE-S3-, SSE-KMS- oder CSE-KMS-verschlüsselt sind. Abhängig von der für die Tabellendaten verwendeten Verschlüsselungsoption und der Art der ausgeführten Abfragen müssen Sie möglicherweise einige zusätzliche Tabelleneigenschaften angeben, um verschlüsselte Daten lesen und schreiben zu können.

Lesen von SSE-S3/SSE-KMS-verschlüsselten Tabellen

Bei der Tabellenerstellung müssen keine zusätzlichen Tabelleneigenschaften angegeben werden, um SSE-S3/SSE-KMS-verschlüsselte Datensätze zu lesen. Amazon S3 verarbeitet die Entschlüsselung der SSE-Objekte automatisch.

Lesen von CSE-KMS-verschlüsselten Tabellen

Es gibt zwei verschiedene Sätze von Tabelleneigenschaften, die angegeben werden können, damit Athena mit CSE-KMS verschlüsselte Datensätze lesen kann:

  • Verwendung der kms_key Tabelleneigenschaften encryption_option und (empfohlen)

  • Verwendung der has_encrypted_data Tabelleneigenschaft

Wichtig

Wenn Sie Amazon EMR zusammen mit EMRFS zum Hochladen von CSE-KMS-verschlüsselten Parquet-Dateien verwenden, müssen Sie mehrteilige Uploads deaktivieren, indem Sie auf einstellen. fs.s3n.multipart.uploads.enabled false Wenn Sie dies nicht tun, kann Athena die Länge der Parquet-Datei nicht ermitteln und der Fehler HIVE_CANNOT_OPEN_SPLIT tritt auf. Weitere Informationen finden Sie unter Konfigurieren von mehrteiligen Uploads für Amazon S3 im Verwaltungshandbuch für Amazon EMR.

Verwenden der Tabelleneigenschaften encryption_option und kms_key

Verwenden Sie in einer CREATE TABLE-Anweisung eine TBLPROPERTIES Klausel, die encryption_option='CSE_KMS' und kms_key='aws_kms_key_arn' spezifiziert, wie im folgenden Beispiel.

CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'encryption_option' = 'CSE_KMS', 'kms_key' = 'arn:aws:kms:us-east-1:012345678901:key/my_kms_key')

Wenn diese Eigenschaften konfiguriert sind,

  • Athena kann mit CSE-KMS verschlüsselte Objekte lesen, die von den Amazon S3 S3-Verschlüsselungsclients V1, V2 oder V3 erstellt wurden.

  • Athena verwendet den AWS KMS Schlüssel in, kms_key um die CSE-KMS-Daten zu entschlüsseln. Wenn Objekte mit einem anderen AWS KMS Schlüssel verschlüsselt wurden, schlägt die Abfrage fehl.

  • Athena kann weiterhin SSE-S3- und SSE-KMS-verschlüsselte Objekte lesen, obwohl das Mischen von serverseitigen und clientseitigen verschlüsselten Objekten nicht empfohlen wird.

Verwendung der Tabelleneigenschaft has_encrypted_data

Verwenden Sie in einer CREATE-TABLE-Anweisung eine TBLPROPERTIES-Klausel, die has_encrypted_data='true' angibt, wie im folgenden Beispiel.

CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'has_encrypted_data' = 'true')

Wenn die Tabelleneigenschaft has_encrypted_data angegeben ist,

  • Athena kann nur mit CSE-KMS verschlüsselte Objekte lesen, die vom Amazon S3 S3-Verschlüsselungsclient V1 erstellt wurden.

  • Athena leitet den AWS KMS Schlüssel, mit dem das CSE-KMS-Objekt verschlüsselt wurde, aus den Objektmetadaten ab und verwendet diesen Schlüssel dann, um das Objekt zu entschlüsseln.

  • Athena kann weiterhin SSE-S3- und SSE-KMS-verschlüsselte Objekte lesen, obwohl das Mischen von serverseitigen und clientseitigen verschlüsselten Objekten nicht empfohlen wird.

Anmerkung

Wenn encryption_option und zusammen angegeben kms_key werdenhas_encrypted_data, haben die Tabelleneigenschaften encryption_option und die kms_key Tabelleneigenschaften Vorrang und werden ignoriert. has_encrypted_data

Wenn Sie die Athena-Konsole verwenden, um mithilfe eines Formulars eine Tabelle zu erstellen und den Speicherort der Tabelle anzugeben, wählen Sie die Option Verschlüsselter Datensatz, um die has_encrypted_data='true' Eigenschaft zur Tabelle hinzuzufügen.

Wählen Sie im Formular zum Hinzufügen von Tabellen die Option Verschlüsselter Datensatz

In der Tabellenliste der Athena-Konsole werden mit CSE-KMS verschlüsselte Tabellen mit einem schlüsselförmigen has_encrypted_data='true' Symbol angezeigt.

Symbol für verschlüsselte Tabellen

SSE-S3/SSE-KMS/CSE-KMS-verschlüsselte Daten schreiben

Standardmäßig werden neu eingefügte Datendateien mit der Verschlüsselungskonfiguration der in der Athena-Arbeitsgruppe angegebenen Abfrageergebnisse verschlüsselt. Um Tabellendaten mit einer anderen Verschlüsselungskonfiguration als der Verschlüsselungskonfiguration der Abfrageergebnisse zu schreiben, müssen Sie einige zusätzliche Tabelleneigenschaften hinzufügen.

Verwenden Sie in einer CREATE TABLE-Anweisung eine TBLPROPERTIES Klausel, die encryption_option='SSE_S3 | SSE_KMS | CSE_KMS' und spezifiziertkms_key='aws_kms_key_arn', wie im folgenden Beispiel.

CREATE EXTERNAL TABLE 'my_encrypted_data' ( `n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' LOCATION 's3://amzn-s3-demo-bucket/folder_with_my_encrypted_data/' TBLPROPERTIES ( 'encryption_option' = 'SSE_KMS', 'kms_key' = 'arn:aws:kms:us-east-1:012345678901:key/my_kms_key')

Alle neu eingefügten Daten werden mit der Verschlüsselungskonfiguration verschlüsselt, die in den Tabelleneigenschaften angegeben ist, und nicht mit der Verschlüsselungskonfiguration der Abfrageergebnisse in der Arbeitsgruppe.

Überlegungen und Einschränkungen

Beachten Sie beim Schreiben und Lesen verschlüsselter Datenmengen die folgenden Punkte.

  • Die kms_key Tabelleneigenschaften has_encrypted_dataencryption_option, und können nur mit Hive-Tabellen verwendet werden.

  • Wenn Sie eine Tabelle mit CSE-KMS-verschlüsselten Daten erstellen, empfehlen wir, sicherzustellen, dass alle Daten mit demselben Schlüssel verschlüsselt sind. AWS KMS

  • Wenn Sie eine Tabelle mit CSE-KMS-verschlüsselten Daten erstellen, empfehlen wir, sicherzustellen, dass alle Daten mit CSE-KMS verschlüsselt sind und dass es keine Mischung aus CSE-KMS-verschlüsselten Objekten gibt. non-CSE-KMS