Erstellen einer Erteilung - 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.

Erstellen einer Erteilung

Informieren Sie sich vor dem Erstellen einer Erteilung über die Optionen für benutzerdefinierte Erteilungen. Sie können auch Erteilungs-Einschränkungen verwenden, um die Berechtigungen in einer Erteilung einzuschränken. Erfahren Sie auch mehr über die Erteilung der CreateGrant-Berechtigung. Prinzipale, die die Berechtigung zum Erstellen von Erteilungen aus einer Erteilung erhalten, sind in den Erteilungen beschränkt, die sie erstellen können.

Erstellen einer Erteilung

Um einen Zuschuss zu erstellen, rufen Sie den Vorgang auf. CreateGrant Geben Sie einen KMS-Schlüssel an, einen Empfänger-Prinzipal und eine Liste der zulässigen Erteilungs-Operationen. Sie können auch einen optionalen ausscheidenden Prinzipal angeben. Um die Erteilung anzupassen, verwenden Sie optionale Constraints-Parameter, um Erteilungseinschränkungen zu definieren.

Wenn Sie eine Erteilung erstellen, aufheben oder widerrufen, kann es zu einer kurzen Verzögerung (in der Regel weniger als fünf Minuten) kommen, bevor die Änderung in allen Bereichen von AWS KMS verfügbar ist. Weitere Informationen finden Sie unter Letztendliche Konsistenz (für Erteilungen).

Der folgende CreateGrant-Befehl erstellt beispielsweise eine Erteilung, die Benutzer, die die keyUserRole-Rolle annehmen dürfen, den Aufruf der Decrypt-Operation für den angegebenen symmetrischen KMS-Schlüssel erlaubt. Die Erteilung legt mit dem Parameter RetiringPrincipal einen Prinzipal fest, der die erteilte Berechtigung aufheben kann. Es enthält auch eine Erteilungseinschränkung, die die Berechtigung nur zulässt, wenn der Verschlüsselungskontext in der Anforderung "Department": "IT" einschließt.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

Wenn Ihr Code die CreateGrant-Produktion erneut versucht, oder ein AWS -SDK verwendet, das Anforderungen automatisch wiederholt, verwenden Sie den optionalen Name-Parameter, um das Erstellen von doppelten Erteilungen zu verhindern. Wenn eine CreateGrant Anfrage für einen Zuschuss mit den gleichen Eigenschaften wie ein vorhandener Zuschuss AWS KMS eingeht, einschließlich des Namens, wird die Anfrage als Wiederholung erkannt und es wird kein neuer Zuschuss erstellt. Sie können nicht den Name-Wert verwenden, um die Erteilung in einer AWS KMS -Produktion zu identifizieren.

Wichtig

Geben Sie keine vertraulichen oder sensiblen Informationen im Namen der Erteilung an. Es kann als Klartext in CloudTrail Protokollen und anderen Ausgaben erscheinen.

$ aws kms create-grant \ --name IT-1234abcd-keyUserRole-decrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

Code-Beispiele zur Veranschaulichung der Arbeit mit Erteilungen in mehreren Programmiersprachen finden Sie unter Arbeiten mit Erteilungen.

Verwenden von Erteilungs-Einschränkungen

Erteilungs-Einschränkungen legen Bedingungen für die Berechtigungen fest, die der Empfänger-Prinzipal ausführen kann. Erteilungs-Einschränkungen treten an die Stelle von Bedingungsschlüssel in einer Schlüsselrichtlinie oder IAM-Richtlinie. Jeder Erteilungs-Einschränkungs-Wert kann bis zu 8 Verschlüsselungskontext-Paare enthalten. Der Verschlüsselungskontext-Wert in jeder Erteilungs-Einschränkung darf 384 Zeichen nicht überschreiten.

Wichtig

Geben Sie keine vertraulichen oder sensiblen Informationen in dieses Feld ein. Dieses Feld kann in CloudTrail Protokollen und anderen Ausgaben im Klartext angezeigt werden.

AWS KMS unterstützt zwei Grant-Beschränkungen EncryptionContextEquals undEncryptionContextSubset, die beide Anforderungen an den Verschlüsselungskontext bei einer Anforderung für einen kryptografischen Vorgang festlegen.

Die Verschlüsselungskontext-Erteilungs-Einschränkungen sind für die Verwendung mit Erteilungs-Operationen entworfen, die einen Verschlüsselungskontext-Parameter haben.

  • Beschränkungen für den Verschlüsselungskontext gelten nur in einer Erteilung für einen KMS-Schlüssel mit symmetrischer Verschlüsselung. Kryptografische Operationen mit asymmetrischen KMS-Schlüsseln unterstützen keinen Verschlüsselungskontext.

  • Die Verschlüsselungskontext-Einschränkung wird für DescribeKey- und RetireGrant-Operationen ignoriert. DescribeKey und RetireGrant haben keinen Verschlüsselungskontext-Parameter, aber Sie können diese Operationen in eine Erteilung einschließen, die über eine Verschlüsselungskontext-Einschränkung verfügt.

  • Sie können eine Verschlüsselungskontext-Einschränkung in einer Erteilung für die CreateGrant-Produktion verwenden. Die Verschlüsselungskontext-Einschränkung erfordert, dass alle Erteilungen, die mit der CreateGrant-Berechtigung erstellt wurden, eine ebenso strenge oder strengere Verschlüsselungskontext-Einschränkung haben.

AWS KMS unterstützt die folgenden Gewährungsbeschränkungen für den Verschlüsselungskontext.

EncryptionContextEquals

Verwenden Sie EncryptionContextEquals, um den exakten Verschlüsselungskontext für zulässige Anforderungen anzugeben.

EncryptionContextEquals erfordert, dass die Verschlüsselungskontext-Paare in der Anforderung genau mit den Verschlüsselungskontext-Paaren in der Erteilungs-Einschränkung übereinstimmen (inkl. Groß-/Kleinschreibung). Die Paare können in beliebiger Reihenfolge erscheinen. Die Schlüssel und Werte in den Paaren können nicht variieren.

Zum Beispiel, wenn die EncryptionContextEquals-Erteilungs-Einschränkung das "Department": "IT"-Verschlüsselungskontext-Paar erfordert, erlaubt die Erteilung Anforderungen des angegebenen Typs nur dann, wenn der Verschlüsselungskontext in der Anforderung genau "Department": "IT" ist.

EncryptionContextSubset

Verwenden Sie EncryptionContextSubset, um zu erfordern, dass Anforderungen bestimmte Verschlüsselungskontext-Paare enthalten.

EncryptionContextSubset erfordert, dass die Anforderung alle Verschlüsselungskontext-Paare in der Erteilungs-Einschränkung enthält (genaue Übereinstimmung, inkl. Groß-/Kleinschreibung), aber die Anforderung kann auch zusätzliche Verschlüsselungskontext-Paare enthalten. Die Paare können in beliebiger Reihenfolge erscheinen. Die Schlüssel und Werte in den Paaren können nicht variieren.

Zum Beispiel, wenn die EncryptionContextSubset-Erteilungs-Einschränkung das Department=IT-Verschlüsselungskontext-Paar erfordert, erlaubt die Erteilung Anforderungen des angegebenen Typs nur dann, wenn der Verschlüsselungskontext in der Anforderung "Department": "IT" ist oder "Department": "IT" enthält, zusammen mit anderen Verschlüsselungskontext-Paaren, z. B. "Department": "IT","Purpose": "Test".

Verwenden Sie den Constraints Parameter im CreateGrantVorgang, um eine Einschränkung für den Verschlüsselungskontext in einer Gewährung für einen symmetrischen Verschlüsselungs-KMS-Schlüssel anzugeben. Die Erteilung, die dieser Befehl erstellt, gewährt Benutzern, die die keyUserRole-Rolle annehmen dürfen, die Erlaubnis, die Decrypt-Operation aufzurufen. Diese Berechtigung ist jedoch nur wirksam, wenn der Verschlüsselungskontext in der Decrypt-Anforderung ein "Department": "IT"-Verschlüsselungskontext-Paar ist.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextEquals={Department=IT}

Die resultierende Erteilung sieht wie die folgende aus. Beachten Sie, dass die erteilte Berechtigung für die keyUserRole-Rolle nur wirksam ist, wenn die Decrypt-Anforderung das Verschlüsselungskontextpaar enthält, das in der Erteilungseinschränkung angegeben ist. Verwenden Sie den ListGrantsVorgang, um die Grants für einen KMS-Schlüssel zu finden.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ] }

Um die EncryptionContextEquals-Erteilungs-Einschränkung zu erfüllen, muss der Verschlüsselungskontext in der Anforderung für die Decrypt-Produktion ein "Department": "IT"-Paar sein. Eine Anforderung wie die folgende vom Empfänger-Prinzipal würde die EncryptionContextEquals-Erteilungs-Einschränkung erfüllen.

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT

Wenn die Erteilungs-Einschränkung EncryptionContextSubset ist, müssen die Verschlüsselungskontext-Paare in der Anforderung die Verschlüsselungskontext-Paare in der Erteilungs-Einschränkung beinhalten, aber die Anforderung kann auch andere Verschlüsselungskontext-Paare enthalten. Die folgende Erteilungs-Einschränkung erfordert, dass eines der Verschlüsselungskontext-Paare in der Anforderung "Deparment": "IT" ist.

"Constraints": { "EncryptionContextSubset": { "Department": "IT" } }

Eine Anforderung wie die folgende vom Empfänger-Prinzipal würde sowohl die EncryptionContextEqual- und EncryptionContextSubset-Erteilungs-Einschränkung in diesem Beispiel erfüllen.

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT

Eine Anforderung wie die folgende vom Empfänger-Prinzipal würde die EncryptionContextSubset-Erteilungs-Einschränkung erfüllen, aber nicht die EncryptionContextEquals-Erteilungs-Einschränkung.

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT,Purpose=Test

AWS Dienste verwenden häufig Einschränkungen des Verschlüsselungskontextes in den Zuweisungen, die ihnen die Erlaubnis geben, KMS-Schlüssel in Ihrem System zu verwenden AWS-Konto. Beispielsweise verwendet Amazon DynamoDB eine Erteilung wie die folgende, um die Berechtigung zu erhalten, den Von AWS verwalteter Schlüssel für DynamoDB in Ihrem Konto zu verwenden. Die EncryptionContextSubset-Erteilungseinschränkung in dieser Erteilung macht die Berechtigungen in der Erteilung nur wirksam, wenn der Verschlüsselungskontext in der Anforderung "subscriberID": "111122223333"- und "tableName": "Services"-Paare enthält. Diese Erteilungs-Einschränkung bedeutet, dass die Erteilung es DynamoDB erlaubt, den angegebenen KMS-Schlüssel nur für eine bestimmte Tabelle in Ihrem AWS-Konto zu verwenden.

Um diese Ausgabe zu erhalten, führen Sie den ListGrantsVorgang Von AWS verwalteter Schlüssel für DynamoDB in Ihrem Konto aus.

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ] }

Genehmigung erteilen CreateGrant

Eine Erteilung kann die Berechtigung zum Aufrufen der CreateGrant-Produktion enthalten. Aber wenn ein Empfänger-Prinzipal die Berechtigung zum Aufrufen von CreateGrant von einer Erteilung erhält, und nicht von einer Richtlinie, ist diese Berechtigung eingeschränkt.

  • Der Empfänger-Prinzipal kann nur Erteilungen erlauben, die einige oder alle Operationen in der übergeordneten Erteilung zulassen.

  • Die Erteilungs-Einschränkungen in den Erteilungen, die sie erstellen, müssen mindestens so streng sein wie die in der übergeordneten Erteilung.

Diese Einschränkungen gelten nicht für Prinzipale, die die CreateGrant-Berechtigung aus einer Richtlinie erhalten, obwohl ihre Berechtigungen durch Richtlinienbedingungen eingeschränkt werden können.

Nehmen wir beispielsweise eine Erteilung, die es dem empfangenden Prinzipal ermöglicht, die GenerateDataKey-, Decrypt- und CreateGrant-Operationen aufzurufen. Wir nennen eine Erteilung, die die CreateGrant-Berechtigung erlaubt, eine übergeordnete Erteilung.

# The original grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "GenerateDataKey", "Decrypt", "CreateGrant ] "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, } ] }

Der Empfänger-Prinzipal exampleUser kann diese Berechtigung verwenden, um eine Erteilung zu erstellen, die eine Teilmenge der in der ursprünglichen Erteilung angegebenen Operationen enthält – z. B. CreateGrant und Decrypt. Die untergeordnete Erteilung kann keine anderen Operationen enthalten (z. B. ScheduleKeyDeletion oder ReEncrypt).

Außerdem müssen die Erteilungs-Beschränkungen in untergeordneten Erteilungen mindestens ebenso restriktiv sein, wie die in der übergeordneten Erteilungen. So kann die untergeordnete Erteilung beispielsweise Paare zu einer EncryptionContextSubset-Beschränkung in der übergeordneten Erteilung hinzufügen. Sie kann sie jedoch nicht entfernen. Die untergeordnete Erteilung kann eine EncryptionContextSubset-Beschränkung in eine EncryptionContextEquals-Beschränkung ändern – nicht jedoch umgekehrt.

Beispielsweise kann der Empfänger-Prinzipal die CreateGrant-Berechtigung verwenden, die er von der übergeordneten Erteilung erhalten hat, um die folgende untergeordnete Erteilung zu erstellen Die Operationen in der untergeordneten Erteilung sind eine Teilmenge der Operationen in der übergeordneten Erteilung, und die Erteilungs-Beschränkungen sind restriktiver.

# The child grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572249600.0, "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f", "Operations": [ "CreateGrant" "Decrypt" ] "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser", "Constraints": { IAM best practices discourage the use of IAM users with long-term credentials. Whenever possible, use IAM roles, which provide temporary credentials. For details, see Security best practices in IAM in the IAM User Guide. "EncryptionContextEquals": { "Department": "IT" } }, } ] }

Der Empfänger-Prinzipal in der untergeordneten Erteilung, anotherUser, kann seine CreateGrant-Berechtigung zum Erstellen von Erteilungen verwenden. Allerdings müssen die Erteilungen, die anotherUser erstellt, die Operationen in der übergeordneten Erteilung oder in einer Teilmenge enthalten, und die Erteilungs-Einschränkungen müssen gleichwertig oder strenger sein.