View a markdown version of this page

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 Tabellen schreiben, deren zugrunde liegende Datensätze SSE-S3 verschlüsselt SSE-KMS sind. CSE-KMS 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.

SSE-S3/SSE-KMS Verschlüsselte Tabellen lesen

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

CSE-KMS Verschlüsselte Tabellen lesen

Es gibt zwei verschiedene Sätze von Tabelleneigenschaften, die angegeben werden können, damit Athena 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 verwenden, um CSE-KMS verschlüsselte Parquet-Dateien hochzuladen, 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 CSE-KMS verschlüsselte Objekte lesen, die von den Amazon S3 S3-Verschlüsselungsclients V1, V2 oder V3 erstellt wurden.

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

  • Athena kann weiterhin Objekte lesen SSE-S3 und SSE-KMS verschlüsseln, 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 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 Objekt verschlüsselt wurde, aus den CSE-KMS Objektmetadaten ab und verwendet diesen Schlüssel dann, um das Objekt zu entschlüsseln.

  • Athena kann weiterhin Objekte lesen SSE-S3 und SSE-KMS verschlüsseln, 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 CSE-KMS werden verschlüsselte Tabellen mit einem schlüsselförmigen Symbol has_encrypted_data='true' angezeigt.

Symbol für verschlüsselte Tabellen

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

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, sollten Sie sicherstellen, dass alle Daten mit demselben AWS KMS Schlüssel verschlüsselt sind.

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