View a markdown version of this page

Verschlüsseln Sie Nachschlagetabellen in CloudWatch Protokollen mit AWS Key Management Service - CloudWatch Amazon-Protokolle

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üsseln Sie Nachschlagetabellen in CloudWatch Protokollen mit AWS Key Management Service

Die Daten der Nachschlagetabellen werden in CloudWatch Protokollen immer verschlüsselt. Standardmäßig verwendet CloudWatch Logs serverseitige Verschlüsselung mit 256-Bit-AES-GCM (Advanced Encryption Standard Galois/Counter Mode), um ruhende Daten in der Nachschlagetabelle zu verschlüsseln. Als Alternative können Sie AWS Key Management Service für diese Verschlüsselung verwenden. Wenn Sie dies tun, erfolgt die Verschlüsselung mithilfe eines Schlüssels. AWS KMS Die Verschlüsselung mit AWS KMS wird auf der Ebene der Nachschlagetabelle aktiviert, indem ein KMS-Schlüssel einer Nachschlagetabelle zugeordnet wird, entweder wenn Sie die Nachschlagetabelle erstellen oder wenn Sie sie aktualisieren.

Wichtig

CloudWatch Logs unterstützt nur symmetrische KMS-Schlüssel. Verwenden Sie keinen asymmetrischen Schlüssel, um die Daten in Ihren Nachschlagetabellen zu verschlüsseln. Weitere Informationen finden Sie unter Verwenden von symmetrischen und asymmetrischen Schlüsseln.

Nachdem Sie einer Nachschlagetabelle einen KMS-Schlüssel zugeordnet haben, werden alle in der Nachschlagetabelle gespeicherten Daten mit diesem Schlüssel verschlüsselt. CloudWatch Logs entschlüsselt diese Daten, wann immer sie angefordert werden. CloudWatch Protokolle müssen über Berechtigungen für den KMS-Schlüssel verfügen, wenn verschlüsselte Daten angefordert werden.

Wenn Sie später die Zuordnung eines KMS-Schlüssels zu einer Nachschlagetabelle aufheben, verschlüsselt CloudWatch Logs die Daten mit der CloudWatch Standardverschlüsselungsmethode Logs. Wenn der Schlüssel jedoch deaktiviert oder gelöscht wird, bevor Sie die Zuordnung aufheben, kann CloudWatch Logs die Daten, die mit diesem Schlüssel verschlüsselt wurden, nicht lesen.

Allgemeine Informationen darüber, wie CloudWatch Logs AWS KMS Protokolldaten verschlüsselt, finden Sie unter. Verschlüsseln Sie Protokolldaten in CloudWatch Logs mit AWS Key Management Service

Wie CloudWatch Logs AWS KMS für Lookup-Tabellen verwendet

CloudWatch Logs verwendet die AWS KMS Umschlagverschlüsselung, um die Daten der Nachschlagetabellen zu schützen. Wenn Sie einer Nachschlagetabelle einen KMS-Schlüssel zuordnen, sendet CloudWatch Logs eine GenerateDataKey Anfrage an AWS KMS. AWS KMS generiert einen eindeutigen Datenverschlüsselungsschlüssel (DEK) und gibt sowohl eine Klartext-Kopie als auch eine verschlüsselte Kopie des DEK zurück. CloudWatch Logs verwendet das Klartext-DEK, um die Daten der Nachschlagetabelle zu verschlüsseln, und speichert dann das verschlüsselte DEK zusammen mit den verschlüsselten Daten. Das Klartext-DEK wird nicht gespeichert und nach der Verwendung aus dem Speicher gelöscht.

Wenn CloudWatch Logs die Daten der Nachschlagetabelle lesen muss, sendet es eine Decrypt Anfrage AWS KMS mit dem verschlüsselten DEK an. AWS KMS entschlüsselt das DEK und gibt das Klartext-DEK an CloudWatch Logs zurück, wo es dann zur Entschlüsselung der Daten der Nachschlagetabelle verwendet wird.

CloudWatch Logs verwendet den folgenden Verschlüsselungskontext für Anfragen an: AWS KMS

{ "aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" }

Sie können diesen Verschlüsselungskontext in IAM-Richtlinien und AWS KMS Schlüsselrichtlinien verwenden, um den Zugriff auf den KMS-Schlüssel zu steuern. Weitere Informationen finden Sie unter AWS KMS Schlüssel und Verschlüsselungskontext.

Erforderliche -Berechtigungen

Um die AWS KMS Verschlüsselung mit Nachschlagetabellen verwenden zu können, muss der IAM-Prinzipal über die folgenden AWS KMS Berechtigungen für den KMS-Schlüssel verfügen:

  • kms:Decrypt

  • kms:GenerateDataKey

Die kms:Decrypt Berechtigung ist erforderlich, wenn Sie eine Nachschlagetabelle aufrufenGetLookupTable, die mit einem KMS-Schlüssel verschlüsselt ist, sodass CloudWatch Logs die Daten in Ihrem Namen entschlüsseln kann. Die kms:Decrypt Berechtigung ist auch für den Schlüssel (den KMS-Schlüssel, der zum Verschlüsseln der Nachschlagetabelle verwendet wird) erforderlich, wenn StartQuery mit einer Abfrage aufgerufen wird, die den lookup Befehl für eine verschlüsselte Nachschlagetabelle verwendet. Die kms:GenerateDataKey Berechtigung ist beim Aufrufen CreateLookupTable oder UpdateLookupTable mit einem KMS-Schlüssel erforderlich, sodass CloudWatch Logs einen Datenverschlüsselungsschlüssel zum Verschlüsseln der Daten der Nachschlagetabelle generieren kann.

Darüber hinaus muss der CloudWatch Logs-Dienst über die Berechtigung zur Verwendung des KMS-Schlüssels verfügen. Sie gewähren diese Berechtigungen, indem Sie der KMS-Schlüsselrichtlinie eine Richtlinienanweisung hinzufügen, wie im folgenden Abschnitt beschrieben.

Schritt 1: Erstellen Sie einen AWS KMS Schlüssel

Verwenden Sie den folgenden Befehl create-key, um einen symmetrischen KMS-Schlüssel zu erstellen:

aws kms create-key

Die Ausgabe enthält die Schlüssel-ID und den Amazon-Ressourcennamen (ARN) des Schlüssels. Das Folgende ist eine Beispielausgabe:

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1478910250.94, "Arn": "arn:aws:kms:us-west-2:123456789012:key/6f815f63-e628-448c-8251-e40cb0d29f59", "AWSAccountId": "123456789012", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

Notieren Sie sich den Schlüssel-ARN. Sie benötigen ihn in den folgenden Schritten.

Schritt 2: Festlegen von Berechtigungen auf dem KMS-Schlüssel

Standardmäßig sind alle AWS KMS Schlüssel privat. Nur der Ressourcenbesitzer kann mit ihnen Daten verschlüsseln und entschlüsseln. Sie müssen dem Prinzipal des CloudWatch Logs-Dienstes die Berechtigung zur Verwendung des Schlüssels und auch der aufrufenden Rolle die Berechtigung zur Verwendung des Schlüssels erteilen.

Speichern Sie zunächst die Standardrichtlinie für Ihren KMS-Schlüssel policy.json mit dem folgenden get-key-policyBefehl:

aws kms get-key-policy --key-id key-id --policy-name default --output text > ./policy.json

Öffnen Sie die policy.json Datei in einem Texteditor und fügen Sie die folgende Anweisung hinzu, um dem Prinzipal des CloudWatch Logs-Dienstes die Berechtigung zur Verwendung des Schlüssels zu erteilen. In diesem Beispiel wird ein Condition Abschnitt verwendet, der dem Verschlüsselungskontext entspricht, um den Schlüssel auf eine bestimmte Nachschlagetabelle zu beschränken.

{ "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name", "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:logs:region:account-id:lookup-table:lookup-table-name" } } }

Als Nächstes fügen Sie der Rolle, die die CloudWatch Logs CreateLookupTable oder aufrufen soll, Berechtigungen hinzu UpdateLookupTable APIs. CloudWatch Logs wird verwendetkms:ViaService, um AWS KMS im Namen des Kunden Anrufe zu tätigen. Weitere Informationen finden Sie unter kms: ViaService.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region.amazonaws.com" ] } } }

Fügen Sie abschließend die aktualisierte Richtlinie mit dem folgenden put-key-policyBefehl hinzu:

aws kms put-key-policy --key-id key-id --policy-name default --policy file://policy.json

Schritt 3: Verknüpfen Sie einen KMS-Schlüssel mit einer Nachschlagetabelle

Sie können einen KMS-Schlüssel einer Nachschlagetabelle zuordnen, wenn Sie ihn mithilfe der CreateLookupTable API erstellen, oder Sie können eine vorhandene Nachschlagetabelle mithilfe der UpdateLookupTable API aktualisieren. Beide APIs sind Teil der AWSLogsConfigService.

Um den KMS-Schlüssel bei der Erstellung einer Nachschlagetabelle zuzuordnen

Verwenden Sie die CreateLookupTable API und geben Sie den kmsKeyArn Parameter mit dem ARN Ihres KMS-Schlüssels an:

aws logs create-lookup-table \ --lookup-table-name my-lookup-table \ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"
Um den KMS-Schlüssel einer vorhandenen Nachschlagetabelle zuzuordnen

Verwenden Sie die UpdateLookupTable API und geben Sie den kmsKeyArn Parameter mit dem ARN Ihres KMS-Schlüssels an:

aws logs update-lookup-table \ --lookup-table-name my-lookup-table \ --kms-key-arn "arn:aws:kms:region:account-id:key/key-id"

Überlegungen

  • Nachdem Sie einen KMS-Schlüssel einer Nachschlagetabelle zugeordnet oder die Verknüpfung aufgehoben haben, kann es bis zu fünf Minuten dauern, bis der Vorgang wirksam wird.

  • Wenn Sie CloudWatch Logs den Zugriff auf einen zugehörigen Schlüssel entziehen oder einen zugehörigen KMS-Schlüssel löschen, können Ihre verschlüsselten Nachschlagetabellendaten in CloudWatch Logs nicht mehr abgerufen werden.

  • Um die Schritte in diesem Thema ausführen zu können, benötigen Sie die folgenden Berechtigungen:kms:CreateKey, kms:GetKeyPolicykms:PutKeyPolicy, und die entsprechenden CloudWatch Logs-Berechtigungen, um CreateLookupTable oder aufrufen zu könnenUpdateLookupTable.