Berechtigungen mit den geringsten Rechten - AWS Key Management Service

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.

Berechtigungen mit den geringsten Rechten

Da Ihre KMS Schlüssel vertrauliche Informationen schützen, empfehlen wir, dem Prinzip des Zugriffs mit den geringsten Rechten zu folgen. Delegieren Sie die Mindestberechtigungen, die für die Ausführung einer Aufgabe erforderlich sind, wenn Sie Ihre wichtigsten Richtlinien definieren. Lassen Sie alle Aktionen (kms:*) für eine KMS wichtige Richtlinie 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 Richtlinie zulassen, verfügt der IAM 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:PrincipalTagum alle Aktionen zuzulassen, wenn der Principal, der den API Anruf tätigt, das in der Bedingungsregel angegebene Tag hat.

Weitere Informationen darüber, wie Grundsatzerklärungen bewertet werden AWS, finden Sie unter Bewertungslogik für Richtlinien im IAMBenutzerhandbuch. 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, sollten Sie IAMAccess Analyzer verwenden, um Ihren Richtlinien die geringsten Rechte zuzuweisen. IAM

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. Sie können sie verwendenMFA, um Folgendes zu tun:

  • Erfordern Sie, dass Benutzer ihre Anmeldeinformationen validieren, MFA 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 mehrere Personen auf, um die geteilte Autorisierung zu implementieren.

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, 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 Kontowerte ARN und die 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 aws:SourceArn oder aws:SourceAccount globalen Bedingungsschlüssel zu verwenden, setzen Sie den Wert auf den Amazon-Ressourcennamen (ARN) oder das Konto der Ressource, die verschlüsselt wird. Setzen Sie beispielsweise in einer wichtigen Richtlinienerklärung, die die AWS CloudTrail Erlaubnis erteilt, einen Trail zu verschlüsseln, den Wert von aws:SourceArn auf den ARN Pfad. Nutzen Sie, wann immer möglich, den spezifischeren Wert aws:SourceArn. Setzen Sie den Wert auf ARN oder ein ARN Muster mit Platzhalterzeichen. Wenn Sie die ARN Ressource nicht kennen, verwenden Sie aws:SourceAccount stattdessen.

Anmerkung

Wenn eine Ressource Zeichen ARN enthält, die in einer AWS KMS Schlüsselrichtlinie nicht zulässig sind, können Sie diese Ressource nicht ARN 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, mit dem ein Trail verschlüsselt wird. Die Bedingungen aws:SourceArn und kms:EncryptionContext:context-key werden unabhängig ausgewertet. Jede Anfrage zur Verwendung des KMS Schlüssels für den angegebenen Vorgang muss beide Bedingungen erfüllen.

Um die Zugriffsrechte des Dienstes auf den finance Trail im Beispielkonto (111122223333) und in der us-west-2 Region zu beschränken, legt diese Richtlinienanweisung den aws:SourceArn Bedingungsschlüssel auf den ARN eines bestimmten Pfads fest. Die Bedingungsanweisung verwendet den ArnEqualsOperator, um sicherzustellen, dass jedes Element in der beim Abgleichen unabhängig ausgewertet ARN 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/*" ] } } } ] }