View a markdown version of this page

Verschlüsselung von Datensätzen - Amazon Grundgestein AgentCore

Verschlüsselung von Datensätzen

Wenn Sie a in einem kmsKeyArn Datensatz angeben, verschlüsselt der Dienst alle gespeicherten Beispiele mithilfe der serverseitigen S3-Verschlüsselung mit KMS ()SSE-KMS. Dies schließt Beispiele im Entwurf und in allen veröffentlichten Versionen ein.

Der kmsKeyArn ist nach der Erstellung des Datensatzes unveränderlich — Sie können ihn nicht ändern oder entfernen.

Funktionsweise

Die Datensatzverschlüsselung verwendet S3 SSE-KMS. Wenn der Dienst Datensatzinhalte in S3 schreibt oder liest, ruft S3 im Namen des Dienstes KMS auf, um die Daten zu verschlüsseln oder zu entschlüsseln. Der Dienstprinzipal (bedrock-agentcore.amazonaws.com) muss in der Schlüsselrichtlinie über KMS-Berechtigungen verfügen.

Zur API-Zeit überprüft der Dienst mithilfe einer Testlaufprüfung (Forward Access Sessions), ob der Aufrufer über KMS-Berechtigungen verfügt. Dadurch werden Berechtigungsprobleme sofort erkannt, anstatt bei der Erfassung asynchron fehlzuschlagen.

AgentCore Evaluations unterstützt nur KMS-Schlüssel mit symmetrischer Verschlüsselung. Der KMS-Schlüssel muss sich in derselben AWS Region wie der Datensatz befinden.

Erforderliche Schlüsselrichtlinie

Die folgende Schlüsselrichtlinie gewährt die Mindestberechtigungen, die für die Verschlüsselung von Datensätzen erforderlich sind. Sie beinhaltet zwei Aussagen:

  • AllowCallerAccess— Erteilt dem aufrufenden IAM-Benutzer oder der IAM-Rolle die CreateDataset Erlaubnis, den Schlüssel zu validieren und zu verwenden. Der Dienst führt zur API-Zeit einen Probelauf durch, um sicherzustellen, dass der Anrufer KMS-Zugriff hat. 111122223333Ersetzen Sie es durch Ihre Konto-ID und MyDatasetRole durch die IAM-Rolle oder den IAM-Benutzer, der die Datensätze verwaltet.

  • AllowAgentCoreDatasetAccess— Erteilt dem AgentCore Dienstprinzipal die Erlaubnis, Datensatzinhalte in S3 zu verschlüsseln und zu entschlüsseln.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyDatasetRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAgentCoreDatasetAccess", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" } ] }
Anmerkung

Dies ist die Mindestrichtlinie. Die empfohlenen Sicherheitsbedingungen finden Sie unter Einschränkungen des Zugriffs.

Einschränkung des Zugriffs

Sie können Bedingungen hinzufügen, um einzuschränken, wann der Schlüssel verwendet werden kann. Bei Datenmengen sendet der Dienst den folgenden Kontext mit KMS-Schreiboperationen (GenerateDataKey):

  • aws:SourceAccount— Die AWS Konto-ID, der der Datensatz gehört.

  • aws:SourceArn— Der ARN des Datensatzes, der verschlüsselt wird.

  • kms:EncryptionContext:aws:bedrock-agentcore:datasetArn— Der Dataset-ARN als Verschlüsselungskontext.

Die folgende Richtlinie unterteilt die Berechtigungen in Schreib- (bedingt) und Leserechte (nicht konditioniert):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyDatasetRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAgentCoreDatasetWrite", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/*", "kms:EncryptionContext:aws:bedrock-agentcore:datasetArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/*" } } }, { "Sid": "AllowAgentCoreDatasetRead", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" } ] }
Wichtig

Fügen Sie aws:SourceAccount der Leseanweisung (,) keine aws:SourceArn Bedingungen Decrypt hinzuDescribeKey. Beim Herunterladen von Datensätzen werden vordefinierte S3-URLs verwendet, und der herunterladende Client sendet keine Quellkontext-Header. Das Hinzufügen dieser Bedingungen zu Lesevorgängen führt zu Download-Fehlern.

111122223333Ersetzen Sie es durch Ihre Konto-ID und us-east-1 durch Ihre AWS Region. Um auf einen bestimmten Datensatz zu beschränken, ersetzen Sie den Platzhalter durch die Datensatz-ID:arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id.

Einen Datensatz mit einem vom Kunden verwalteten KMS-Schlüssel erstellen

Geben Sie den kmsKeyArn Parameter beim Aufrufen anCreateDataset:

Beispiel
AgentCore CLI
  1. Um einen verschlüsselten Datensatz zu erstellen, übergeben Sie den Vorgang, --kms-key-arn wenn Sie den Datensatz hinzufügen, und führen Sie dann den Befehl ausagentcore deploy. Ersetzen Sie den KMS-Schlüssel ARN durch Ihren eigenen Schlüssel-ARN.

    agentcore add dataset --name encrypted_dataset \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" # Add your scenarios to agentcore/datasets/encrypted_dataset.jsonl, then run agentcore deploy. agentcore deploy
AgentCore SDK
  1. from bedrock_agentcore.evaluation import DatasetClient client = DatasetClient(region_name="us-east-1") ds = client.create_dataset_and_wait( datasetName="encrypted_dataset", schemaType="AGENTCORE_EVALUATION_PREDEFINED_V1", kmsKeyArn="arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", source={ "inlineExamples": { "examples": [ {"scenario_id": "TC-01", "turns": [{"input": "Hello"}]} ] } }, )
AWS SDK
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.create_dataset( datasetName='encrypted_dataset', schemaType='AGENTCORE_EVALUATION_PREDEFINED_V1', kmsKeyArn='arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab', source={ 'inlineExamples': { 'examples': [ {'scenario_id': 'TC-01', 'turns': [{'input': 'Hello'}]} ] } } )
AWS CLI
  1. aws bedrock-agentcore-control create-dataset \ --dataset-name "encrypted_dataset" \ --schema-type AGENTCORE_EVALUATION_PREDEFINED_V1 \ --kms-key-arn "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --source '{"inlineExamples": {"examples": [{"scenario_id": "TC-01", "turns": [{"input": "Hello"}]}]}}'

Überwachung der KMS-Nutzung für Datensätze

Die folgenden CloudTrail Ereignisnamen werden für KMS-Operationen mit Datensätzen angezeigt:

  • GenerateDataKey— Beim Erstellen eines Datensatzes, beim Hinzufügen von Beispielen, beim Aktualisieren von Beispielen oder beim Veröffentlichen einer Version. Das encryptionContext Feld enthältaws:bedrock-agentcore:datasetArn.

  • Decrypt— Beim Lesen von Datensatzinhalten (GetDataset, ListDatasetExamples) oder beim Herunterladen von vorab signierten URLs.

  • DescribeKey— Bei der Validierung des Schlüssels bei der Datensatzerstellung.

Verhalten, wenn ein Schlüssel nicht mehr verfügbar ist

Wenn Sie den vom Kunden verwalteten KMS-Schlüssel, der von einem Datensatz verwendet wird, deaktivieren oder löschen:

  • CreateDataset— Schlägt bei der Validierung mit fehlValidationException.

  • AddDatasetExamples, UpdateDatasetExamples, CreateDatasetVersion — Schlägt ValidationException zur API-Zeit fehl.

  • GetDataset— Schlägt fehl und gibt an, ValidationException dass der KMS-Schlüssel deaktiviert oder gelöscht wurde.

  • ListDatasetExamples— Schlägt mit der ValidationException Angabe fehl, dass der KMS-Schlüssel deaktiviert oder gelöscht ist.

  • DeleteDataset— Erfolgreich, weil für das Löschen von S3-Objekten keine KMS-Entschlüsselung erforderlich ist.