

# Verschlüsselung des Konfigurationspakets
<a name="configuration-bundles-encryption"></a>

Wenn Sie in einem `kmsKeyArn` Konfigurationspaket ein angeben, verschlüsselt der Dienst die **Komponentenkonfigurationen** (Systemaufforderungen, Toolbeschreibungen und andere Konfigurationsinhalte) mithilfe der Umschlagverschlüsselung. Alle anderen Bundle-Metadaten (Name, Beschreibung, Versions-IDs, Zeitstempel) bleiben mit dem AWS eigenen Schlüssel verschlüsselt.

## Funktionsweise
<a name="configuration-bundles-encryption-how-it-works"></a>

Die Verschlüsselung des Konfigurationspakets verwendet die Umschlagverschlüsselung mit den Anmeldeinformationen des Anrufers. Wenn Sie ein Paket mit einem erstellen oder aktualisieren`kmsKeyArn`, verwendet der Dienst Ihre Anmeldeinformationen (über [Forward Access Sessions](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#fas)), um einen Datenverschlüsselungsschlüssel (DEK) aus KMS zu generieren. Der Dienst verschlüsselt die Komponentenkonfigurationen lokal AES-GCM mithilfe dieses DEK und speichert dann den verschlüsselten DEK zusammen mit dem Paket. Wenn Sie das Paket abrufen, entschlüsselt der Dienst das DEK anhand Ihrer Anmeldeinformationen und entschlüsselt die Komponenten.

Der Aufrufer muss über die `kms:ReEncrypt*` Berechtigungen`kms:GenerateDataKey`, `kms:Decrypt``kms:DescribeKey`, und für den Schlüssel verfügen.

AgentCore Optimizations unterstützt nur KMS-Schlüssel mit symmetrischer Verschlüsselung. Der KMS-Schlüssel muss sich in derselben AWS Region wie das Konfigurationspaket befinden.

### Konfiguration von Berechtigungen zur Verwendung eines vom Kunden verwalteten KMS-Schlüssels
<a name="configuration-bundles-encryption-key-policy"></a>

Die folgende Schlüsselrichtlinie bietet die Mindestberechtigungen, die für die Verschlüsselung von Konfigurationspaketen erforderlich sind. Die Richtlinie enthält zwei Anweisungen:
+  **AllowCallerAccess**— Ermöglicht dem IAM-Benutzer oder der IAM-Rolle, den Schlüssel über `DescribeKey` zu validieren.
+  **AllowCallerCryptoOps**— Ermöglicht dem IAM-Benutzer oder der IAM-Rolle, Datenschlüssel zu generieren, zu entschlüsseln und erneut zu verschlüsseln (für die Schlüsselrotation), je nach Verschlüsselungskontext.

```
{
"Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*"
    },
    {
      "Sid": "AllowCallerCryptoOps",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyConfigBundleRole"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*"
        }
      }
    }
  ]
}
```

Die Richtlinie enthält die folgenden Aussagen:
+  **AllowCallerAccess**— Erteilt der IAM-Rolle die `kms:DescribeKey` Berechtigung zur Schlüsselvalidierung bei der Erstellung oder Aktualisierung des Pakets. {{111122223333}}Ersetzen Sie es durch Ihre Konto-ID und {{MyConfigBundleRole}} durch die IAM-Rolle oder den IAM-Benutzer, der die Konfigurationspakete verwaltet.
+  **AllowCallerCryptoOps**— Gewährt die IAM-Rolle und die `kms:ReEncrypt*` Berechtigungen `kms:GenerateDataKey``kms:Decrypt`, die vom Verschlüsselungskontext abhängig sind. `aws:bedrock-agentcore:configurationBundleArn` Die `kms:ReEncrypt*` Berechtigung ist für die Schlüsselrotation (Änderung des KMS-Schlüssels in einem vorhandenen Paket) erforderlich. Ersetzen Sie {{111122223333}}{{MyConfigBundleRole}}, und {{us-east-1}} durch Ihre Werte. Um Zugriff auf alle Konfigurationspakete in Ihrem Konto zu gewähren, verwenden Sie einen Platzhalter mit`StringLike`:. `arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*`

### Einschränkung des Zugriffs auf den vom Kunden verwalteten KMS-Schlüssel
<a name="configuration-bundles-encryption-scoping"></a>

Sie können den Verschlüsselungskontext verwenden, um den Zugriff auf den vom Kunden verwalteten Schlüssel einzuschränken. AgentCore Optimierungen beinhalten den folgenden Verschlüsselungskontext in allen KMS-Vorgängen:

```
{
  "aws:bedrock-agentcore:configurationBundleArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/bundle-id"
}
```

Sie können diesen Verschlüsselungskontext in wichtigen Richtlinienbedingungen verwenden, um KMS-Operationen auf bestimmte Konfigurationspakete zu beschränken, wie in der `AllowCallerCryptoOps` Anweisung im obigen Beispiel für eine Schlüsselrichtlinie dargestellt.

### Erstellen eines Konfigurationspakets mit einem vom Kunden verwalteten KMS-Schlüssel
<a name="configuration-bundles-encryption-creating"></a>

Um ein Konfigurationspaket zu verschlüsseln, geben Sie den `kmsKeyArn` Parameter beim Aufrufen an [CreateConfigurationBundle](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateConfigurationBundle.html).

**Example**  

```
aws bedrock-agentcore-control create-configuration-bundle \
  --bundle-name "MyEncryptedBundle" \
  --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \
  --components '{
    "arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent": {
      "configuration": {
        "systemPrompt": "You are a helpful assistant.",
        "modelId": "anthropic.claude-3-sonnet"
      }
    }
  }'
```

```
import boto3

client = boto3.client('bedrock-agentcore-control')

response = client.create_configuration_bundle(
    bundleName='MyEncryptedBundle',
    kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab',
    components={
        'arn:aws:bedrock-agentcore:us-east-1:111122223333:runtime/my-agent': {
            'configuration': {
                'systemPrompt': 'You are a helpful assistant.',
                'modelId': 'anthropic.claude-3-sonnet'
            }
        }
    }
)

print(f"Bundle ID: {response['bundleId']}")
```

### Ändern der Verschlüsselungskonfiguration für ein vorhandenes Paket
<a name="configuration-bundles-encryption-changing"></a>

Sie können die Verschlüsselungskonfiguration für ein vorhandenes Paket wie folgt ändern [UpdateConfigurationBundle](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_UpdateConfigurationBundle.html):
+  **Verschlüsselung hinzufügen** — Geben Sie a für ein Paket `kmsKeyArn` an, das ohne Verschlüsselung erstellt wurde. Der Dienst generiert ein neues DEK und verschlüsselt die Komponentenkonfigurationen.
+  **Schlüssel drehen** — Geben Sie einen anderen `kmsKeyArn` Schlüssel an. Der Dienst umschließt den vorhandenen DEK mit dem alten Schlüssel in den neuen Schlüssel um. `kms:ReEncrypt` Der Anrufer muss über Berechtigungen für beide Schlüssel verfügen. Wenn der alte Schlüssel nicht verfügbar ist (deaktiviert, gelöscht oder fehlende Berechtigungen), schlägt das Update fehl.

**Anmerkung**  
Sie können die vom Kunden verwaltete Schlüsselverschlüsselung nicht mehr aus einem Konfigurationspaket entfernen, nachdem sie hinzugefügt wurde.

## Überwachung der KMS-Nutzung für Konfigurationspakete
<a name="configuration-bundles-encryption-monitoring"></a>

Die folgenden CloudTrail Ereignisnamen werden für KMS-Operationen des Konfigurationspakets angezeigt:
+  `GenerateDataKey`— Wenn Sie ein Paket mit einem vom Kunden verwalteten Schlüssel erstellen oder einem vorhandenen Paket Verschlüsselung hinzufügen. Das `encryptionContext` Feld enthält`aws:bedrock-agentcore:configurationBundleArn`.
+  `Decrypt`— Beim Abrufen von Bundle-Inhalten (GetConfigurationBundle, GetConfigurationBundleVersion) oder beim Aktualisieren eines verschlüsselten Bundles.
+  `ReEncrypt`— Beim Rotieren des KMS-Schlüssels für ein vorhandenes Paket über UpdateConfigurationBundle.
+  `DescribeKey`— Bei der Validierung des Schlüssels bei der Erstellung oder Aktualisierung des Pakets.

## Verhalten, wenn ein Schlüssel nicht mehr verfügbar ist
<a name="configuration-bundles-encryption-unavailable"></a>

Wenn Sie den vom Kunden verwalteten KMS-Schlüssel, der von einem Konfigurationspaket verwendet wird, deaktivieren oder löschen:
+  **CreateConfigurationBundle**— Schlägt bei der Validierung mit fehl`ValidationException`.
+  **UpdateConfigurationBundle**— Schlägt fehl, weil der Dienst das vorhandene DEK nicht entschlüsseln kann, um neue Komponenten erneut zu verschlüsseln. Die Schlüsselrotation schlägt auch fehl, weil der alte Schlüssel nicht zum erneuten Verpacken verfügbar ist.
+  **GetConfigurationBundle / GetConfigurationBundleVersion**— Schlägt fehl, weil der Dienst den DEK oder die Komponentenkonfigurationen nicht entschlüsseln kann.
+  **ListConfigurationBundles / ListConfigurationBundleVersions**— Erfolgreich, weil beim Auflisten nur Metadaten zurückgegeben werden und keine KMS-Operationen erforderlich sind.
+  **DeleteConfigurationBundle**— Erfolgreich, weil für das Löschen keine Entschlüsselung der Bundle-Daten erforderlich ist.

Um den Zugriff wiederherzustellen, aktivieren Sie den Schlüssel erneut oder aktualisieren Sie die Schlüsselrichtlinie, um die erforderlichen Berechtigungen zu gewähren.