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 Protokolldaten in CloudWatch Logs mit AWS Key Management Service
Protokollgruppendaten werden in CloudWatch Logs immer verschlüsselt. Standardmäßig verwendet CloudWatch Logs serverseitige Verschlüsselung mit 256-Bit Advanced Encryption Standard Galois/Counter Mode (AES-GCM), um Protokolldaten im Ruhezustand 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 Protokollgruppenebene aktiviert, indem ein KMS-Schlüssel einer Protokollgruppe zugeordnet wird, entweder wenn Sie die Protokollgruppe erstellen oder nachdem sie existiert.
Wichtig
CloudWatch Logs unterstützt jetzt den Verschlüsselungskontext, indem er kms:EncryptionContext:aws:logs:arn
als Schlüssel und den ARN der Protokollgruppe als Wert für diesen Schlüssel verwendet. Wenn es Protokollgruppen gibt, die Sie bereits mit einem KMS-Schlüssel verschlüsselt haben, und Sie die Verwendung des Schlüssels auf ein einzelnes Konto und eine einzelne Protokollgruppe beschränken möchten, sollten Sie einen neuen KMS-Schlüssel zuweisen, der eine Bedingung in der IAM-Richtlinie enthält. Weitere Informationen finden Sie unter AWS KMS Schlüssel und Verschlüsselungskontext.
Wichtig
CloudWatch Logs unterstützt jetztkms:ViaService
, sodass Logs in Ihrem Namen AWS KMS Anrufe tätigen können. Sie sollten dies zu Ihren Rollen hinzufügen, die CloudWatch Logs entweder in Ihrer Schlüsselrichtlinie oder in IAM aufrufen. Weitere Informationen finden Sie unter kms: ViaService.
Nachdem Sie einen KMS-Schlüssel mit einer Protokollgruppe verknüpft haben, werden alle für die Protokollgruppe neu übernommenen Daten mithilfe des Schlüssels verschlüsselt. Diese Daten werden während ihrer gesamten Aufbewahrungsfrist in verschlüsseltem Format gespeichert. 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 Protokollgruppe aufheben, verschlüsselt CloudWatch Logs neu aufgenommene Daten mit der Standardverschlüsselungsmethode CloudWatch Logs. Alle zuvor aufgenommenen Daten, die mit dem KMS-Schlüssel verschlüsselt wurden, bleiben mit dem KMS-Schlüssel verschlüsselt. CloudWatch Protokolle können diese Daten auch dann zurückgeben, wenn die Zuordnung des KMS-Schlüssels aufgehoben wurde, da CloudWatch Protokolle weiterhin auf den Schlüssel verweisen können. Wenn der Schlüssel jedoch später deaktiviert wird, kann Logs die CloudWatch Protokolle, die mit diesem Schlüssel verschlüsselt wurden, nicht lesen.
Wichtig
CloudWatch Logs unterstützt nur symmetrische KMS-Schlüssel. Verwenden Sie keinen asymmetrischen Schlüssel, um die Daten in Ihren Protokollgruppen zu verschlüsseln. Weitere Informationen finden Sie unter Verwenden von symmetrischen und asymmetrischen Schlüsseln.
Einschränkungen
-
Um die folgenden Schritte ausführen zu können, benötigen Sie die folgenden Berechtigungen:
kms:CreateKey
,kms:GetKeyPolicy
undkms:PutKeyPolicy
. -
Nachdem Sie die Verknüpfung eines Schlüssels mit einer Protokollgruppe hergestellt oder 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 Daten in CloudWatch Logs nicht mehr abgerufen werden.
-
Sie können einen KMS-Schlüssel nicht mithilfe der CloudWatch Konsole einer vorhandenen Protokollgruppe zuordnen.
Schritt 1: Erstellen Sie einen AWS KMS Schlüssel
Um einen KMS-Schlüssel zu erstellen, verwenden Sie den folgenden Befehl create-key:
aws kms create-key
Die Ausgabe enthält die Schlüssel-ID und den Amazon-Ressourcennamen (ARN) des Schlüssels. Das Folgende ist Ausgabebeispiel:
{
"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"
]
}
}
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. Der Ressourceninhaber kann jedoch anderen Benutzern und Ressourcen Zugriffsberechtigungen für den KMS-Schlüssel erteilen. Mit diesem Schritt erteilen Sie dem CloudWatch Logs-Dienstprinzipal und der Anruferrolle die Erlaubnis, den Schlüssel zu verwenden. Dieser Dienstprinzipal muss sich in derselben AWS Region befinden, in der der KMS-Schlüssel gespeichert ist.
Als bewährte Methode empfehlen wir, die Verwendung des KMS-Schlüssels auf die von Ihnen angegebenen AWS Konten oder Protokollgruppen zu beschränken.
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 Datei policy.json
in einem Texteditor und fügen Sie den in Fettschrift angezeigten Abschnitt aus einer der folgenden Anweisungen hinzu. Sie trennen die vorhandene Anweisung von der neuen Anweisung durch ein Komma. In diesen Anweisungen Condition
werden Abschnitte verwendet, um die Sicherheit des AWS KMS Schlüssels zu erhöhen. Weitere Informationen finden Sie unter AWS KMS Schlüssel und Verschlüsselungskontext.
Der Condition
-Abschnitt in diesem Beispiel schränkt den Schlüssel auf einen einzelnen Protokollgruppen-ARN ein.
{
"Version": "2012-10-17",
"Id": "key-default-1",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Your_account_ID
:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Principal": {
"Service": "logs.region
.amazonaws.com"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region
:account-id
:log-group:log-group-name
"
}
}
}
]
}
Der Condition
-Abschnitt in diesem Beispiel beschränkt die Verwendung des AWS KMS -Schlüssels auf das angegebene Konto, kann jedoch für jede Protokollgruppe verwendet werden.
{
"Version": "2012-10-17",
"Id": "key-default-1",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Your_account_ID
:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Principal": {
"Service": "logs.region
.amazonaws.com"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "*",
"Condition": {
"ArnLike": {
"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region
:account-id
:*"
}
}
}
]
}
Als Nächstes fügen Sie der Rolle, die die CloudWatch Logs aufrufen wird, Berechtigungen hinzu. Sie können dies tun, indem Sie der AWS KMS Schlüsselrichtlinie eine zusätzliche Anweisung hinzufügen oder IAM für die Rolle selbst verwenden. CloudWatch Logskms:ViaService
, die verwendet werden, um AWS KMS Anrufe im Namen des Kunden zu tätigen. Weitere Informationen finden Sie unter kms: ViaService.
Um der AWS KMS Schlüsselrichtlinie Berechtigungen hinzuzufügen, fügen Sie Ihrer Schlüsselrichtlinie die folgende zusätzliche Erklärung hinzu. Wenn Sie diese Methode verwenden, empfiehlt es sich, die Richtlinie nur auf die Rollen auszudehnen, die mit AWS KMS verschlüsselten Protokollgruppen interagieren.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
account_id
:role/role_name
" }, "Action": [ "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKey*" "kms:Describe*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "logs.region
.amazonaws.com" ] } } }
Wenn Sie Rollenberechtigungen in IAM verwalten möchten, können Sie alternativ entsprechende Berechtigungen mithilfe der folgenden Richtlinie hinzufügen. Dies kann einer vorhandenen Rollenrichtlinie hinzugefügt oder einer Rolle als zusätzliche separate Richtlinie zugewiesen werden. Wenn Sie diese Methode verwenden, sollten Sie als bewährte Methode die Richtlinie nur auf die AWS KMS Schlüssel beschränken, die für die Protokollverschlüsselung verwendet werden. Weitere Informationen finden Sie unter IAM-Richtlinien bearbeiten.
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKey* ", "kms:Describe*" ], "Condition":{ "StringEquals":{ "kms:ViaService": [ "logs.
region
.amazonaws.com" ] } }, "Resource": "arn:aws:kms:region
:account_id
:key/key_id
" } ] }
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 eines KMS-Schlüssels mit einer Protokollgruppe
Sie können einen KMS-Schlüssel während oder nach der Erstellung einer Protokollgruppe mit dieser verknüpfen.
Verwenden Sie den folgenden describe-log-groupsBefehl, um herauszufinden, ob einer Protokollgruppe bereits ein KMS-Schlüssel zugeordnet ist:
aws logs describe-log-groups --log-group-name-prefix "
log-group-name-prefix
"
Wenn die Ausgabe ein kmsKeyId
-Feld enthält, wird die Protokollgruppe dem Schlüssel zugeordnet, der für den Wert dieses Feldes angezeigt wird.
So verknüpfen Sie einen KMS-Schlüssel mit einer Protokollgruppe, wenn Sie sie erstellen
Verwenden Sie den create-log-group-Befehl wie folgt:
aws logs create-log-group --log-group-name
my-log-group
--kms-key-id "key-arn
"
So verknüpfen Sie den KMS-Schlüssel mit einer vorhandenen Protokollgruppe
Verwenden Sie den associate-kms-key-Befehl wie folgt:
aws logs associate-kms-key --log-group-name
my-log-group
--kms-key-id "key-arn
"
Schritt 4: Aufheben der Verknüpfung eines Schlüssels mit einer Protokollgruppe
Verwenden Sie den folgenden disassociate-kms-keyBefehl, um die Zuordnung des KMS-Schlüssels, der einer Protokollgruppe zugeordnet ist, aufzuheben:
aws logs disassociate-kms-key --log-group-name
my-log-group
AWS KMS Schlüssel und Verschlüsselungskontext
Um die Sicherheit Ihrer AWS Key Management Service Schlüssel und Ihrer verschlüsselten Protokollgruppen zu erhöhen, fügt CloudWatch Logs die Protokollgruppe jetzt ARNs als Teil des Verschlüsselungskontextes hinzu, der zur Verschlüsselung Ihrer Protokolldaten verwendet wird. Der Verschlüsselungskontext ist ein Satz von Schlüssel-Wert-Paaren, die als zusätzliche authentifizierte Daten verwendet werden. Der Verschlüsselungskontext ermöglicht es Ihnen, mithilfe der IAM-Richtlinienbedingungen den Zugriff auf Ihren AWS KMS Schlüssel nach AWS Konto und Protokollgruppe zu beschränken. Weitere Informationen finden Sie unter Verschlüsselungskontext und IAM-JSON-Richtlinienelemente: Bedingung.
Sie sollten für jede verschlüsselte Protokollgruppe einen anderen KMS-Schlüssel verwenden.
Wenn Sie zuvor eine Protokollgruppe verschlüsselt haben und jetzt für diese Protokollgruppe einen neuen KMS-Schlüssel verwenden möchten, der nur für diese Protokollgruppe funktioniert, gehen Sie folgendermaßen vor.
So konvertieren Sie eine verschlüsselte Protokollgruppe für die Verwendung eines KMS-Schlüssels mit einer Richtlinie, die diesen auf diese Protokollgruppe einschränkt
Geben Sie den folgenden Befehl ein, um den ARN des aktuellen Schlüssels der Protokollgruppe zu finden:
aws logs describe-log-groups
Die Ausgabe enthält die folgende Zeile. Notieren Sie den ARN. Sie benötigen ihn in Schritt 7.
... "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/01234567-89ab-cdef-0123-456789abcdef" ...
Geben Sie den folgenden Befehl ein, um einen neuen KMS-Schlüssel zu erstellen:
aws kms create-key
Geben Sie den folgenden Befehl ein, um die Richtlinie des neuen Schlüssels in einer
policy.json
-Datei zu speichern:aws kms get-key-policy --key-id
new-key-id
--policy-name default --output text > ./policy.jsonVerwenden Sie einen Texteditor zum Öffnen von
policy.json
und fügen Sie der Richtlinie einenCondition
-Ausdruck hinzu:{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
ACCOUNT-ID
:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region
.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:REGION
:ACCOUNT-ID
:log- group:LOG-GROUP-NAME
" } } } ] }Geben Sie den folgenden Befehl ein, um dem neuen KMS-Schlüssel die aktualisierte Richtlinie hinzuzufügen:
aws kms put-key-policy --key-id
new-key-ARN
--policy-name default --policy file://policy.jsonGeben Sie den folgenden Befehl ein, um die Richtlinie mit Ihrer Protokollgruppe zu verknüpfen:
aws logs associate-kms-key --log-group-name
my-log-group
--kms-key-idnew-key-ARN
CloudWatch Logs verschlüsselt jetzt alle neuen Daten mit dem neuen Schlüssel.
Als Nächstes widerrufen Sie alle Berechtigungen außer
Decrypt
aus dem alten Schlüssel. Geben Sie zunächst den folgenden Befehl ein, um die alte Richtlinie abzurufen:aws kms get-key-policy --key-id
old-key-ARN
--policy-name default --output text > ./policy.jsonVerwenden Sie einen Texteditor, um
Action
zu öffnen und alle Werte aus der Listepolicy.json
außerkms:Decrypt
zu entfernen.{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
Your_account_ID
:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "logs.region
.amazonaws.com" }, "Action": [ "kms:Decrypt" ], "Resource": "*" } ] }Geben Sie den folgenden Befehl ein, um dem alten Schlüssel die aktualisierte Richtlinie hinzuzufügen:
aws kms put-key-policy --key-id
old-key-ARN
--policy-name default --policy file://policy.json