Ich habe versucht, die AWS Lambda-Verschlüsselungshilfer zu verwenden, um Umgebungsvariablen für den AWS Key Management Service (AWS KMS) zu entschlüsseln, und habe den Fehler „InvalidCiphertException“ erhalten.
Kurzbeschreibung
Der AWS KMS-API-Aktionsfehler InvalidCiphertextException weist darauf hin, dass die Entschlüsselungsanfrage fehlgeschlagen ist, weil Lambda die Verschlüsselung von Umgebungsvariablen aktualisiert hat. Lambda übergibt den Funktionsnamen als Verschlüsselungskontext, der den Verschlüsselungsaufruf an AWS KMS durchführt. Für Entschlüsselungsfunktionen, die vor dieser Änderung erstellt wurden, müssen Sie den Code für die Entschlüsselung aktualisieren und den Namen der Lambda-Funktion als Verschlüsselungskontext übergeben.
Behebung
Gehen Sie wie folgt vor, um den Code mit dem Entschlüsselungsaufruf an AWS KMS für ein bestimmtes SDK mit dem Verschlüsselungskontext abzurufen:
- Öffnen Sie die Lambda-Konsole und wählen Sie dann Funktionen.
- Wählen Sie unter Funktionsname die Lambda-Funktion aus, und wählen Sie dann die Registerkarte Konfiguration aus.
- Für Umgebungsvariable wählen Sie die Option Bearbeiten und dann Umgebungsvariable hinzufügen aus.
- Geben Sie einen Schlüssel und einen Wert ein und erweitern Sie dann die Verschlüsselungskonfiguration.
- Wählen Sie Helfer für die Verschlüsselung während der Übertragung aktivieren und dann Verschlüsseln.
- Erweitern Sie Decrypt Secrets Snippet und geben Sie dann einen Codeausschnitt ein, der dem folgenden ähnelt:
DECRYPTED = boto3.client('kms').decrypt( CiphertextBlob=b64decode(ENCRYPTED),
EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')
Verwenden Sie den vorherigen Codeausschnitt, um neue Umgebungsvariablen zu entschlüsseln, die mit Verschlüsselungshelfern verschlüsselt wurden.
Achten Sie darauf, alte Umgebungsvariablen erneut zu verschlüsseln, damit sie mit den neuen Umgebungsvariablen funktionieren.
Weitere Informationen finden Sie unter Verwenden von AWS Lambda-Umgebungsvariablen.
Ähnliche Informationen
Wie kann ich überprüfen, ob beim Aufrufen von AWS KMS-APIs eine authentifizierte Verschlüsselung mit zugehöriger Datenverschlüsselung verwendet wird?