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 Protokolldaten in CloudWatch Logs mit AWS Key Management Service
Protokollgruppendaten werden in CloudWatch Logs immer verschlüsselt. Standardmäßig verwendet CloudWatch Logs eine serverseitige Verschlüsselung mit dem 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 mit einem AWS KMS Schlüssel. Die Verschlüsselung mit AWS KMS wird auf der Ebene der Protokollgruppe aktiviert, indem ein KMS-Schlüssel entweder beim Erstellen der Protokollgruppe mit dieser verknüpft wird oder nachdem diese vorhanden ist.
Wichtig
CloudWatch Logs unterstützt jetzt den Verschlüsselungskontext, wobei kms:EncryptionContext:aws:logs:arn
der Schlüssel und der ARN der Protokollgruppe als Wert für den Schlüssel verwendet werden. 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 des gesamten Aufbewahrungszeitraums im verschlüsselten Format gespeichert. CloudWatch Logs entschlüsselt diese Daten, sobald sie angefordert werden. CloudWatch Protokolle müssen über Berechtigungen für den KMS verfügen, sobald verschlüsselte Daten angefordert werden.
Wenn Sie die Verknüpfung eines KMS-Schlüssels mit einer Protokollgruppe aufgehoben haben, verschlüsselt CloudWatch Logs neu aufgenommene Daten mit der Standard-Verschlüsselungsmethode CloudWatch Logs. Alle zuvor erfassten 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 nach der Trennung des KMS-Schlüssels zurückgeben, da CloudWatch Protokolle weiterhin den Schlüssel heranziehen können. Wenn der Schlüssel jedoch später deaktiviert wird, kann CloudWatch Logs die mit diesem Schlüssel verschlüsselten Protokolle nicht mehr 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 den Zugriff von CloudWatch Logs auf einen verknüpften Schlüssel aufheben oder einen verknüpften 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 mit einer vorhandenen Protokollgruppe verknüpfen.
Schritt 1: Erstellen eines AWS KMS -Schlüssels
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 Prinzipal des CloudWatch Logs Service und der Anruferrolle die Berechtigung für die Nutzung des Schlüssels. Dieser Service-Prinzipal muss sich in derselben AWS -Region befinden, in der der KMS-Schlüssel gespeichert ist.
Als bewährte Methode sollten Sie die Verwendung des KMS-Schlüssels auf die von Ihnen angegebenen AWS -Konten oder -Protokollgruppen beschränken.
Speichern Sie zunächst die Standardrichtlinie für Ihren KMS-Schlüssel ab, policy.json
indem Sie den folgenden get-key-policyBefehl verwenden:
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. Diese Anweisungen verwenden Condition
Abschnitte, um die Sicherheit des AWS KMS -Schlüssels zu optimieren. 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, sollten Sie die Richtlinie als bewährte Methode nur auf die Rollen ausdehnen, 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 Bearbeiten von IAM-Richtlinien.
{ "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.
Mit dem folgenden describe-log-groupsBefehl können Sie ermitteln, 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
Um die Verknüpfung eines KMS-Schlüssels mit einer Protokollgruppe aufzuheben, verwenden Sie den folgenden disassociate-kms-keyBefehl:
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, verwendet CloudWatch Logs jetzt die Protokollgruppe ARNs als Teil des Verschlüsselungskontexts, der für die 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. Im Verschlüsselungskontext können Sie IAM-Richtlinienbedingungen verwenden, um den Zugriff auf Ihren AWS KMS -Schlüssel nach AWS -Konto und Protokollgruppe zu begrenzen. 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