Verschlüsselung von Lambda-.zip-Bereitstellungspaketen - AWS Lambda

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.

Verschlüsselung von Lambda-.zip-Bereitstellungspaketen

Lambda bietet im Ruhezustand immer serverseitige Verschlüsselung für .zip-Bereitstellungspakete und Funktionskonfigurationsdetails mit einem AWS KMS key an. Standardmäßig verwendet Lambda einen AWS-eigener Schlüssel. Wenn dieses Standardverhalten zu Ihrem Workflow passt, müssen Sie nichts anderes einrichten. AWS berechnet Ihnen keine Gebühren für die Verwendung dieses Schlüssels.

Wenn Sie möchten, können Sie stattdessen einen vom AWS KMS Kunden verwalteten Schlüssel bereitstellen. Sie können dies tun, um die Drehung des KMS-Schlüssels zu steuern oder die Anforderungen Ihrer Organisation für die Verwaltung von KMS-Schlüsseln zu erfüllen. Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden, können nur Benutzer Ihres Kontos mit Zugriff auf den KMS-Schlüssel den Code oder die Konfiguration der Funktion anzeigen oder verwalten.

Für vom Kunden verwaltete Schlüssel fallen AWS KMS Standardgebühren an. Weitere Informationen finden Sie unter AWS Key Management Service Preise.

Einen kundenverwalteten Schlüssel erstellen

Sie können einen symmetrischen, vom Kunden verwalteten Schlüssel erstellen, indem Sie den AWS Management Console, oder den verwenden. AWS KMS APIs

Einen symmetrischen kundenverwalteten Schlüssel erstellen

Befolgen Sie die Schritte zur Erstellung symmetrischer Verschlüsselung Erstellung symmetrischer KMS-Schlüssel mit symmetrischer Verschlüsselung im AWS Key Management Service -Entwicklerhandbuch.

Berechtigungen

Schlüsselrichtlinie

Schlüsselrichtlinien steuern den Zugriff auf den vom Kunden verwalteten Schlüssel. Jeder vom Kunden verwaltete Schlüssel muss über genau eine Schlüsselrichtlinie verfügen, die aussagt, wer den Schlüssel wie verwenden kann. Weitere Informationen finden Sie unter So ändern Sie eine Schlüsselrichtlinie im AWS Key Management Service -Entwicklerhandbuch.

Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden, um ein .zip-Bereitstellungspaket zu verschlüsseln, fügt Lambda dem Schlüssel keinen Zuschuss hinzu. Stattdessen muss Ihre AWS KMS Schlüsselrichtlinie es Lambda ermöglichen, die folgenden AWS KMS API-Operationen in Ihrem Namen aufzurufen:

Die folgende Beispielschlüsselrichtlinie ermöglicht es allen Lambda-Funktionen im Konto 111122223333, die erforderlichen AWS KMS Operationen für den angegebenen vom Kunden verwalteten Schlüssel aufzurufen:

Beispiel AWS KMS wichtige Richtlinie
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:*" } } } ] }

Weitere Informationen zur Fehlerbehebung beim Schlüsselzugriff finden Sie im AWS Key Management Service -Entwicklerhandbuch.

Prinzipalberechtigungen

Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden, um ein .zip-Bereitstellungspaket zu verschlüsseln, können nur Prinzipale mit Zugriff auf diesen Schlüssel auf das .zip-Bereitstellungspaket zugreifen. Principals, die keinen Zugriff auf den vom Kunden verwalteten Schlüssel haben, können beispielsweise das .zip-Paket nicht über die vorsignierte S3-URL herunterladen, die in der Antwort enthalten ist. GetFunction Im Abschnitt Code der Antwort wird ein AccessDeniedException zurückgegeben.

Beispiel AWS KMS AccessDeniedException
{ "Code": { "RepositoryType": "S3", "Error": { "ErrorCode": "AccessDeniedException", "Message": "KMS access is denied. Check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: User: arn:aws:sts::111122223333:assumed-role/LambdaTestRole/session is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:111122223333:key/key-id with an explicit deny in a resource-based policy" }, "SourceKMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id" }, ...

Weitere Informationen zu Berechtigungen für AWS KMS Schlüssel finden Sie unter Authentifizierung und Zugriffskontrolle für. AWS KMS

Verwenden Sie einen vom Kunden verwalteten Schlüssel für Ihr .zip-Bereitstellungspaket

Verwenden Sie die folgenden API-Parameter, um vom Kunden verwaltete Schlüssel für .zip-Bereitstellungspakete zu konfigurieren:

Wenn SourceKMSKeyArn und KMSKeyArn beide angegeben sind, verwendet Lambda den Schlüssel KMSKeyArn, um die entpackte Version des Pakets zu verschlüsseln, das Lambda zum Aufrufen der Funktion verwendet. Wenn SourceKMSKeyArn angegeben ist, aber KMSKeyArn nicht, verwendet Lambda ein Von AWS verwalteter Schlüssel, um die entpackte Version des Pakets zu verschlüsseln.

Lambda console
So fügen Sie beim Erstellen einer Funktion die kundenverwaltete Schlüsselverschlüsselung hinzu
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie Funktion erstellen aus.

  3. Klicken Sie auf Ohne Vorgabe erstellen oder Container-Image.

  4. Führen Sie unter Basic information (Grundlegende Informationen) die folgenden Schritte aus:

    1. Geben Sie für Funktionsname den Funktionsnamen ein.

    2. Wählen Sie für Laufzeit die Sprachversion aus, die für Ihre Funktion verwendet werden soll.

  5. Erweitern Sie Erweiterte Einstellungen und wählen Sie dann Verschlüsselung mit einem vom AWS KMS Kunden verwalteten Schlüssel aktivieren aus.

  6. Wählen Sie einen kundenverwalteten Schlüssel.

  7. Wählen Sie Funktion erstellen aus.

Um die vom Kunden verwaltete Schlüsselverschlüsselung zu entfernen oder einen anderen Schlüssel zu verwenden, müssen Sie das .zip-Bereitstellungspaket erneut hochladen.

So fügen Sie einer bestehenden Funktion eine vom Kunden verwaltete Schlüsselverschlüsselung hinzu
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie den Namen einer Funktion aus.

  3. Wählen Sie im Bereich Codequelle die Option Hochladen von aus.

  4. Wählen Sie eine .zip-Datei oder einen Amazon-S3-Speicherort.

    .zip-Datei aus dem Codequellbereich hochladen
  5. Laden Sie die Datei hoch oder geben Sie den Amazon-S3-Speicherort ein.

  6. Wählen Sie Verschlüsselung mit einem vom AWS KMS Kunden verwalteten Schlüssel aktivieren aus.

  7. Wählen Sie einen kundenverwalteten Schlüssel.

  8. Wählen Sie Save (Speichern) aus.

AWS CLI

So fügen Sie beim Erstellen einer Funktion die kundenverwaltete Schlüsselverschlüsselung hinzu

Im folgenden Beispiel wird create-function erstellt:

  • --zip-file: Gibt den lokalen Pfad zum .zip-Bereitstellungspaket an.

  • --source-kms-key-arn: Gibt den vom Kunden verwalteten Schlüssel zum Verschlüsseln der komprimierten Version des Bereitstellungspakets an.

  • --kms-key-arn: Gibt den vom Kunden verwalteten Schlüssel zur Verschlüsselung der Umgebungsvariablen und der entpackten Version des Bereitstellungspakets an.

aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --zip-file fileb://myFunction.zip \ --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id \ --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id

Im folgenden Beispiel wird create-function erstellt:

  • --code: Gibt den Speicherort der .zip-Datei in einem Amazon-S3-Bucket an. Sie müssen den S3ObjectVersion-Parameter nur für versionierte Objekte verwenden.

  • --source-kms-key-arn: Gibt den vom Kunden verwalteten Schlüssel zum Verschlüsseln der komprimierten Version des Bereitstellungspakets an.

  • --kms-key-arn: Gibt den vom Kunden verwalteten Schlüssel zur Verschlüsselung der Umgebungsvariablen und der entpackten Version des Bereitstellungspakets an.

aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x --handler index.handler \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion \ --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id \ --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key2-id

So fügen Sie einer bestehenden Funktion eine vom Kunden verwaltete Schlüsselverschlüsselung hinzu

Im folgenden update-function-codeBeispiel:

  • --zip-file: Gibt den lokalen Pfad zum .zip-Bereitstellungspaket an.

  • --source-kms-key-arn: Gibt den vom Kunden verwalteten Schlüssel zum Verschlüsseln der komprimierten Version des Bereitstellungspakets an. Lambda verwendet einen AWS eigenen Schlüssel, um das entpackte Paket für Funktionsaufrufe zu verschlüsseln. Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden möchten, um die entpackte Version des Pakets zu verschlüsseln, führen Sie den Befehl mit der Option aus. update-function-configuration--kms-key-arn

aws lambda update-function-code \ --function-name myFunction \ --zip-file fileb://myFunction.zip \ --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id

Im folgenden Beispiel: update-function-code

  • --s3-bucket: Gibt den Speicherort der .zip-Datei in einem Amazon-S3-Bucket an.

  • --s3-key: Gibt den Amazon-S3-Schlüssel des Bereitstellungspakets an.

  • --s3-object-version: Für versionierte Objekte, die Version des zu verwendenden Bereitstellungspaketobjekts.

  • --source-kms-key-arn: Gibt den vom Kunden verwalteten Schlüssel zum Verschlüsseln der komprimierten Version des Bereitstellungspakets an. Lambda verwendet einen AWS eigenen Schlüssel, um das entpackte Paket für Funktionsaufrufe zu verschlüsseln. Wenn Sie einen vom Kunden verwalteten Schlüssel verwenden möchten, um die entpackte Version des Pakets zu verschlüsseln, führen Sie den Befehl mit der Option aus. update-function-configuration--kms-key-arn

aws lambda update-function-code \ --function-name myFunction \ --s3-bucket amzn-s3-demo-bucket \ --s3-key myFileName.zip \ --s3-object-version myObject Version --source-kms-key-arn arn:aws:kms:us-east-1:111122223333:key/key-id

So entfernen Sie die vom Kunden verwaltete Schlüsselverschlüsselung aus einer bestehenden Funktion

Im folgenden update-function-codeBeispiel wird der lokale Pfad zum ZIP-Bereitstellungspaket --zip-file angegeben. Wenn Sie diesen Befehl ohne die --source-kms-key-arn Option ausführen, verwendet Lambda einen AWS eigenen Schlüssel, um die komprimierte Version des Bereitstellungspakets zu verschlüsseln.

aws lambda update-function-code \ --function-name myFunction \ --zip-file fileb://myFunction.zip