Wie AWS Systems Manager Parameter Store AWS KMS nutzt - 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.

Wie AWS Systems Manager Parameter Store AWS KMS nutzt

Mit AWS Systems Manager Parameter Store können Sie sicherer Stringparameter erstellen. Dabei handelt es sich um Parameter mit einem Klartext-Parameternamen und einem verschlüsseltem Parameterwert. Parameter Store nutzt AWS KMSzur Verschlüsselung und Entschlüsselung der Parameterwerte von sicheren Stringparametern.

Mit Parameter Store können Sie Daten als Parameter mit Werten erstellen, speichern und verwalten. Sie können einen Parameter in Parameter Store erstellen und in mehreren Anwendungen und Services verwenden, die den von Ihnen entworfenen Richtlinien und Berechtigungen unterliegen. Wenn Sie einen Parameterwert ändern müssen, ändern Sie nur eine Instance, anstatt fehleranfällige Änderungen an verschiedenen Quellen durchzuführen. Parameter Store unterstützt eine hierarchische Struktur für Parameternamen, sodass Sie einen Parameter für spezielle Zwecke qualifizieren können.

Um vertrauliche Daten zu verwalten, können Sie sichere Stringparameter generieren. Parameter Store verwendet AWS KMS keys, um die Parameterwerte von sicheren Stringparametern zu verschlüsseln, wenn Sie diese erstellen oder ändern. Zudem werden KMS-Schlüssel zum Entschlüsseln der Parameterwerte eingesetzt, wenn Sie auf diese zugreifen. Sie können den Von AWS verwalteter Schlüssel verwenden, den Parameter Store für Ihr Konto erstellt, oder Ihren eigenen kundenverwalteten Schlüssel angeben.

Wichtig

Parameter Store unterstützt nur symmetrische KMS-Schlüssel. Sie können keinen asymmetrischen KMS-Schlüssel verwenden, um Ihre Parameter zu verschlüsseln. Informationen zur Feststellung, ob ein KMS-Schlüssel symmetrisch oder asymmetrisch ist, finden Sie unter Erkennen asymmetrischer KMS-Schlüssel.

Parameter Store unterstützt zwei Stufen von sicheren Stringparametern: Standard und Advanced. Standard-Parameter, die 4096 Bytes nicht überschreiten können, werden direkt mit dem von Ihnen angegebenen KMS-Schlüssel verschlüsselt und entschlüsselt. Zum Verschlüsseln und Entschlüsseln von sicheren Advanced-Stringparametern verwendet Parameter Store Envelope-Verschlüsselung mit dem AWS Encryption SDK. Es ist möglich, einen sicheren Standard-Stringparameter in einen Advanced-Parameter zu konvertieren, aber nicht einen Advanced Parameter in einen Standard-Parameter. Weitere Informationen über den Unterschied zwischen den sicheren Stringparametern Standard und Advanced finden Sie unter Systems Manager Advanced Parameter im AWS Systems Manager-Benutzerhandbuch.

Schützen von sicheren Standard-String-Parametern

Parameter Store führt keine kryptografischen Operationen durch. Stattdessen nutzt es AWS KMS zur Verschlüsselung und Entschlüsselung von sicheren Stringparameter-Werten. Wenn Sie den Wert eines standardmäßigen, sicheren Stringparameters erstellen oder ändern, ruft Parameter Store die AWS KMS-Operation Encrypt auf. Diese Operation verwendet einen KMS-Schlüssel mit symmetrischer Verschlüsselung direkt zum Verschlüsseln des Parameterwerts, statt mit dem KMS-Schlüssel einen Datenschlüssel zu generieren.

Sie können den KMS-Schlüssel auswählen, den Parameter Store zum Verschlüsseln des Parameterwerts nutzt. Wenn Sie keinen KMS-Schlüssel angeben, verwendet Parameter Store den Von AWS verwalteter Schlüssel, den Systems Manager automatisch in Ihrem Konto erstellt. Der KMS-Schlüssel hat den Alias aws/ssm.

Um den Standardaws/ssm-KMS-Schlüssel für Ihr Konto anzuzeigen, verwenden Sie die -DescribeKeyOperation in der AWS KMS-API. In dem folgenden Beispiel wird der describe-key-Befehl in der AWS Command Line Interface (AWS CLI) mit dem Aliasnamen aws/ssm verwendet.

aws kms describe-key --key-id alias/aws/ssm

Um einen sicheren Standard-Stringparameter zu erstellen, verwenden Sie die -PutParameterOperation in der Systems Manager API. Lassen Sie den Parameter Tier weg oder geben Sie als Wert Standard ein,wobei es sich um den Standardwert handelt. Schließen Sie einen Type-Parameter mit einem Wert von SecureString ein. Nutzen Sie zum Angeben eines KMS-Schlüssels den KeyId-Parameter. Der Standardwert ist der Von AWS verwalteter Schlüssel für Ihr Konto, aws/ssm.

Parameter Store ruft dann die AWS KMS-Operation Encrypt mit dem KMS-Schlüssel und dem Klartext-Parameter-Wert auf. AWS KMS gibt den verschlüsselten Parameter-Wert zurück, den mit dem Parameter-Namen speichert.

Im folgenden Beispiel wird der Systems-Manager-Befehl put-parameter und dessen --type-Parameter in der AWS CLI zum Erstellen eines soicheren Stringparameters verwendet. Da der Befehl die optionalen Parameter --tier und --key-id weglässt, erstellt Parameter Store einen sicheren Standard-Stringparameter und verschlüsselt ihn mit dem Von AWS verwalteter Schlüssel.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString

Im folgenden ähnlichen Beispiel wird der --key-id-Parameter zur Angabe eines kundenverwalteten Schlüssels verwendet. Im Beispiel wird eine KMS-Schlüssel-ID verwendet, um den KMS-Schlüssel zu identifizieren, Sie können jedoch einen beliebigen gültigen KMS-Schlüsselbezeichner verwenden. Da der Befehl den Tier-Parameter (--tier) weglässt, erstellt Parameter Store einen sicheren Standard-Stringparameter und keinen Advanced.

aws ssm put-parameter --name param1 --value "secret" --type SecureString --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

Wenn Sie einen sicheren Stringparameter von Parameter Store erhalten, ist dessen Wert verschlüsselt. Um einen Parameter abzurufen, verwenden Sie die -GetParameter Operation in der Systems Manager API.

Im folgenden Beispiel wird der Systems-Manager-Befehl get-parameter in der AWS CLI zum Abrufen des MyParameter-Parameters von Parameter Store verwendet, ohne dessen Wert zu verschlüsseln.

$ aws ssm get-parameter --name MyParameter { "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" } }

Zum Entschlüsseln des Parameterwerts vor der Rückgabe setzen Sie den WithDecryption-Parameter GetParameter auf true. Wenn Sie verwenden, ruft Parameter Store die AWS KMS-Operation Decrypt in Ihrem Namen auf, um den Parameter-Wert zu entschlüsseln. Infolgedessen gibt die GetParameter-Anforderung den Parameter mit einem Klartext-Parameterwert zurück, wie im folgenden Beispiel gezeigt.

$ aws ssm get-parameter --name MyParameter --with-decryption { "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" } }

Der folgende Workflow zeigt, wie Parameter Store einen KMS-Schlüssel zum Verschlüsseln und Entschlüsseln eines sicheren Standard-Stringparameters verwendet.

Verschlüsseln eines Standardparameters

  1. Wenn Sie PutParameter verwenden, um einen sicheren Stringparameter zu erstellen, sendet Parameter Store eine Encrypt-Anforderung an AWS KMS. Diese Anforderung enthält den Klartext-Parameterwert, den von Ihnen ausgewählten KMS-Schlüssel und den Parameter-Store-Verschlüsselungskontext. Während der Übertragung an AWS KMS ist der Klartextwert im sicheren Stringparameter durch die Transport Layer Security (TLS) geschützt.

  2. AWS KMS verschlüsselt den Parameterwert mit dem angegebenen KMS-Schlüssel und Verschlüsselungskontext. Der Chiffretext wird an Parameter Store zurückgegeben. Dort werden der Parametername und dessen verschlüsselter Wert gespeichert.

    
              Verschlüsseln eines sicheren Standard-Stringparameter-Werts

Entschlüsseln eines Standardparameters

  1. Wenn Sie den WithDecryption-Parameter in eine GetParameter-Anforderung einschließen, sendet Parameter Store eine Decrypt-Anforderung an AWS KMS mit dem verschlüsselten Wert des sicheren Stringparameters.

  2. AWS KMS verwendet denselben KMS-Schlüssel und den bereitgestellten Verschlüsselungskontext zum Entschlüsseln des verschlüsselten Werts. Es gibt den Klartext-Parameterwert (entschlüsselt) an Parameter Store zurück. Während der Übertragung sind die Klartextdaten durch TLS geschützt.

  3. Parameter Store gibt den Klartext-Parameterwert an Sie in der GetParameter-Antwort zurück.

Schützen von sicheren erweiterten String-Parametern

Wenn Sie mit PutParameter einen sicheren Advanced-Stringparameter erstellen, verwendet Parameter Store zum Schutz des Parameterwerts Envelope-Verschlüsselung mit dem AWS Encryption SDK und einem AWS KMS key mit symmetrischer Verschlüsselung. Jeder erweiterte Parameterwert ist mit einem eindeutigen Datenschlüssel verschlüsselt, der wiederum mit einem KMS-Schlüssel verschlüsselt ist. Sie können den Von AWS verwaltete Schlüssel für das Konto (aws/ssm) oder einen beliebigen kundenverwalteten Schlüssel verwenden.

Das AWS Encryption SDK ist eine clientseitige Open-Source-Bibliothek, mit der Sie Daten mithilfe von Branchenstandards und bewährten Methoden leichter verschlüsseln und entschlüsseln können. Sie wird auf mehreren Plattformen und in mehreren Programmiersprachen, einschließlich einer Befehlszeilenschnittstelle, unterstützt. Sie können den Quellcode anzeigen und zu seiner Entwicklung in beitragen GitHub.

Für jeden sicheren String-Parameterwert ruft Parameter Store die auf, AWS Encryption SDK um den Parameterwert mit einem eindeutigen Datenschlüssel zu verschlüsseln, den AWS KMS generiert (GenerateDataKey). Das AWS Encryption SDK gibt an Parameter Store eine verschlüsselte Nachricht mit dem verschlüsselten Parameterwert und einer verschlüsselten Kopie des eindeutigen Datenschlüssels zurück. Parameter Store speichert die gesamte verschlüsselte Nachricht im sicheren Stringparameter-Wert. Wenn Sie dann einen sicheren Advanced-Stringparameter-Wert abrufen, verwendet Parameter Store das AWS Encryption SDK zum Verschlüsseln des Parameterwerts. Dies erfordert einen Aufruf von AWS KMS, um den verschlüsselten Datenschlüssel zu entschlüsseln.

Um einen sicheren Advanced-Stringparameter zu erstellen, verwenden Sie die -PutParameterOperation in der Systems Manager API. Stellen Sie den Wert des Parameters Tier auf Advanced ein. Schließen Sie einen Type-Parameter mit einem Wert von SecureString ein. Nutzen Sie zum Angeben eines KMS-Schlüssels den KeyId-Parameter. Der Standardwert ist der Von AWS verwalteter Schlüssel für Ihr Konto, aws/ssm.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced

Im folgenden ähnlichen Beispiel wird der --key-id-Parameter zur Angabe eines kundenverwalteten KMS-Schlüssels verwendet. Das Beispiel verwendet den Amazon-Ressourcennamen (ARN) des KMS-Schlüssels, aber Sie können jeden gültigen KMS-Schlüsselbezeichner angeben.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Wenn Sie einen sicheren Stringparameter aus Parameter Store abrufen, ist sein Wert die verschlüsselte Nachricht, die von AWS Encryption SDK zurückgegeben wird. Um einen Parameter abzurufen, verwenden Sie die -GetParameter Operation in der Systems Manager API.

Das folgende Beispiel verwendet die Systems-Manager-Operation GetParameter zum Anfordern des MyParameter-Parameters von Parameter Store, ohne dessen Wert zu entschlüsseln.

$ aws ssm get-parameter --name MyParameter { "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" } }

Zum Entschlüsseln des Parameterwerts vor der Rückgabe setzen Sie den WithDecryption-Parameter GetParameter auf true. Wenn Sie verwenden, ruft Parameter Store die AWS KMS-Operation Decrypt in Ihrem Namen auf, um den Parameter-Wert zu entschlüsseln. Infolgedessen gibt die GetParameter-Anforderung den Parameter mit einem Klartext-Parameterwert zurück, wie im folgenden Beispiel gezeigt.

$ aws ssm get-parameter --name MyParameter --with-decryption { "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" } }

Es ist nicht möglich, einen sicheren Advanced-Stringparameter in einen Standard-Parameter zu konvertieren, aber es ist möglich einen sicheren Standard-Stringparameter in einen Advanced-Parameter zu konvertieren. Um einen sicheren Standard-Stringparameter in einen sicheren Advanced-Stringparameter zu konvertieren, verwenden Sie die PutParameter-Operation mit dem Overwrite-Parameter. Type muss den Wert SecureString und Tier muss den Wert Advanced haben. Der KeyId-Parameter, der einen kundenverwalteten Schlüssel identifiziert, ist optional. Wenn Sie ihn weglassen, verwendet Parameter Store den Von AWS verwalteter Schlüssel für das Konto. Sie können jeden KMS-Schlüssel angeben, den der Prinzipal verwenden darf, selbst wenn der Standardparameter von Ihnen mit einem anderen KMS-Schlüssel verschlüsselt wurde.

Wenn Sie den Overwrite-Parameter verwenden, verwendet Parameter Store das AWS Encryption SDKum den Parameterwert zu verschlüsseln. Anschließend wird die neu verschlüsselte Nachricht in Parameter Store gespeichert.

$ aws ssm put-parameter --name myStdParameter --value "secret_value" --type SecureString --tier Advanced --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --overwrite

Der folgende Workflow zeigt, wie Parameter Store einen KMS-Schlüssel zum Verschlüsseln und Entschlüsseln eines sicheren Advanced-Stringparameter verwendet.

Verschlüsseln eines erweiterten Parameters

  1. Wenn Sie mit PutParameter einen sicheren Advanced-Stringparameter erstellen, verwendet Parameter Store das AWS Encryption SDK und AWS KMS, um den Parameterwert zu verschlüsseln Parameter Store ruft die AWS Encryption SDK mit dem Parameter-Wert, dem von Ihnen angegebenen KMS-Schlüssel und dem Parameter-Store-Verschlüsselungskontext auf.

  2. AWS Encryption SDK sendet eine GenerateDataKey Anforderung an AWS KMS mit der ID des von Ihnen angegebenen KMS-Schlüssels und dem Parameter Store-Verschlüsselungskontext. AWS KMS gibt zwei Kopien des eindeutigen Datenschlüssels zurück: eine Kopie im Klartext und eine mit dem KMS-Schlüssel verschlüsselte Kopie. (Der Verschlüsselungskontext wird beim Verschlüsseln des Datenschlüssels verwendet.)

  3. Das AWS Encryption SDK verschlüsselt den Parameterwert mithilfe des Klartext-Datenschlüssels. Es wird eine verschlüsselte Nachricht mit dem verschlüsselten Parameterwert, dem verschlüsselten Datenschlüssel und anderen Daten, einschließlich des Parameter-Store-Verschlüsselungskontextes, zurückgegeben.

  4. Parameter Store speichert die verschlüsselte Nachricht als Parameterwert.

    
              Verschlüsseln eines sicheren Advanced-Stringparameter-Werts

Entschlüsseln eines erweiterten Parameters

  1. Sie können den WithDecryption-Parameter in eine GetParameter-Anforderung einschließen, um einen sicheren Advanced-Stringparameter zu erhalten. In diesem Fall übergibt Parameter Store die verschlüsselte Nachricht aus dem Parameterwert an eine Entschlüsselungsmethode des AWS Encryption SDK.

  2. Das AWS Encryption SDK ruft die AWS KMS-Operation Decrypt auf. Es übergibt den verschlüsselten Datenschlüssel und den Parameter-Store-Verschlüsselungskontext aus der verschlüsselten Nachricht.

  3. AWS KMS verwendet den KMS-Schlüssel und den Parameter-Store-Verschlüsselungskontext, um den verschlüsselten Datenschlüssel zu entschlüsseln. Anschließend gibt die Operation den Klartext-Datenschlüssel (entschlüsselt) an das AWS Encryption SDK zurück.

  4. Das AWS Encryption SDK verwendet den Klartext-Datenschlüssel zum Entschlüsseln des Parameterwertes. Es gibt den Klartext-Parameterwert an Parameter Store zurück.

  5. Parameter Store überprüft den Verschlüsselungskontext und gibt den Klartext-Parameterwert in der GetParameter-Antwort an Sie zurück.

Festlegen der Berechtigungen zum Verschlüsseln und Entschlüsseln von Parameterwerten

Zum Verschlüsseln eines sicheren Standard-Stringparameter-Werts benötigt der Benutzer die kms:Encrypt-Berechtigung. Zum Verschlüsseln eines sicheren Advanced-Stringparameter-Werts benötigt der Benutzer die kms:GenerateDataKey-Berechtigung. Zum Entschlüsseln des sicheren Stringparameter-Werts beider Typen benötigt der Benutzer die kms:Decrypt-Berechtigung.

Sie können mit IAM-Richtlinien die Berechtigungen für Benutzer zum Aufrufen der Systems-Manager-Operationen PutParameter und GetParameter gewähren oder verweigern.

Wenn Sie Ihre sicheren Stringparameter-Werte mit benutzerverwalteten Schlüsseln verschlüsseln, können Sie zum Verwalten der Verschlüsselungs- und Entschlüsselungs-Berechtigungen IAM-Richtlinien und Schlüsselrichtlinien verwenden. Sie können jedoch keine Zugriffssteuerungs-Richtlinien für den standardmäßigen aws/ssm-KMS-Schlüssel einrichten. Ausführliche Informationen zur Steuerung des Zugriffs auf kundenverwaltete Schlüssel finden Sie unter Authentifizierung und Zugriffskontrolle für AWS KMS.

Das folgende Beispiel zeigt eine IAM-Richtlinie, die für sichere Standard-Stringparameter bestimmt ist. Sie ermöglicht dem Benutzer den Aufruf der Systems-Manager-Operation PutParameter für alle Parameter im Pfad FinancialParameters. Die Richtlinie ermöglicht dem Benutzer auch, die AWS KMS-Operation Encrypt für einen kundenverwalteten Beispiel-KMS-Schlüssel aufzurufen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/FinancialParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Das folgende Beispiel zeigt eine IAM-Richtlinie an, die für sichere Advanced-Stringparameter bestimmt ist. Sie ermöglicht dem Benutzer den Aufruf der Systems-Manager-Operation PutParameter für alle Parameter im Pfad ReservedParameters. Die Richtlinie ermöglicht dem Benutzer auch, die AWS KMS-Operation GenerateDataKey für einen kundenverwalteten Beispiel-KMS-Schlüssel aufzurufen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ReservedParameters/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Das letzte Beispiel zeigt eine IAM-Richtlinie, die für sichere Stringparameter beider Typen verwendet werden kann. Sie ermöglicht dem Benutzer den Aufruf der Systems-Manager-Operation GetParameter (und verwandte Operationen) für alle Parameter im Pfad ITParameters. Die Richtlinie ermöglicht dem Benutzer auch, die AWS KMS-Operation Decrypt für einen kundenverwalteten Beispiel-KMS-Schlüssel aufzurufen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ITParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Parameter-Store-Verschlüsselungskontext

Ein Verschlüsselungskontext ist eine Gruppe von Schlüssel/Wert-Paaren mit willkürlichen, nicht geheimen Daten. Wenn Sie einen Verschlüsselungskontext in eine Anforderung zur Verschlüsselung von Daten aufnehmen, bindet AWS KMS den Verschlüsselungskontext kryptografisch an die verschlüsselten Daten. Zur Entschlüsselung der Daten müssen Sie denselben Verschlüsselungskontext übergeben.

Sie können den Verschlüsselungskontext auch nutzen, um eine kryptografische Operation in Audit-Datensätzen und -Protokollen zu identifizieren. Die Verschlüsselungskontext wird in Klartext-Protokollen wie AWS CloudTrail angezeigt.

Das AWS Encryption SDK nimmt auch einen Verschlüsselungskontext, dieser wird allerdings anders verarbeitet. Parameter Store stellt den Verschlüsselungskontext für die Verschlüsselungsmethode bereit. Das AWS Encryption SDK bindet den Verschlüsselungskontext kryptographisch an die verschlüsselten Daten. Es schließt den Verschlüsselungskontext als Klartext im Header der von ihm zurückgegebenen verschlüsselten Nachricht ein. Anders als bei AWS KMS nehmen die AWS Encryption SDK-Entschlüsselungsmethoden keinen Verschlüsselungskontext als Eingabe an. Stattdessen erhält das AWS Encryption SDK beim Entschlüsseln von Daten den Verschlüsselungskontext aus der verschlüsselten Nachricht. Parameter Store überprüft den Verschlüsselungskontext und fügt den erwarteten Wert hinzu, bevor es den Klartext-Parameterwert an Sie zurückgibt.

Parameter Store verwendet den folgenden Verschlüsselungskontext in seinen kryptografischen Operationen:

  • Schlüssel: PARAMETER_ARN

  • Wert: Der Amazon-Ressourcenname (ARN) des Parameters, der verschlüsselt wird.

Das Format des Verschlüsselungskontexts sieht wie folgt aus:

"PARAMETER_ARN":"arn:aws:ssm:<REGION_NAME>:<ACCOUNT_ID>:parameter/<parameter-name>"

Parameter Store enthält beispielsweise den Verschlüsselungskontext in Aufrufen zum Verschlüsseln und Entschlüsseln des MyParameter-Parameters in einem Beispiel-AWS-Konto und einer Region.

"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter"

Befindet sich der Parameter in einem hierarchischen Parameter-Store-Pfad, sind sowohl der Pfad als auch der Name im Verschlüsselungskontext enthalten. Dieser Verschlüsselungskontext wird beispielsweise beim Verschlüsseln und Entschlüsseln des MyParameter-Parameters im /ReadableParameters-Pfad in einem Beispiel-AWS-Konto und einer Region verwendet.

"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/ReadableParameters/MyParameter"

Sie können einen verschlüsselten sicheren Stringparameter entschlüsseln, indem Sie die AWS KMS-Operation Decrypt mit dem richtigen Verschlüsselungskontext und dem verschlüsselten Parameterwert, den die Systems-Manager-Operation GetParameter zurückgibt, aufrufen. Wir empfehlen jedoch, die Parameterwerte von Parameter Store mithilfe der GetParameter-Operation mit dem WithDecryption-Parameter zu entschlüsseln.

Sie können den Verschlüsselungskontext auch in eine IAM-Richtlinie einschließen. So können Sie einen Benutzer beispielsweise nur dazu berechtigen, einen bestimmten Parameterwert oder eine bestimmte Gruppe von Parameterwerten zu entschlüsseln.

Das folgende Beispiel einer IAM-Richtlinie erlaubt es dem Benutzer, den Wert des MyParameter-Parameters abzurufen und den Wert mit dem angegebenen KMS-Schlüssel zu entschlüsseln. Diese Berechtigungen gelten jedoch nur, wenn der Verschlüsselungskontext mit der angegebenen Zeichenfolge übereinstimmt. Diese Berechtigungen gelten nicht für andere Parameter oder KMS-Schlüssel und der Aufruf an GetParameter schlägt fehl, wenn der Verschlüsselungskontext nicht mit der Zeichenfolge übereinstimmt.

Bevor Sie eine Richtlinienanweisung wie diese verwenden, ersetzen Sie die Beispiels-ARNs durch gültige Werte.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter" } } } ] }

Beheben von KMS-Schlüsselproblemen in Parameter Store

Um eine Operation auf einem sicheren Stringparameter durchzuführen, muss Parameter Store in der Lage sein, den AWS KMS-Schlüssel zu nutzen, den Sie für die beabsichtigte Operation angeben. Die meisten Parameter-Store-Fehler im Zusammenhang mit KMS-Schlüsseln treten aus folgenden Gründen auf:

  • Die Anmeldeinformationen, die eine Anwendung verwendet, sind nicht berechtigt, eine bestimmte Aktion mit einem KMS-Schlüssel durchzuführen.

    Zur Behebung dieses Problems führen Sie die Anwendung mit anderen Anmeldeinformationen aus oder ändern die IAM- oder Schlüssel-Richtlinie, die diese Operation verhindert. Weitere Informationen zu IAM- und Schlüssel-Richtlinien in AWS KMS finden Sie unter Authentifizierung und Zugriffskontrolle für AWS KMS.

  • Der KMS-Schlüssel wurde nicht gefunden.

    Dies geschieht in der Regel, wenn Sie einen falschen Bezeichner für den KMS-Schlüssel verwenden. Finden Sie die richtigen Bezeichner für den KMS-Schlüssel und wiederholen Sie den Befehl.

  • Der KMS-Schlüssel ist nicht aktiviert. In diesem Fall gibt Parameter Store eine InvalidKeyId Ausnahme mit einer detaillierten Fehlermeldung von zurückAWS KMS. Wenn der Schlüsselstatus des KMS-Schlüssels Disabled lautet, aktivieren Sie ihn. Wenn der Status Pending Import lautet, führen Sie das Importverfahren durch. Lautet der Schlüsselstatus Pending Deletion, brechen Sie die Schlüssellöschung ab oder verwenden Sie einen anderen KMS-Schlüssel.

    Wie Sie den Schlüsselstatus eines KMS-Schlüssels in der AWS KMS-Konsole und auf den Seiten zu Customer managed keys (Kundenverwaltete Schlüssel) oder Von AWS verwaltete Schlüssel finden können, erfahren Sie in der Status-Spalte. Um den Status eines KMS-Schlüssels mit der AWS KMS-API zu ermitteln, verwenden Sie die -DescribeKeyOperation.