View a markdown version of this page

Criptografia do conjunto de dados - Amazon Bedrock AgentCore

Criptografia do conjunto de dados

Quando você especifica um kmsKeyArn em um conjunto de dados, o serviço criptografa todos os exemplos armazenados usando a criptografia do lado do servidor S3 com KMS (). SSE-KMS Isso inclui exemplos no Rascunho e em todas as versões publicadas.

O kmsKeyArn é imutável após a criação do conjunto de dados — você não pode alterá-lo ou removê-lo.

Como funciona

A criptografia do conjunto de dados usa SSE-KMS S3. Quando o serviço grava ou lê o conteúdo do conjunto de dados no S3, o S3 chama o KMS em nome do serviço para criptografar ou descriptografar os dados. O responsável pelo serviço (bedrock-agentcore.amazonaws.com) deve ter permissões KMS na política de chaves.

No momento da API, o serviço valida se o chamador tem permissões KMS usando uma verificação de execução a seco (sessões de acesso direto). Isso detecta problemas de permissão imediatamente, em vez de falhar de forma assíncrona durante a ingestão.

AgentCore As avaliações oferecem suporte somente a chaves KMS de criptografia simétrica. A chave KMS deve estar na mesma AWS região do conjunto de dados.

Política de chave necessária

A política de chaves a seguir concede as permissões mínimas necessárias para a criptografia do conjunto de dados. Inclui duas declarações:

  • AllowCallerAccess— Concede ao usuário ou função do IAM que chama CreateDataset permissão para validar e usar a chave. O serviço executa uma verificação a seco no momento da API para verificar se o chamador tem acesso ao KMS. 111122223333Substitua pelo ID da sua conta e MyDatasetRole pela função ou usuário do IAM que gerencia os conjuntos de dados.

  • AllowAgentCoreDatasetAccess— Concede ao principal do AgentCore serviço permissão para criptografar e descriptografar o conteúdo do conjunto de dados no S3.

{ "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": "*" } ] }
nota

Essa é a política mínima. Consulte Como definir o escopo do acesso para ver as condições de segurança recomendadas.

Diminuindo o acesso

Você pode adicionar condições para restringir quando a chave pode ser usada. Para conjuntos de dados, o serviço envia o seguinte contexto com operações de gravação () GenerateDataKey do KMS:

  • aws:SourceAccount— O ID da AWS conta que possui o conjunto de dados.

  • aws:SourceArn— O ARN do conjunto de dados que está sendo criptografado.

  • kms:EncryptionContext:aws:bedrock-agentcore:datasetArn— O ARN do conjunto de dados como contexto de criptografia.

A política a seguir divide as permissões em gravação (condicionada) e leitura (não condicionada):

{ "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": "*" } ] }
Importante

Não adicione aws:SourceAccount nem aws:SourceArn condicione a declaração de leitura (Decrypt,DescribeKey). Os downloads de conjuntos de dados usam URLs pré-assinados do S3, e o cliente de download não envia cabeçalhos de contexto de origem. Adicionar essas condições às operações de leitura causa falhas no download.

111122223333Substitua pelo ID da sua conta e us-east-1 pela sua AWS região. Para definir o escopo de um conjunto de dados específico, substitua o caractere curinga pelo ID do conjunto de dados:. arn:aws:bedrock-agentcore:us-east-1:111122223333:dataset/my-dataset-id

Criação de um conjunto de dados com uma chave KMS gerenciada pelo cliente

Especifique o kmsKeyArn parâmetro ao chamarCreateDataset:

exemplo
AgentCore CLI
  1. Para criar um conjunto de dados criptografado, passe --kms-key-arn ao adicionar o conjunto de dados e execute. agentcore deploy Substitua o ARN da chave KMS pelo ARN da sua própria chave.

    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"}]}]}}'

Monitorando o uso do KMS para conjuntos de dados

Os seguintes nomes de CloudTrail eventos aparecem para as operações do KMS do conjunto de dados:

  • GenerateDataKey— Ao criar um conjunto de dados, adicionar exemplos, atualizar exemplos ou publicar uma versão. O encryptionContext campo contémaws:bedrock-agentcore:datasetArn.

  • Decrypt— Ao ler o conteúdo do conjunto de dados (GetDataset, ListDatasetExamples) ou durante downloads de URL pré-assinados.

  • DescribeKey— Ao validar a chave na criação do conjunto de dados.

Comportamento quando uma chave fica indisponível

Se você desativar ou excluir a chave KMS gerenciada pelo cliente usada por um conjunto de dados:

  • CreateDataset— Falha na validação comValidationException.

  • AddDatasetExamples, UpdateDatasetExamples, CreateDatasetVersion — Falha ValidationException no momento da API.

  • GetDataset— Falha ao ValidationException indicar que a chave KMS está desativada ou excluída.

  • ListDatasetExamples— Falha ao ValidationException indicar que a chave KMS está desativada ou excluída.

  • DeleteDataset— É bem-sucedido porque a exclusão de objetos do S3 não exige a descriptografia do KMS.