Berechtigungen für AWS Dienste in wichtigen Richtlinien - 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 für AWS Dienste in wichtigen Richtlinien

Viele AWS Dienste verwenden sie AWS KMS keys , um die von ihnen verwalteten Ressourcen zu schützen. Wenn ein Service AWS-eigene Schlüssel oder Von AWS verwaltete Schlüssel verwendet, legt der Service die Schlüsselrichtlinien für diese KMS-Schlüssel fest und verwaltet sie.

Wenn Sie jedoch einen vom Kunden verwalteten Schlüssel mit einem AWS -Service verwenden, legen Sie die Schlüsselrichtlinie fest und verwalten sie. Diese Schlüsselrichtlinie muss dem Service die Mindestberechtigungen gewähren, die er benötigt, um die Ressource in Ihrem Namen zu schützen. Wir empfehlen, dem Prinzip der geringsten Berechtigung zu folgen: Gewähren Sie dem Service nur die Berechtigungen, die er benötigt. Dazu sollten Sie ermitteln, welche Berechtigungen der Service benötigt, und die globalen Bedingungsschlüssel von AWS sowie die Bedingungsschlüssel von AWS KMS verwenden, um die Berechtigungen detaillierter festzulegen.

Um die Berechtigungen zu ermitteln, die der Service für einen vom Kunden verwalteten Schlüssel benötigt, lesen Sie in der Verschlüsselungsdokumentation für den Service nach. Informationen zu den Berechtigungen, die Amazon Elastic Block Store (Amazon EBS) benötigt, finden Sie beispielsweise unter Berechtigungen für IAM-Benutzer im Amazon EC2 EC2-Benutzerhandbuch und im Amazon EC2 EC2-Benutzerhandbuch. Die Berechtigungen, die Secrets Manager benötigt, finden Sie unter Autorisieren der Nutzung des KMS-Schlüssels im AWS Secrets Manager -Benutzerhandbuch.

Implementieren der geringsten Berechtigungen

Wenn Sie einem AWS Service die Erlaubnis zur Verwendung eines KMS-Schlüssels erteilen, stellen Sie sicher, dass die Berechtigung nur für die Ressourcen gilt, auf die der Service 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:EncryptionContextKeysBedingungsschlüssel kms:EncryptionContext:context-keyoder in die Richtlinie aufzunehmen, die es den Prinzipalen ermöglicht, AWS KMS kryptografische Operationen aufzurufen. 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:context-key oder kms:EncryptionContextKeys.) Wenn Sie diese Bedingungsschlüssel verwenden, um z. B. andere Operationen zuzulassen, wird der DescribeKeyZugriff 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 der Prinzipal in einer Schlüsselrichtlinien-Anweisung ein AWS -Service-Prinzipal ist, empfehlen wir dringend, zusätzlich zum Bedingungsschlüssel kms:EncryptionContext:context-key die globalen Bedingungsschlüssel aws:SourceArn oder aws:SourceAccount zu verwenden. 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/*" ] } } } ] }