View a markdown version of this page

Verschlüsselung des Konfigurationspakets - Amazon Grundgestein AgentCore

Verschlüsselung des Konfigurationspakets

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

Die Verschlüsselung des Konfigurationspakets verwendet die Umschlagverschlüsselung mit den Anmeldeinformationen des Anrufers. Wenn Sie ein Paket mit einem erstellen oder aktualisierenkmsKeyArn, verwendet der Dienst Ihre Anmeldeinformationen (über Forward Access Sessions), 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* Berechtigungenkms:GenerateDataKey, kms:Decryptkms: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

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. 111122223333Ersetzen 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:GenerateDataKeykms: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 111122223333MyConfigBundleRole, und us-east-1 durch Ihre Werte. Um Zugriff auf alle Konfigurationspakete in Ihrem Konto zu gewähren, verwenden Sie einen Platzhalter mitStringLike:. arn:aws:bedrock-agentcore:us-east-1:111122223333:configuration-bundle/*

Einschränkung des Zugriffs auf den vom Kunden verwalteten KMS-Schlüssel

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

Um ein Konfigurationspaket zu verschlüsseln, geben Sie den kmsKeyArn Parameter beim Aufrufen an CreateConfigurationBundle.

Beispiel
AWS CLI
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" } } }'
Python (Boto3)
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

Sie können die Verschlüsselungskonfiguration für ein vorhandenes Paket wie folgt ändern UpdateConfigurationBundle:

  • 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

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ältaws: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

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 fehlValidationException.

  • 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.