Verschlüsselung von Amazon EMR in EKS-Protokollen mit verwaltetem Speicher - Amazon EMR

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.

Verschlüsselung von Amazon EMR in EKS-Protokollen mit verwaltetem Speicher

In den folgenden Abschnitten erfahren Sie, wie Sie die Verschlüsselung für Protokolle konfigurieren.

Verschlüsselung aktivieren

Um Protokolle im verwalteten Speicher mit Ihrem eigenen KMS-Schlüssel zu verschlüsseln, verwenden Sie die folgende Konfiguration, wenn Sie eine Jobausführung einreichen.

"monitoringConfiguration": { "managedLogs": { "allowAWSToRetainLogs":"ENABLED", "encryptionKeyArn":"KMS key arn" }, "persistentAppUI": "ENABLED" }

Die allowAWSToRetainLogs Konfiguration ermöglicht AWS die Aufbewahrung von System-Namespace-Protokollen, wenn ein Job mit nativem FGAC ausgeführt wird. Die persistentAppUI Konfiguration ermöglicht AWS das Speichern von Ereignisprotokollen, die zur Generierung der Spark-Benutzeroberfläche verwendet werden. Der encryptionKeyArn wird verwendet, um den KMS-Schlüssel ARN anzugeben, mit dem Sie die gespeicherten Protokolle verschlüsseln möchten. AWS

Erforderliche Berechtigungen für die Protokollverschlüsselung

Dem Benutzer, der den Job einreicht oder die Spark-Benutzeroberfläche aufruft kms:DescribeKeykms:GenerateDataKey, müssen die Aktionen und kms:Decrypt für den Verschlüsselungsschlüssel zugelassen werden. Diese Berechtigungen werden verwendet, um die Gültigkeit des Schlüssels zu überprüfen und zu überprüfen, ob der Benutzer über die erforderlichen Rechte zum Lesen und Schreiben von Protokollen verfügt, die mit dem KMS-Schlüssel verschlüsselt wurden. Wenn der Benutzer, der den Job einreicht, nicht über die erforderlichen Schlüsselberechtigungen verfügt, lehnt Amazon EMR on EKS die Übermittlung der Auftragsausführung ab.

Beispiel für eine IAM-Richtlinie für die Rolle, die zum Aufrufen verwendet wurde StartJobRun

{ "Version": "2012-10-17", "Statement": [ { "Action": "emr-containers:StartJobRun", "Resource": "*", "Effect": "Allow" }, { "Action": [ "kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "KMS key ARN", "Effect": "Allow" } ] }

Außerdem müssen Sie den KMS-Schlüssel so konfigurieren, dass die persistentappui.elasticmapreduce.amazonaws.com und elasticmapreduce.amazonaws.com Service Principals und verwenden können. kms:GenerateDataKey kms:Decrypt Auf diese Weise kann EMR mit dem KMS-Schlüssel verschlüsselte Protokolle lesen und in den verwalteten Speicher schreiben.

Beispiel für eine KMS-Schlüsselrichtlinie

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "IAM role ARN used to call StartJobRun" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringLike": { "kms:viaService": "emr-containers.region.amazonaws.com" } } }, { "Effect": "Allow", "Principal": { "AWS": "IAM role ARN used to call StartJobRun" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:viaService": "emr-containers.region.amazonaws.com", "kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id" } } }, { "Effect": "Allow", "Principal": { "Service": [ "persistentappui.elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id", "aws:SourceArn": "virtual cluster ARN" } } } ] }

Aus Sicherheitsgründen empfehlen wir, die aws:SourceArn Bedingungen kms:viaServicekms:EncryptionContext, und hinzuzufügen. Diese Bedingungen tragen dazu bei, dass der Schlüssel nur von Amazon EMR auf EKS und nur für Protokolle verwendet wird, die von Aufträgen generiert werden, die in einem bestimmten virtuellen Cluster ausgeführt werden.