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.
Da Ihre KMS-Schlüssel vertrauliche Informationen schützen, empfehlen wir, dem Prinzip des Zugriffs mit den geringsten Rechten zu folgen. Delegieren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen, wenn Sie Ihre wichtigsten Richtlinien definieren. Lassen Sie alle Aktionen (kms:*
) für eine KMS-Schlüsselrichtlinie nur zu, wenn Sie beabsichtigen, die Berechtigungen mit zusätzlichen IAM-Richtlinien weiter einzuschränken. Wenn Sie beabsichtigen, Berechtigungen mit IAM-Richtlinien zu verwalten, schränken Sie ein, wer IAM-Richtlinien erstellen und an IAM-Prinzipale anhängen darf, und achten Sie auf Richtlinienänderungen.
Wenn Sie alle Aktionen (kms:*
) sowohl in der Schlüsselrichtlinie als auch in der IAM-Richtlinie zulassen, verfügt der Prinzipal sowohl über Administratorrechte als auch über Nutzungsberechtigungen für den KMS-Schlüssel. Aus Sicherheitsgründen empfehlen wir, diese Berechtigungen nur an bestimmte Prinzipale zu delegieren. Sie können dies tun, indem Sie den Prinzipal in der Schlüsselrichtlinie explizit benennen oder indem Sie einschränken, an welche Prinzipale die IAM-Richtlinie angehängt ist. Sie können auch Bedingungsschlüssel verwenden, um Berechtigungen einzuschränken. Beispielsweise können Sie die verwenden, aws:PrincipalTag
um alle Aktionen zuzulassen, wenn der Principal, der den API-Aufruf durchführt, das in der Bedingungsregel angegebene Tag hat.
Weitere Informationen darüber, wie Richtlinienaussagen bewertet werden AWS, finden Sie unter Bewertungslogik für Richtlinien im IAM-Benutzerhandbuch. Wir empfehlen, dieses Thema zu lesen, bevor Sie Richtlinien verfassen, um die Wahrscheinlichkeit zu verringern, dass Ihre Richtlinie unbeabsichtigte Auswirkungen hat, wie z. B. die Gewährung von Zugriff für Prinzipale, die keinen Zugriff haben sollten.
Tipp
Wenn Sie eine Anwendung in einer Umgebung außerhalb der Produktionsumgebung testen, verwenden Sie IAM Access Analyzer, um Ihren IAM-Richtlinien die geringsten Rechte
Wenn Sie IAM-Benutzer anstelle von IAM-Rollen verwenden, empfehlen wir dringend, die AWS Multi-Faktor-Authentifizierung (MFA) zu aktivieren, um die Sicherheitsanfälligkeit langfristiger Anmeldeinformationen zu verringern. Über MFA können Sie die folgenden Aktionen ausführen:
-
Erfordern Sie, dass Benutzer ihre Anmeldeinformationen mit MFA validieren, bevor sie privilegierte Aktionen ausführen, z. B. das Löschen von Schlüsseln planen.
-
Teilen Sie den Besitz eines Administratorkontokennworts und eines MFA-Geräts auf einzelne Personen auf, um die geteilte Autorisierung zu implementieren.
Weitere Informationen
Implementieren der geringsten Berechtigungen
Wenn Sie einem AWS Dienst die Erlaubnis zur Verwendung eines KMS-Schlüssels erteilen, stellen Sie sicher, dass die Berechtigung nur für die Ressourcen gilt, auf die der Dienst in Ihrem Namen zugreifen muss. Diese Strategie der geringsten Rechte trägt dazu bei, die unbefugte Verwendung eines KMS-Schlüssels zu verhindern, wenn Anfragen zwischen AWS Diensten weitergeleitet werden.
Um eine Strategie mit den geringsten Rechten zu implementieren, empfehlen wir die Verwendung von Bedingungsschlüsseln für den AWS KMS Verschlüsselungskontext und den globalen Quell-ARN- oder Quellkonto-Bedingungsschlüssel.
Verwenden von Verschlüsselungskontext-Bedingungsschlüsseln
Die effektivste Methode zur Implementierung von Berechtigungen mit den geringsten Rechten bei der Nutzung von AWS KMS Ressourcen besteht darin, die kms:EncryptionContext:Kontext-Schlüssel oder kms:EncryptionContextKeysBedingungsschlüssel in der Richtlinie, die es Prinzipalen ermöglichen, kryptografische Operationen aufzurufen AWS KMS . Diese Bedingungsschlüssel sind besonders effektiv, da sie die Berechtigung mit dem Verschlüsselungskontext verknüpfen, der an den Chiffretext gebunden ist, wenn die Ressource verschlüsselt wird.
Verwenden Sie Schlüssel für Bedingungen für den Verschlüsselungskontext nur, wenn es sich bei der Aktion in der Richtlinienanweisung um eine AWS KMS symmetrische kryptografische Operation handelt, die einen EncryptionContext
Parameter benötigt, z. B. Operationen wie CreateGrantoder Decrypt. GenerateDataKey (Eine Liste der unterstützten Operationen finden Sie unter kms:EncryptionContext:Kontext-Schlüssel oder kms:EncryptionContextKeys.) Wenn Sie diese Bedingungsschlüssel verwenden, um andere Operationen zuzulassen DescribeKey, z. B. wird der Zugriff verweigert.
Legen Sie den Wert auf den Verschlüsselungskontext fest, den der Service beim Verschlüsseln der Ressource verwendet. Diese Informationen finden Sie normalerweise im Kapitel zur Sicherheit in der Service-Dokumentation. Beispielsweise identifiziert der Verschlüsselungskontext für AWS Proton die AWS Proton-Ressource und die zugehörige Vorlage. Der Verschlüsselungskontext für AWS Secrets Manager identifiziert das Geheimnis und seine Version. Der Verschlüsselungskontext für Amazon Location identifiziert den Tracker oder die Erfassung.
Die folgende Schlüsselrichtlinien-Beispielanweisung ermöglicht es Amazon Location Service, Erteilungen im Namen autorisierter Benutzer zu erstellen. Diese Richtlinienanweisung schränkt die Berechtigung ein, indem sie die Schlüssel kms: ViaService, kms: und kms:EncryptionContext:context-key
condition verwendetCallerAccount, um die Berechtigung an eine bestimmte Tracker-Ressource zu binden.
{ "Sid": "Allow Amazon Location to create grants on behalf of authorized users", "Effect": "Allow", "Principal": { "AWS": "
arn:aws:iam::111122223333:role/LocationTeam
" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "geo.us-west-2.amazonaws.com", "kms:CallerAccount": "111122223333
", "kms:EncryptionContext:aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:tracker/SAMPLE-Tracker
" } } }
Verwenden der Bedingungsschlüssel aws:SourceArn
oder aws:SourceAccount
Wenn es sich bei dem Prinzipal in einer wichtigen Richtlinienerklärung um einen AWS Dienstprinzipal handelt, empfehlen wir dringend, dass Sie den aws:SourceArn oder aws:SourceAccountglobale Bedingungsschlüssel, zusätzlich zum kms:EncryptionContext:context-key
Bedingungsschlüssel. Die ARN- und Kontowerte sind nur dann im Autorisierungskontext enthalten, wenn eine Anfrage AWS KMS von einem anderen AWS Dienst eingeht. Diese Kombination von Bedingungen implementiert die geringsten Berechtigungen und verhindert ein potenzielles Szenario des verwirrten Stellvertreters. Dienstprinzipale werden normalerweise nicht als Prinzipale in einer wichtigen Richtlinie verwendet, aber für einige AWS Dienste, z. B. AWS CloudTrail, ist dies erforderlich.
Um die globalen Bedingungsschlüssel aws:SourceArn
oder aws:SourceAccount
zu verwenden, legen Sie den Wert auf den Amazon-Ressourcennamen (ARN) oder das Konto der Ressource fest, die verschlüsselt wird. In einer Schlüsselrichtlinien-Anweisung, die AWS CloudTrail die Berechtigung zum Verschlüsseln eines Trail gibt, legen Sie den Wert von aws:SourceArn
auf den ARN des Trail fest. Nutzen Sie, wann immer möglich, den spezifischeren Wert aws:SourceArn
. Legen Sie den Wert auf den ARN oder ein ARN-Muster mit Platzhalterzeichen fest. Wenn Sie den ARN der Ressource nicht kennen, verwenden Sie stattdessen aws:SourceAccount
.
Anmerkung
Wenn ein Ressourcen-ARN Zeichen enthält, die in einer AWS KMS Schlüsselrichtlinie nicht zulässig sind, können Sie diesen Ressourcen-ARN nicht im Wert des aws:SourceArn
Bedingungsschlüssels verwenden. Verwenden Sie stattdessen den Bedingungsschlüssel aws:SourceAccount
. Weitere Informationen zu Dokumentenregeln für Schlüsselrichtlinien finden Sie unter Schlüsselrichtlinienformat.
In der folgenden Beispiel-Schlüsselrichtlinie ist der Prinzipal, der die Berechtigungen erhält, der AWS CloudTrail -Service-Prinzipal cloudtrail.amazonaws.com
. Um die geringsten Berechtigungen zu implementieren, verwendet diese Richtlinie die Bedingungsschlüssel aws:SourceArn
und kms:EncryptionContext:context-key
Die Richtlinienanweisung ermöglicht CloudTrail die Verwendung des KMS-Schlüssels zur Generierung des Datenschlüssels, der zur Verschlüsselung eines Trails verwendet wird. Die Bedingungen aws:SourceArn
und kms:EncryptionContext:context-key
werden unabhängig ausgewertet. Jede Anforderung, den KMS-Schlüssel für die angegebene Produktion zu verwenden, muss beide Bedingungen erfüllen.
Um die Berechtigung des Services auf den finance
-Trail im Beispielkonto (111122223333) und die Region us-west-2
zu beschränken, legt diese Richtlinienanweisung den Bedingungsschlüssel aws:SourceArn
auf den ARN eines bestimmten Trail fest. Die Bedingungsanweisung verwendet den ArnEqualsOperator, um sicherzustellen, dass jedes Element im ARN beim Abgleich unabhängig ausgewertet wird. Das Beispiel verwendet den Bedingungsschlüssel kms:EncryptionContext:context-key
auch, um die Berechtigung auf Trail in einem bestimmten Konto und einer bestimmten Region zu beschränken.
Bevor Sie diese Schlüsselrichtlinie verwenden, ersetzen Sie die Beispiel-Konto-ID, die Region und den Trail-Namen durch gültige Werte aus Ihrem Konto.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow CloudTrail to encrypt logs",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "kms:GenerateDataKey",
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": [
"arn:aws:cloudtrail:us-west-2
:111122223333
:trail/finance
"
]
},
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": [
"arn:aws:cloudtrail:*:111122223333
:trail/*"
]
}
}
}
]
}