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
DescribeKeyzu 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:DescribeKeyBerechtigung zur Schlüsselvalidierung bei der Erstellung oder Aktualisierung des Pakets.111122223333Ersetzen Sie es durch Ihre Konto-ID undMyConfigBundleRoledurch die IAM-Rolle oder den IAM-Benutzer, der die Konfigurationspakete verwaltet. -
AllowCallerCryptoOps— Gewährt die IAM-Rolle und die
kms:ReEncrypt*Berechtigungenkms:GenerateDataKeykms:Decrypt, die vom Verschlüsselungskontext abhängig sind.aws:bedrock-agentcore:configurationBundleArnDiekms:ReEncrypt*Berechtigung ist für die Schlüsselrotation (Änderung des KMS-Schlüssels in einem vorhandenen Paket) erforderlich. Ersetzen Sie111122223333MyConfigBundleRole, undus-east-1durch 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
Ä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
kmsKeyArnan, das ohne Verschlüsselung erstellt wurde. Der Dienst generiert ein neues DEK und verschlüsselt die Komponentenkonfigurationen. -
Schlüssel drehen — Geben Sie einen anderen
kmsKeyArnSchlüssel an. Der Dienst umschließt den vorhandenen DEK mit dem alten Schlüssel in den neuen Schlüssel um.kms:ReEncryptDer 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. DasencryptionContextFeld 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 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.