

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 im Ruhezustand für Webfunktionen
<a name="web-functions-encryption"></a>

AWS Lambda verschlüsselt die Daten für Ihre Lambda Web Functions im Ruhezustand auf der Serverseite. Auf dieser Seite werden die verfügbaren Verschlüsselungsoptionen und die Konfiguration eines vom Kunden verwalteten Schlüssels erläutert.

## Optionen für die Verschlüsselung im Ruhezustand
<a name="web-functions-encryption-options"></a>

Die Verschlüsselung im Ruhezustand ist immer aktiviert. Lambda verschlüsselt Ihr Webfunktions-Code-Artefakt und Ihre Umgebungsvariablen auf der Serverseite, und Sie können diese Verschlüsselung nicht ausschalten. Standardmäßig verwendet Lambda eine AWS-eigener Schlüssel. Sie können stattdessen einen vom Kunden verwalteten Schlüssel konfigurieren.

Sie haben zwei Optionen für den AWS KMS Schlüssel, der Ihre Daten schützt:

**AWS-eigener Schlüssel (Standard)**  
Standardmäßig verschlüsselt Lambda Ihre Daten mit einem. [AWS-eigener Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) AWS besitzt und verwaltet diesen Schlüssel. Sie können seine Verwendung nicht einsehen, verwalten oder überwachen. Wenn dieses Standardverhalten Ihren Anforderungen entspricht, ist keine zusätzliche Einrichtung erforderlich.

**Kundenverwalteter Schlüssel**  
Sie können optional Ihren eigenen vom AWS KMS Kunden verwalteten Schlüssel konfigurieren. Verwenden Sie einen vom Kunden verwalteten Schlüssel, wenn Sie die Schlüsselrotation kontrollieren, die Schlüsselnutzung überprüfen CloudTrail, den Schlüsselzugriff mithilfe einer wichtigen Richtlinie verwalten oder die Compliance-Anforderungen des Unternehmens erfüllen müssen. Mit einem vom Kunden verwalteten Schlüssel können nur von Ihnen autorisierte Benutzer auf den verschlüsselten Code und die Umgebungsvariablen zugreifen. Für vom Kunden verwaltete Schlüssel fallen Gebühren AWS KMS an. Weitere Informationen finden Sie unter [AWS Key Management Service Preise](https://aws.amazon.com/kms/pricing/).

## Verschlüsselung von Daten im Ruhezustand mithilfe eines vom Kunden verwalteten Schlüssels
<a name="web-functions-encryption-cmk"></a>

In den folgenden Abschnitten wird erklärt, wie Web Functions einen vom Kunden verwalteten Schlüssel verwenden, wie der Schlüssel und seine Berechtigungen konfiguriert werden und wie der Zugriff darauf eingeschränkt werden kann.

### Wie Web Functions einen vom Kunden verwalteten Schlüssel verwendet
<a name="web-functions-encryption-how-it-works"></a>

Wenn Sie einen vom Kunden verwalteten Schlüssel angeben, verwendet Lambda die [Umschlagverschlüsselung](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping). Das bedeutet, dass Lambda die Daten der Revision mit einem Datenschlüssel verschlüsselt und Ihr KMS-Schlüssel diesen Datenschlüssel verschlüsselt. Lambda ruft den Datenschlüssel von Ihrem KMS-Schlüssel ab AWS KMS und entschlüsselt ihn mit diesem, wenn es die Daten lesen muss. Nur Prinzipale mit Zugriff auf den KMS-Schlüssel können auf den Code und die Umgebungsvariablen der Revision zugreifen.

Lambda verschlüsselt die folgenden Web Function-Ressourcen mit Ihrem vom Kunden verwalteten Schlüssel:


| Ressource | Was ist verschlüsselt | 
| --- | --- | 
| Revision | Das aus Ihrem Amazon S3 S3-Bereitstellungspaket erstellte Codeartefakt und die Umgebungsvariablen der Revision. | 

Lambda verwendet keine AWS KMS Zuschüsse für Webfunktionen. Der Zugriff wird über die Schlüsselrichtlinie und die IAM-Berechtigungen des aufrufenden Prinzipals autorisiert.

Lambda ruft AWS KMS beim Erstellen und Starten von Revisionsressourcen auf und kann entschlüsseltes Material in aktiven Ausführungsumgebungen zwischenspeichern. Das Widerrufen des Schlüsselzugriffs ist kein sofortiger Mechanismus zur Eindämmung des Datenverkehrs, da bestehende Umgebungen zwischengespeichertes Material für einen unbestimmten Zeitraum weiterhin verwenden können.

Testen Sie nach einer Änderung der Schlüsselrichtlinie das erwartete Verhalten und überwachen Sie die Version und den Zustand der Endgeräte. Um den Notfall einzudämmen, beenden Sie die Weiterleitung des Datenverkehrs zu den betroffenen Versionen oder deaktivieren Sie den Endpunkt, anstatt sich nur auf die Sperrung von Schlüsseln zu verlassen.

Lambda legt den folgenden Verschlüsselungskontext für alle AWS KMS Operationen für Webfunktionen fest:
+ `aws:lambda:WebFunctionRevisionArn`— Der Amazon-Ressourcenname (ARN) der Web Function-Revision.

Sie können diesen Verschlüsselungskontext in wichtigen Richtlinien verwenden, um den Zugriff auf bestimmte Webfunktionen oder Revisionen einzuschränken. Weitere Informationen finden Sie unter [Einschränkung des Zugriffs auf Ihren KMS-Schlüssel](#web-functions-encryption-scope-down).

### Konfiguration eines vom Kunden verwalteten Schlüssels
<a name="web-functions-encryption-key-requirements"></a>

Der AWS KMS Schlüssel muss ein symmetrischer Verschlüsselungsschlüssel sein (Schlüsselspezifikation`SYMMETRIC_DEFAULT`, Schlüsselverwendung`ENCRYPT_DECRYPT`). Sie können keine asymmetrischen Schlüssel verwenden.

Webfunktionen unterstützen Tasten für mehrere Regionen. Die Art des Schlüssels, den Sie benötigen, hängt von Ihrer Endpunktkonfiguration ab:
+ **HomeRegion Endpunkt** — Sie können einen Schlüssel für eine Region oder einen Schlüssel für mehrere Regionen verwenden.
+ **MultiRegion oder PerRegion Endpunkt** — Sie müssen einen Schlüssel für mehrere Regionen mit Replikaten in jedem, den der Endpunkt bedient AWS-Region , verwenden. Fehlt in einer Region ein Replikat des Schlüssels, schlägt die Replikation in diese Region fehl.

*Informationen zum Erstellen von Schlüsseln für mehrere Regionen finden Sie unter [Erstellen von Primärschlüsseln für mehrere Regionen im AWS Key Management Service Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/create-primary-keys.html).*

Da Schlüsselrichtlinien AWS KMS nicht zwischen verwandten Schlüsseln mit mehreren Regionen kopiert oder synchronisiert werden, müssen Sie jede Schlüsselrichtlinie separat konfigurieren. Konfigurieren Sie die Schlüsselrichtlinie für den Primärschlüssel und für jeden Replikatschlüssel. Die Richtlinie jedes Replikatschlüssels muss mindestens den Aufruf durch den Lambda-Serviceprinzipal ermöglichen. `kms:Decrypt` Diese Berechtigung ermöglicht Lambda, den Datenschlüssel in dieser Region zu entschlüsseln. *Weitere Informationen finden Sie unter [Autorisieren der Verwendung von Schlüsseln für mehrere Regionen](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-auth.html) im Entwicklerhandbuch.AWS Key Management Service *

**Anmerkung**  
Wenn Sie Replikatschlüssel für mehrere Regionen erstellen, kann es einige Sekunden bis einige Minuten dauern, bis sie in allen Regionen verfügbar sind. Vergewissern Sie sich, dass der Replikatschlüssel in jeder Zielregion verfügbar ist, bevor Sie die Revision oder den Endpunkt erstellen.

### Konfiguration von Berechtigungen zur Verwendung eines vom Kunden verwalteten Schlüssels
<a name="web-functions-encryption-permissions"></a>

Um eine Revision mit einem vom Kunden verwalteten Schlüssel zu erstellen, benötigen Sie die folgenden Berechtigungen für den AWS KMS Schlüssel:
+ `kms:DescribeKey`— Erforderlich, wenn Sie eine Webfunktion oder Revision mit dem Schlüssel erstellen.
+ `kms:GenerateDataKey`— Lambda ruft diese Operation auf, um den Datenschlüssel zu generieren, der das Codeartefakt und die Umgebungsvariablen der Revision verschlüsselt.
+ `kms:Decrypt`— Lambda ruft diese Operation auf, um zu überprüfen, ob der Schlüssel verwendet werden kann, wenn Sie die Revision erstellen. Prinzipale, die eine Revision lesen, benötigen `GetWebFunctionRevision` auch `kms:Decrypt` den Schlüssel, um die Umgebungsvariablen zu sehen.

Die Erstellungsanforderung schlägt fehl, wenn der Schlüssel fehlt, deaktiviert ist, kein symmetrischer Verschlüsselungsschlüssel ist oder der Zugriff mit den erforderlichen Berechtigungen nicht möglich ist.

**Anmerkung**  
Sie benötigen `kms:Encrypt` keine Genehmigung. Lambda verwendet die Envelope-Verschlüsselung mit`GenerateDataKey`, die sowohl eine Klartext- als auch eine verschlüsselte Kopie des Datenschlüssels zurückgibt, ohne dass ein separater Verschlüsselungsaufruf erforderlich ist.

Die AWS KMS Schlüsselrichtlinie muss auch dem Lambda-Service Principal (`lambda.amazonaws.com`) den Aufruf `kms:Decrypt` ermöglichen. Lambda verwendet diese Berechtigung, um den Datenschlüssel zu entschlüsseln, wenn es Ausführungsumgebungen für die Revision startet. Der Service Principal benötigt nicht. `kms:DescribeKey` Der Principal, der die Webfunktion oder Revision erstellt, benötigt diese Berechtigung.

#### Beispiel für eine Schlüsselrichtlinie
<a name="web-functions-encryption-key-policy"></a>

Die folgende wichtige Richtlinie enthält die drei Anweisungen, die für Webfunktionen erforderlich sind, wobei jeweils die unter beschriebenen Bedingungen gelten. [Einschränkung des Zugriffs auf Ihren KMS-Schlüssel](#web-functions-encryption-scope-down) Die erste Anweisung gewährt dem Lambda-Serviceprinzipal die Berechtigungen, die er benötigt, um Ausführungsumgebungen zu starten. Die zweite und dritte gewähren dem Prinzipal, der Revisionen erstellt, die Berechtigungen, die er zum Zeitpunkt der Erstellung benötigt.

`kms:DescribeKey`befindet sich in einer separaten Anweisung, da es sich um einen Metadatenvorgang handelt, der keinen Verschlüsselungskontext enthält. Eine Bedingung für den Verschlüsselungskontext würde niemals mit einer `DescribeKey` Anfrage übereinstimmen, sodass diese Bedingung nur für die Anweisung gilt, die `kms:GenerateDataKey` und gewährt`kms:Decrypt`.

Dieses Beispiel zeigt nur die Anweisungen, die Lambda für Web Functions benötigt. Fügen Sie diese Anweisungen zu Ihrer bestehenden Schlüsselrichtlinie hinzu, anstatt sie zu ersetzen, und behalten Sie die Anweisungen bei, die Ihren Administratoren Zugriff auf die Verwaltung des Schlüssels gewähren.

**Example Wichtige Richtlinie für die Verschlüsselung von Webfunktionen**  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allow Lambda to decrypt the data key for Web Function revisions",
            "Effect": "Allow",
            "Principal": { "Service": "lambda.amazonaws.com" },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:web-function/{{my-function}}/revision/*",
                    "aws:SourceArn": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:web-function/{{my-function}}/revision/*"
                }
            }
        },
        {
            "Sid": "Allow the revision creator to generate and validate data keys",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::{{111122223333}}:role/{{MyWebFunctionDeployRole}}" },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:web-function/{{my-function}}/revision/*"
                },
                "StringEquals": {
                    "kms:ViaService": "lambda.{{us-east-1}}.amazonaws.com"
                }
            }
        },
        {
            "Sid": "Allow the revision creator to describe the key",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::{{111122223333}}:role/{{MyWebFunctionDeployRole}}" },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.{{us-east-1}}.amazonaws.com"
                }
            }
        }
    ]
}
```

Weitere Informationen zu AWS KMS wichtigen Richtlinien finden Sie unter [Wichtige Richtlinien AWS KMS im AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) *Entwicklerhandbuch*.

### Eine Version der Webfunktion mit einem vom Kunden verwalteten Schlüssel erstellen
<a name="web-functions-encryption-specifying-key"></a>

Um eine Revision mit einem vom Kunden verwalteten Schlüssel zu verschlüsseln, geben Sie den Schlüssel-ARN im `kmsKeyArn` Parameter der Revisionskonfiguration an. Sie können diesen Parameter festlegen, wenn Sie [CreateWebFunction](https://docs.aws.amazon.com/lambda/latest/lambda-web/API_CreateWebFunction.html)oder [CreateWebFunctionRevision](https://docs.aws.amazon.com/lambda/latest/lambda-web/API_CreateWebFunctionRevision.html)aufrufen. Wenn Sie es weglassen`kmsKeyArn`, verschlüsselt Lambda die Revision mit dem. AWS-eigener Schlüssel

**Um eine Webfunktion mit einem vom Kunden verwalteten Schlüssel zu erstellen (AWS CLI)**
+ Führen Sie den folgenden Befehl aus, um eine Webfunktion mit einem vom Kunden verwalteten Schlüssel zu erstellen.

  ```
  aws lambda-web create-web-function \
      --function-name {{my-web-app}} \
      --revision-config '{
        "kmsKeyArn": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{key-id}}",
        "buildConfig": {
          "codeConfig": {
            "s3Object": { "bucket": "{{amzn-s3-demo-bucket}}", "key": "{{my-app.zip}}" }
          },
          "runtimeConfig": { "runtime": "nodejs24.x" }
        },
        "serviceConfig": {
          "executionRoleArn": "arn:aws:iam::{{111122223333}}:role/{{my-web-function-role}}"
        }
      }' \
      --endpoint-config '{
        "endpointName": "{{my-endpoint}}",
        "endpointType": "HomeRegion",
        "authType": "ApplicationManaged"
      }'
  ```

### Ändern der Verschlüsselungskonfiguration einer vorhandenen Webfunktion
<a name="web-functions-encryption-changing-key"></a>

Der `kmsKeyArn` Parameter ist für die gesamte Lebensdauer einer Revision festgelegt. Da Revisionen unveränderlich sind, können Sie den Schlüssel, der eine bestehende Revision schützt, nicht ändern. Um die Verschlüsselungskonfiguration zu ändern, erstellen Sie eine neue Version, die den neuen Schlüssel spezifiziert, und leiten Sie dann den Datenverkehr an diese Version weiter.

Webfunktionen unterstützen die folgenden Tastenübergänge:
+ **AWS-eigener Schlüssel zum vom Kunden verwalteten Schlüssel** — Erstellen Sie eine neue Version, die Folgendes festlegt`kmsKeyArn`.
+ **Ein vom Kunden verwalteter Schlüssel zu einem anderen vom Kunden verwalteten Schlüssel** — Erstellen Sie eine neue Version, die den neuen Schlüssel-ARN spezifiziert.
+ **Vom Kunden verwalteter Schlüssel für AWS-eigener Schlüssel** — Erstellen Sie eine neue Version ohne`kmsKeyArn`. Lambda schützt diese Revision dann mit der AWS-eigener Schlüssel, was die Standardeinstellung ist.

Lambda verschlüsselt bestehende Revisionen nicht erneut, wenn Sie eine neue Revision mit einem anderen Schlüssel erstellen. Jede Revision bleibt mit dem Schlüssel verschlüsselt, den Sie bei der Erstellung angegeben haben. Das bedeutet, dass, solange eine frühere Version noch Traffic empfangen kann, ihr ursprünglicher Schlüssel aktiviert und für den Lambda-Serviceprinzipal zugänglich bleiben muss. Bevor Sie einen Schlüssel deaktivieren oder löschen, stellen Sie sicher, dass die Revisionsgewichte eines Endpunkts immer noch auf keine mit diesem Schlüssel verschlüsselte Version verweisen.

**Um eine neue Version mit einem anderen vom Kunden verwalteten Schlüssel zu erstellen (AWS CLI)**

1. Führen Sie den folgenden Befehl aus, um eine Revision zu erstellen, die einen anderen Schlüssel verwendet.

   ```
   aws lambda-web create-web-function-revision \
       --function-name {{my-web-app}} \
       --kms-key-arn arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{new-key-id}} \
       --build-config '{
         "codeConfig": { "s3Object": { "bucket": "{{my-bucket}}", "key": "{{my-app-v2.zip}}" } },
         "runtimeConfig": { "runtime": "nodejs24.x" }
       }' \
       --service-config '{
         "executionRoleArn": "arn:aws:iam::{{111122223333}}:role/{{my-web-function-role}}"
       }'
   ```

1. Aktualisieren Sie die Revisionsgewichte des Endpunkts, um den Datenverkehr an die neue Version weiterzuleiten. Weitere Informationen finden Sie unter [Bereitstellungsmuster](web-functions-deployment.md).

### Einschränkung des Zugriffs auf Ihren KMS-Schlüssel
<a name="web-functions-encryption-scope-down"></a>

Die Schlüsselrichtlinie in [Beispiel für eine Schlüsselrichtlinie](#web-functions-encryption-key-policy) schränkt den Zugriff mit den folgenden Bedingungsschlüsseln ein. Jede dieser Optionen schränkt die Verwendung des Schlüssels ein, sodass der Zugriff auf den Schlüssel nicht umfassender ist, als für die Webfunktion erforderlich ist.

#### Verschlüsselungskontext
<a name="web-functions-encryption-scope-down-context"></a>

Lambda legt den Verschlüsselungskontext `aws:lambda:WebFunctionRevisionArn` bei jeder AWS KMS Revisionsanforderung fest. Verwenden Sie eine `StringLike` Bedingung auf`kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn`, um den Schlüssel auf Revisionen einer bestimmten Webfunktion zu beschränken. Wenden Sie diese Bedingung sowohl auf die Creator-Anweisung als auch auf die Lambda-Serviceprinzipal-Anweisung an.

Wenden Sie diese Bedingung nicht auf eine Erklärung an, die gewährt`kms:DescribeKey`. Für diesen Vorgang gibt es keinen Verschlüsselungskontext, daher würde die Bedingung ihn ablehnen.

Das folgende Beispiel zeigt die Creator-Anweisung mit der Bedingung für den Verschlüsselungskontext.

```
{
    "Sid": "Allow the revision creator to generate and validate data keys",
    "Effect": "Allow",
    "Principal": { "AWS": "arn:aws:iam::{{111122223333}}:role/{{MyWebFunctionDeployRole}}" },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:web-function/{{my-function}}/revision/*"
        }
    }
}
```

#### kms: ViaService Zustand
<a name="web-functions-encryption-scope-down-viaservice"></a>

Die `kms:ViaService` Bedingung schränkt den Schlüssel ein, sodass ihn nur Anfragen verwenden können, die Lambda in Ihrem Namen stellt. Der Wert ist Region-specific:. `lambda.{{us-east-1}}.amazonaws.com`

Mit dieser Bedingung werden direkte Aufrufe AWS KMS verweigert, die mit denselben Anmeldeinformationen getätigt wurden (z. B. wenn Sie es `aws kms generate-data-key` selbst ausführen), aber das Erstellen einer Webfunktion ist erfolgreich, da Lambda die AWS KMS Aufrufe für Sie durchführt.

AWS KMS verwendet keine gemeinsamen Richtlinien für verknüpfte Schlüssel aus mehreren Regionen. Jeder Replikatschlüssel hat seine eigene Richtlinie. Wenn Sie die `kms:ViaService` Bedingung mit einem Schlüssel für mehrere Regionen verwenden, verwenden Sie den regionalen Dienstnamen, der der Region jedes Schlüssels entspricht (z. B. `lambda.us-east-1.amazonaws.com` in der Schlüsselrichtlinie us-east-1 und `lambda.us-west-2.amazonaws.com` in der replikatschlüsselrichtlinie us-west-2). Sie können auch mehrere regionale Werte in einer Bedingung auflisten, da `StringEquals` eine Reihe von Werten akzeptiert wird.

Das folgende Beispiel zeigt die Creator-Anweisung sowohl mit der Bedingung als auch mit der `kms:ViaService` Bedingung für den Verschlüsselungskontext.

```
{
    "Sid": "Allow the revision creator to generate and validate data keys",
    "Effect": "Allow",
    "Principal": { "AWS": "arn:aws:iam::{{111122223333}}:role/{{MyWebFunctionDeployRole}}" },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:web-function/{{my-function}}/revision/*"
        },
        "StringEquals": {
            "kms:ViaService": "lambda.{{us-east-1}}.amazonaws.com"
        }
    }
}
```

#### Verwirrter Abgeordneter, Schutz
<a name="web-functions-encryption-scope-down-confused-deputy"></a>

Das Problem des verwirrten Stellvertreters tritt auf, wenn eine Entität, die nicht berechtigt ist, eine Aktion auszuführen, eine Entität mit mehr Rechten dazu zwingt. Da der Lambda Service Principal Ihren vom Kunden verwalteten Schlüssel verwenden kann, beschränken Sie diesen Zugriff auf die Web Function-Revisionen, die Sie besitzen. Weitere Informationen finden Sie unter [Das Problem des verwirrten Stellvertreters](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) im *IAM-Benutzerhandbuch*.

Wenn Lambda AWS KMS mit seinen eigenen Dienstanmeldedaten aufruft, um eine Ausführungsumgebung zu starten, sendet es den Revision-ARN als Quell-ARN und Ihre AWS-Konto ID als Quellkonto. Verwenden Sie den Schlüssel [aws: SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) condition in der Lambda Service Principal-Anweisung, um den Schlüssel auf Revisionen einer bestimmten Webfunktion zu beschränken.

```
{
    "Sid": "Allow Lambda to decrypt the data key for Web Function revisions",
    "Effect": "Allow",
    "Principal": { "Service": "lambda.amazonaws.com" },
    "Action": "kms:Decrypt",
    "Resource": "*",
    "Condition": {
        "StringLike": {
            "aws:SourceArn": "arn:aws:lambda:{{us-east-1}}:{{111122223333}}:web-function/{{my-function}}/revision/*"
        }
    }
}
```

Um den Schlüssel auf Ihr Konto und nicht auf eine bestimmte Webfunktion zu beschränken, verwenden Sie den SourceAccount Bedingungsschlüssel [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) mit Ihrer AWS-Konto ID.

Wenden Sie diese Bedingung auf die Lambda-Serviceprinzipalanweisung an. Die `kms:ViaService` unter beschriebene Bedingung [kms: ViaService Zustand](#web-functions-encryption-scope-down-viaservice) schränkt ein, welcher Dienst den Schlüssel verwenden kann, bietet aber keinen Schutz für verwirrte Stellvertreter.

### Verhalten bei Fehlern
<a name="web-functions-encryption-errors"></a>

Lambda validiert den AWS KMS Schlüssel, wenn Sie eine Revision erstellen. Die folgenden Fehler können bei der Erstellung auftreten:
+ **Validierungsfehler** — Der Schlüssel-ARN ist ungültig, der Schlüssel existiert nicht, der Schlüssel ist deaktiviert oder der Schlüssel ist kein symmetrischer Verschlüsselungsschlüssel.
+ **Fehler „Zugriff verweigert**“ — Der aufrufende Principal oder der Lambda-Serviceprinzipal verfügt nicht über die erforderlichen AWS KMS Berechtigungen für den Schlüssel.

**Deaktivieren oder entziehen Sie nicht den Zugriff auf den Schlüssel einer aktiven Revision**  
Wenn Sie den AWS KMS Schlüssel deaktivieren oder dem Lambda-Serviceprinzipal nach einer Revision den Zugriff entziehen`Active`, kann Lambda den Datenschlüssel nicht mehr entschlüsseln. Dadurch wird verhindert, dass Lambda neue Ausführungsumgebungen für diese Revision startet, wodurch Aufrufe unterbrochen werden. Löschen Sie außerdem keine Replikatschlüssel in Regionen, in denen die Revision noch bereitgestellt wird. Dies hat den gleichen Effekt (Lambda kann in dieser Region keine neuen Ausführungsumgebungen starten). Um den Dienst wiederherzustellen, erstellen Sie eine neue Version mit einem zugänglichen Schlüssel oder aktivieren Sie den ursprünglichen Schlüssel erneut und stellen Sie die Schlüsselrichtlinie wieder her.

### Verschlüsselung mit MultiRegion Endpunkten PerRegion
<a name="web-functions-encryption-multi-region"></a>

Bei Webfunktionen mit MultiRegion oder PerRegion Endpunkten überprüft Lambda während der Replikation die Schlüsselverfügbarkeit in jeder Region. Wenn das Schlüsselreplikat für mehrere Regionen in einer Zielregion fehlt oder nicht darauf zugegriffen werden kann, schlägt die Replikation nur für diese Region fehl. Andere Regionen funktionieren weiterhin normal.

Sie können den Bundesstaat jeder Region einsehen und den Status aktualisieren, indem Sie anrufen`GetWebFunctionEndpoint`. Der Eintrag jeder Region `regionalEndpoints` enthält `state` und `stateReason` (den Bereitstellungsstatus der Region) `updateStatus` und und `updateStatusReason` (das Ergebnis der letzten Aktualisierung). Das Verhalten unterscheidet sich je nachdem, ob der Endpunkt erstellt oder aktualisiert wird:
+ **Während der Endpunkterstellung** — Der Eintrag in der Region `regionalEndpoints` zeigt ein `state` Von `Failed` und ein`stateReason`, das das Hauptproblem beschreibt. Der Gesamtendpunkt wird `state` ebenfalls angezeigt `Failed` und `stateReason` leitet Sie zu den regionalen Einträgen weiter.
+ **Während eines Endpunkt-Updates** — Die Region wird `Failed` mit einer Anzeige `updateStatus` angezeigt`updateStatusReason`, die das Hauptproblem beschreibt. Der allgemeine Endpunkt wird `updateStatus` ebenfalls angezeigt `Failed` und `updateStatusReason` leitet Sie zu den regionalen Einträgen weiter.

Um eine fehlerhafte Region zu beheben, erstellen Sie ein Schlüsselreplikat in dieser Region oder stellen Sie den Zugriff auf das vorhandene Replikat wieder her und aktualisieren Sie dann den Endpunkt, um die Replikation erneut zu versuchen.

## Überwachung der Interaktion der Webfunktionen mit AWS KMS
<a name="web-functions-encryption-monitoring"></a>

Sie können CloudTrail damit die AWS KMS Anfragen verfolgen, die Lambda in Ihrem Namen stellt, wenn Sie einen vom Kunden verwalteten Schlüssel mit einer Webfunktion verwenden. Informationen zum Auffinden von AWS KMS Ereignissen in Ihren CloudTrail Protokollen finden Sie unter [Suchen von CloudTrail Protokollen nach AWS KMS API-Aufrufen](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html#searching-kms-ct) im *AWS Key Management Service Entwicklerhandbuch*.

In der folgenden Tabelle sind die AWS KMS Ereignisse aufgeführt, die von Webfunktionen generiert werden, sowie die Werte, die Sie bei jedem Ereignis überprüfen können.


| eventName | Wann es auftritt | Zu prüfende Werte | 
| --- | --- | --- | 
| DescribeKey | Wenn Sie eine Webfunktion oder Revision mit einem vom Kunden verwalteten Schlüssel erstellen. | userIdentityist der IAM-Prinzipal, der die Revision erstellt hat. Dieses Ereignis hat keinen Verschlüsselungskontext, da DescribeKey es sich um einen Metadatenvorgang handelt. | 
| GenerateDataKey | Wenn Sie eine Webfunktion oder Revision erstellen. Lambda generiert den Datenschlüssel, der das Codeartefakt und die Umgebungsvariablen der Revision verschlüsselt. | userIdentityist der IAM-Prinzipal, der die Revision erstellt hat. encryptionContextenthältaws:lambda:WebFunctionRevisionArn. | 
| Decrypt | Wenn Sie eine Webfunktion oder Revision erstellen, validiert Lambda den Schlüsselzugriff. Lambda ruft diese Operation auch auf, wenn es die Revision in einer Replikatregion bereitstellt, wenn es eine neue Ausführungsumgebung startet und wenn ein Aufrufer die Umgebungsvariablen der Revision mit liest. GetWebFunctionRevision | Bei Aufrufen zur Erstellungszeit userIdentity ist dies der IAM-Prinzipal, der die Revision erstellt hat. Lambda führt auch einen Probelauf durch, Decrypt lambda.amazonaws.com um zu bestätigen, dass der Dienstprinzipal den Schlüssel verwenden kann. Für Runtime-Aufrufe userIdentity ist der Lambda-Service Principal (lambda.amazonaws.com). Denn GetWebFunctionRevision Lambda ruft Decrypt mit den Anmeldeinformationen des Anrufers an. encryptionContextenthält. aws:lambda:WebFunctionRevisionArn | 

Die `Decrypt` Ereignisse `GenerateDataKey` und beinhalten den Verschlüsselungskontext `aws:lambda:WebFunctionRevisionArn` mit dem Revision-ARN. Verwenden Sie diesen Wert, um AWS KMS Anfragen für eine bestimmte Webfunktions-Revision zu identifizieren.