Author: Make.com Service User

  • CloudTroop Weekly #006 — 2026-w14





    CloudTroop Weekly #006 — 2026-w14

    5 de abril de 2026

    Resumo da Semana

    A semana foi dominada por segurança e IA agêntica em produção. A AWS entregou ferramentas que mudam a régua: pentests contínuos com IA, Bedrock Guardrails entre contas e controle de domínios para agentes autônomos saíram do papel. Ao mesmo tempo, ficou claro que frameworks tradicionais de segurança não dão conta de agentes autônomos — novos controles determinísticos são necessários. Compliance também ganhou força, com automação de evidências e guia prático para ISO 27001:2022. Quem opera multi-conta e workloads de IA precisa revisar postura agora.

    O que muda na prática

    • Pentests deixam de ser eventos pontuais: o AWS Security Agent automatiza avaliações contínuas com IA, reduzindo custo em até 90% e eliminando janelas cegas entre ciclos de auditoria.
    • Governança de IA agêntica vira obrigação operacional: Bedrock Guardrails entre contas e controle de domínios via Network Firewall permitem centralizar políticas de segurança para agentes em produção sem configuração manual por conta.
    • Coleta de evidências de compliance pode ser automatizada: a combinação de IA com fluxos de captura reduz drasticamente o esforço manual em auditorias, mudando o papel do time de GRC de executor para revisor.

    Ações da semana

    • Habilite o Bedrock Guardrails com escopo entre contas na sua organização AWS e mapeie quais workloads de IA generativa ainda operam sem controles centralizados — é configuração de horas, não dias.
    • Acesse o guia de conformidade ISO/IEC 27001:2022 para AWS e identifique pelo menos três controles da sua certificação que podem ser mapeados diretamente para serviços que você já usa.

    Top 10 da Semana

    1

    Testes de Penetração Contínuos com AWS Security Agent agora GA

    Reduz em até 90% o custo de pentests ao automatizá-los com IA 24/7, mudando avaliações periódicas para contínuas.

    Para quem: Times de segurança e arquitetos responsáveis por compliance e postura de segurança em nuvem.

    Segurança, IA

    2

    Quatro Princípios de Segurança para Sistemas de IA Autônoma

    Frameworks tradicionais de segurança são insuficientes para agentes autônomos; este guia define controles determinísticos externos essenciais.

    Para quem: Arquitetos de soluções e engenheiros de segurança que constroem ou governam sistemas de IA agêntica.

    Segurança, IA agêntica

    3

    Bedrock Guardrails: proteções entre contas agora GA

    Permite centralizar controles de segurança de IA em toda a organização AWS sem configuração manual por conta.

    Para quem: Equipes de segurança e cloud governance que gerenciam múltiplas contas com workloads de IA generativa.

    Segurança, IA

    4

    AWS KMS e Encryption SDK superam limites da criptografia AES-GCM

    Elimina o risco operacional de ultrapassar limites de criptografia simétrica em escala sem rastreamento manual de chaves.

    Para quem: Engenheiros de segurança e desenvolvedores que implementam criptografia em aplicações de alto volume na AWS.

    Segurança, Criptografia

    5

    Controle de domínios para agentes de IA com Bedrock AgentCore

    Resolve um gap crítico de segurança ao restringir o acesso à internet de agentes de IA com filtragem corporativa via Network Firewall.

    Para quem: Engenheiros de segurança e arquitetos que colocam agentes de IA em produção com acesso à internet.

    Segurança, IA agêntica

    6

    Amazon Bedrock AgentCore Evaluations: avalie agentes em produção

    Oferece avaliação sistemática de agentes de IA em três níveis hierárquicos, essencial para garantir qualidade antes e após o deploy.

    Para quem: Engenheiros de ML e times de produto que desenvolvem e operam agentes de IA baseados em Bedrock.

    IA agêntica, Qualidade

    7

    Amazon ECS: Daemons Gerenciados para instâncias ECS

    Simplifica o deploy centralizado de agentes de segurança e observabilidade em toda a frota de containers, reduzindo drift de configuração.

    Para quem: Engenheiros de plataforma e DevOps que operam clusters ECS com requisitos de segurança e observabilidade uniformes.

    Containers, Operações

    8

    Guia de Conformidade ISO/IEC 27001:2022 para AWS disponível

    Fornece mapeamento prático de controles ISO 27001:2022 para serviços AWS, acelerando certificações e auditorias de SGSI.

    Para quem: Arquitetos de segurança, equipes de compliance e profissionais que conduzem ou preparam auditorias ISO 27001.

    Compliance, Segurança

    9

    CloudWatch integra achados CSPM do Security Hub org-wide

    Centraliza vulnerabilidades e achados de conformidade de múltiplas contas no CloudWatch, unificando observabilidade e postura de segurança.

    Para quem: Times de segurança e SREs responsáveis por monitoramento centralizado em ambientes multi-conta.

    Observabilidade, Segurança

    10

    Automatizando coleta de evidências de conformidade com IA

    Reduz drasticamente o esforço manual de auditorias ao gerar fluxos automatizados de captura de evidências a partir de documentos de compliance.

    Para quem: Profissionais de GRC, auditores internos e equipes de compliance que gerenciam evidências para certificações regulatórias.

    Compliance, IA


  • Amazon Bedrock Guardrails anuncia disponibilidade geral de proteções entre contas

    Controle de segurança centralizado para modelos de IA

    A AWS anunciou a disponibilidade geral de uma capacidade significativa no Amazon Bedrock Guardrails: as proteções entre contas (cross-account safeguards). Essa funcionalidade permite que as equipes de segurança central de uma organização implementem automaticamente controles de segurança em todas as contas AWS, eliminando a necessidade de configurações repetitivas em cada conta individual.

    O Amazon Bedrock Guardrails já oferecia salvaguardas configuráveis capazes de bloquear até 88% do conteúdo prejudicial em múltiplas modalidades (texto, imagem e outros formatos), tanto em prompts de entrada quanto em respostas dos modelos de fundação. Agora, com as proteções entre contas, essa capacidade ganhou uma camada de automação e centralização organizacional.

    Como funcionam as proteções entre contas

    O mecanismo é direto: administradores podem especificar um identificador de guardrail da conta de gerenciamento em uma nova política do Amazon Bedrock que se propaga automaticamente para todas as entidades membro, incluindo unidades organizacionais (OUs) e contas individuais. Dessa forma, toda e qualquer invocação de modelo no Amazon Bedrock passa automaticamente pelos mesmos controles de segurança definidos centralmente.

    Esse modelo de enforçamento oferece três níveis de implementação:

    • Proteção de baseline organizacional: Define um padrão de segurança uniforme para toda a organização
    • Controles por conta: Permite ajustes específicos conforme necessidade de departamentos ou unidades de negócio
    • Salvaguardas específicas de aplicação: Completa as políticas organizacionais com proteções direcionadas para casos de uso particulares

    Durante as invocações do modelo, múltiplos guardrails são aplicados de forma conjunta, garantindo que o conteúdo prejudicial seja bloqueado mesmo com regras em diferentes níveis de hierarquia.

    Disponibilidade e acesso

    A funcionalidade já está disponível em todas as regiões comerciais da AWS e em regiões GovCloud onde o Bedrock Guardrails é suportado. Ela pode ser acessada tanto pelo console de gerenciamento da AWS quanto através das APIs suportadas.

    Para quem deseja aprofundar a implementação dessa capacidade, a AWS disponibiliza recursos complementares. Recomendamos consultar o artigo de blog sobre guardrails centralizados, explorar a documentação completa do Amazon Bedrock Guardrails e conferir a página de serviço do Amazon Bedrock Guardrails para informações adicionais. Também existe documentação específica sobre políticas do Amazon Bedrock no guia de organizações da AWS.

    Impacto para equipes de segurança

    Essa mudança reduz significativamente o overhead operacional de grandes organizações que precisam manter padrões de segurança consistentes em dezenas ou centenas de contas AWS. Em vez de replicar manualmente cada guardrail em cada ambiente, as equipes de segurança central podem agora estabelecer políticas uma única vez e deixar que elas se propaguem automaticamente para toda a infraestrutura de IA da organização.

    Fonte

    Amazon Bedrock Guardrails announces general availability of cross-account safeguards (https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-guardrails-cross-account-safeguards/)

  • Agentes de Troubleshooting e Upgrade do Apache Spark Agora Disponíveis como Poderes Kiro

    Automação Inteligente para Operações com Apache Spark

    A AWS anunciou a disponibilidade de dois agentes especializados para Apache Spark no Amazon EMR, agora integrados como poderes no Kiro — uma plataforma que oferece acesso em um clique a operações Spark assistidas por inteligência artificial. Essa integração representa um avanço significativo na forma como engenheiros de dados lidam com desafios comuns em ambientes de processamento de dados em larga escala.

    Os novos poderes transformam a experiência dos profissionais ao reduzir drasticamente o tempo necessário para resolver problemas. Enquanto troubleshooting manual poderia demandar horas, o agente especializado comprime esse processo em minutos. De forma similar, atualizações de versão do Spark — que tradicionalmente consumiam meses de planejamento e execução — agora podem ser completadas em semanas.

    Capacidades dos Agentes

    Agente de Troubleshooting

    O agente de diagnóstico funciona através de análise profunda de logs, métricas e configurações. Ele opera tanto no EMR em EC2 quanto no EMR Serverless, oferecendo uma visão integrada do ambiente. Quando um job Spark falha, o agente identifica a causa raiz e fornece recomendações de código específicas para aplicações PySpark, acelerando a recuperação de falhas.

    Agente de Upgrade

    O agente de atualização automatiza o processo de upgrade de versões Spark, como migração do EMR 6.5 para EMR 7.12. A ferramenta gerencia transformação de código e resolução de dependências, realizando validação remota e comparação de qualidade de dados no EMR — tarefas que normalmente exigem intervenção manual extensiva.

    Segurança e Auditoria

    Ambos os poderes conectam aos agentes Spark através do MCP Proxy para AWS, utilizando autenticação baseada em papéis IAM. Cada ação executada pelos agentes é registrada no AWS CloudTrail, garantindo rastreabilidade completa e conformidade com políticas de auditoria empresariais.

    Como Começar

    Os agentes estão disponíveis em todas as regiões comerciais da AWS. Para iniciá-los, engenheiros de dados podem instalar o poder de troubleshooting do Apache Spark ou o poder de upgrade diretamente do Kiro IDE. A documentação dos agentes de troubleshooting e agentes de upgrade fornece instruções detalhadas para configuração e uso.

    Impacto para Equipes de Dados

    Essa inovação tem implicações práticas significativas para organizações que operam Apache Spark em escala. A redução de tempo em troubleshooting libera recursos de engenharia para trabalhos de maior valor agregado. A aceleração de upgrades de versão reduz ciclos de manutenção e permite que equipes aproveitem mais rapidamente melhorias de performance e segurança em versões mais recentes.

    Fonte

    Apache Spark troubleshooting and upgrade agents now available as Kiro powers (https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-emr-spark-troubleshooting-upgrade-kiro-power/)

  • Como AWS KMS e AWS Encryption SDK Superam os Limites da Criptografia Simétrica

    Entendendo o Desafio da Criptografia em Escala

    Aplicações que operam em larga escala e lidam com volumes significativos de dados criptografados enfrentam um desafio técnico importante: acompanhar os limites de criptografia e gerenciar a rotação de chaves de forma eficiente. Este artigo explora como a AWS Key Management Service (AWS KMS) e o AWS Encryption SDK resolvem automaticamente os limites de criptografia do padrão AES-GCM (Advanced Encryption Standard em Galois Counter Mode), utilizando métodos de derivação de chaves. Isso elimina a necessidade de os desenvolvedores rastrearem manualmente esses limites.

    A abordagem utiliza chaves derivadas que são geradas a partir de uma chave principal por meio de um valor aleatório chamado nonce. Dessa forma, cada operação de criptografia usa uma chave única, permitindo que a chave principal seja reutilizada por muito mais tempo. Métodos similares de derivação de chaves têm sido propostos em esquemas recentes como o (KC-)XAES, DNDK v2, e outros trabalhos acadêmicos da comunidade criptográfica.

    Os Limites da Criptografia Simétrica

    Criptografia AEAD e AES-GCM

    Algoritmos de criptografia simétrica protegem grandes volumes de dados, tanto em trânsito quanto em repouso. Os cifras modernos também autenticam os dados usando uma tag de autenticação — essas são chamadas de cifras AEAD (Authenticated Encryption with Additional Data). Exemplos incluem o AES-GCM e o ChaCha20/Poly1305.

    O AES-GCM é o algoritmo de criptografia mais amplamente utilizado e foi padronizado pelo NIST na especificação SP 800-38D. Este algoritmo utiliza uma chave de 128 ou 256 bits (K), um vetor de inicialização (IV) de 96 bits e criptografa um texto simples (P), autenticando também dados adicionais (AAD). O resultado é um texto cifrado (C) e uma tag de autenticação (T).

    Na descriptografia, o receptor recupera o texto simples original utilizando a chave, o IV e os dados autenticados, depois valida a tag para garantir a integridade da mensagem.

    Limite de Invocações de Criptografia

    Um requisito crítico para a segurança do AES-GCM é que o par (chave K, IV) nunca se repita durante toda a vida útil da chave. Se isso acontecer, as propriedades de segurança do algoritmo são comprometidas. A especificação SP 800-38D exige que a implementação mantenha uma probabilidade de reutilização inferior a 1 em 4,29 bilhões (menor que 2⁻³²).

    Isso pode ser alcançado utilizando um IV determinístico que não se repete ou um IV aleatório. Se um IV aleatório é usado, torna-se necessário trocar a chave após 2³² criptografias. Protocolos comuns como TLS ou IKEv2/IPsec evitam colisões do par (K, IV) usando IVs determinísticos que começam com um valor aleatório e são incrementados para cada conexão.

    Limite de Volume de Dados

    Além do limite de invocações, existe também um limite relacionado ao volume total de dados que pode ser criptografado com a mesma chave. O contador de blocos no AES-GCM é de 32 bits, o que resulta em um limite de 2³²-2 bytes (aproximadamente 68,72 GB) por operação de criptografia, ou seja, por cada par único (K, IV).

    Quando não se restringe o volume total de dados criptografados, reduz-se a garantia de segurança de indistinguibilidade — a capacidade de um adversário de não conseguir distinguir entre dois textos cifrados diferentes. Quanto maior a proteção de indistinguibilidade, menor é o total de bytes que podem ser criptografados sob uma única chave.

    A especificação do NIST sugere um limite de 2⁶⁸ bytes protegidos sob uma chave única, o que fornece uma probabilidade de indistinguibilidade de 50%. Porém, margens de segurança mais conservadoras baseadas em diferentes análises criptográficas são frequentemente utilizadas. A AWS adota uma abordagem ainda mais conservadora, impondo por padrão uma probabilidade de indistinguibilidade negligenciável (menor que 2⁻³²).

    Quando se atinge os limites de dados do AES-GCM para uma determinada margem de segurança, é necessário fazer a rotação da chave simétrica. Em aplicações modernas de criptografia em larga escala, esses limites (por exemplo, 2³² criptografias com IVs aleatórios ou o volume máximo de dados por chave) podem ser atingidos. Rastrear esses limites em sistemas distribuídos com muitas sessões concorrentes adiciona complexidade operacional significativa. A AWS compartilhou essas dificuldades em um documento detalhado e uma apresentação no terceiro Workshop do NIST sobre Modos de Cifra em Blocos de 2023.

    Como AWS KMS Utiliza Chaves Derivadas

    A AWS KMS é um serviço gerenciado que permite criar e controlar as chaves utilizadas para criptografar e assinar dados. A API Encrypt do KMS suporta criptografia simétrica e assimétrica. Para criptografia com chaves simétricas, o AWS KMS utiliza AES-GCM com chaves de 256 bits para criptografar um texto simples de até 4 KB.

    Quando uma solicitação ao KMS Encrypt é feita, ela inclui o texto simples e o identificador da chave simétrica gerenciada pelo cliente armazenada no KMS. A chamada da API de Encrypt usa a chave para derivar uma chave de criptografia simétrica antes de criptografar o texto simples.

    O processo funciona da seguinte forma: a AWS KMS gera um nonce aleatório de 128 bits e produz uma chave simétrica de 256 bits a partir da chave principal especificada, utilizando uma função de derivação de chaves (KDF). Essa função recebe a chave, um rótulo e contexto, um nonce específico da invocação, e um comprimento de saída desejado, produzindo material de chave do tamanho especificado.

    Para o AWS KMS, a função KDF é o Counter Mode KDF conforme a especificação SP 800-108r1 do NIST, que produz 256 bits de material de chave utilizando HMAC-SHA256 como função pseudoaleatória. A chave derivada é produzida com uma chamada ao HMAC-SHA256 com a chave principal:

    Subsequentemente, o AWS KMS gera um IV aleatório de 96 bits e criptografa o texto simples de entrada com AES-GCM. O resultado inclui o IV, o nonce, o texto cifrado e a tag de autenticação. Estes componentes são retornados em um blob de texto cifrado (CiphertextBlob) que pode ser descriptografado em chamadas posteriores à API Decrypt.

    Intuitivamente, o nonce aleatório de 128 bits usado para derivar uma chave única de criptografia sob uma chave gerenciada permite que o chamador ultrapasse significativamente o limite de 2³² invocações de criptografia sob essa chave. Além disso, o limite de 4 KB no tamanho da carga útil para uma chamada AWS Encrypt garante que o volume total de dados criptografados sob uma chave de criptografia permaneça bem abaixo dos limites totais de criptografia do NIST ou de outras margens mais conservadoras. Para mais detalhes sobre os fundamentos matemáticos e criptográficos desse esquema, consulte o artigo Key Management Systems at the Cloud Scale.

    Como AWS Encryption SDK Aplica Modos de Chave Derivada

    O AWS Encryption SDK é uma biblioteca de criptografia do lado do cliente usada para criptografar e descriptografar dados. Pode ser configurado para usar cache de chaves de dados, reduzindo chamadas de API ao criptografar múltiplas cargas úteis.

    Usar uma chave derivada baseada em nonce para cada invocação de AES-GCM elimina a necessidade de os clientes acompanharem o volume total de dados que criptografam sob uma única chave de dados. Embora o AWS Encryption SDK ofereça muita flexibilidade para acomodar diversos cenários de criptografia, a configuração padrão lida com derivação de chaves e dimensionamento de frames automaticamente, elimando a necessidade de ajustar essas configurações para a maioria dos casos de uso.

    Para derivar uma chave diferente para cada invocação, assim como o AWS KMS, o SDK utiliza um valor aleatório gerado, a chave principal e contexto específico da invocação na KDF. O valor aleatório tem 256 bits na configuração padrão. A KDF subjacente é a Função de Derivação de Chaves baseada em HMAC (HKDF — HMAC-based Extract-and-Expand Key Derivation Function) com SHA512 como o hash padrão.

    A chave derivada é produzida com uma chamada ao HKDF com a chave principal, usando um rótulo constante e um contexto que consiste em constantes concatenadas com um valor aleatório de 256 bits. Subsequentemente, o AWS Encryption SDK usa a chave derivada para criptografar o conteúdo do usuário, dividido em frames de 4 KB por padrão.

    Cada frame de texto simples é criptografado com AES-GCM usando um IV determinístico que consiste em um contador de frames, onde o ID do frame é menor que 2³². O dado autenticado adicional (AAD) é específico do frame de dados do Encryption SDK. Na descriptografia, o receptor deriva a chave da mesma forma e descriptografa o texto cifrado para produzir o texto simples do frame, validando a tag de autenticação.

    O tamanho padrão de 4 KB por frame garante que por padrão não mais que 2⁴⁴ bytes (2³² frames de 4 KB cada) possam ser criptografados sob uma única chave de criptografia. Isso está bem abaixo do limite sugerido pelo NIST (2⁶⁸ bytes), mesmo com cache de chaves de dados. Também está bem abaixo do requisito conservador da AWS de probabilidade de indistinguibilidade menor que 2⁻³².

    O limite de invocações por chave, mesmo com cache de chaves de dados, excede as contagens de criptografia na maioria das aplicações em larga escala.

    Considerações sobre Versões Anteriores

    Enquanto a configuração padrão do AWS Encryption SDK faz escolhas conservadoras, se você estiver usando a versão legada 1.0 ou fizer alterações de configuração, poderá ter garantias de segurança menores. Por exemplo, um tamanho máximo customizado de frame de 2³²-1 bytes levaria a um tamanho total de texto simples maior, que ainda está abaixo do limite sugerido pelo NIST de 2⁶⁸ bytes, mas não necessariamente abaixo de outras margens conservadoras.

    Vale notar que a configuração padrão do AWS Encryption SDK também fornece propriedades de segurança menos conhecidas, como compromisso de chave. A string de comprometimento é produzida de forma similar à chave derivada, utilizando a chave principal e HKDF.

    Conclusão

    Ao derivar uma chave única para cada chamada de criptografia, a AWS KMS e o AWS Encryption SDK eliminam a necessidade de rastrear manualmente os limites do AES-GCM. Para compreender os fundamentos acadêmicos dos limites do AES-GCM, consulte a especificação SP 800-38D e o rascunho draft-irtf-cfrg-aead-limits.

    Para leitura adicional sobre a análise criptográfica do esquema de derivação de chaves utilizado no KMS, consulte Key Management Systems at the Cloud Scale. Para mais detalhes sobre a derivação de chaves AES-GCM do Encryption SDK, veja a referência de algoritmos do AWS Encryption SDK.

    Fonte

    How AWS KMS and AWS Encryption SDK overcome symmetric encryption bounds (https://aws.amazon.com/blogs/security/how-aws-kms-and-aws-encryption-sdk-overcome-symmetric-encryption-bounds/)

  • Amazon SageMaker Data Agent: novas capacidades de visualização e suporte a materialized views

    Novas funcionalidades do Data Agent no SageMaker

    A AWS expandiu as capacidades do Amazon SageMaker Data Agent com recursos que vão muito além da simples geração de código. O serviço agora oferece uma abordagem completa para fluxos de análise de dados, integrando visualização interativa, suporte a fontes externas e otimização automática de consultas — tudo operado por prompts em linguagem natural dentro dos notebooks do SageMaker Unified Studio.

    Gráficos interativos sob demanda

    Uma das novidades mais práticas é a geração automática de gráficos interativos. Você pode simplesmente solicitar ao Data Agent: “plot monthly revenue trends by region for 2025” (plote as tendências de receita mensal por região para 2025). O sistema gera um gráfico interativo diretamente no notebook, permitindo que você passe o mouse sobre os pontos de dados e realize modificações — sem precisar escrever uma única linha de código.

    Integração com Snowflake e dados externos

    O Data Agent agora permite que suas análises atravessem múltiplas plataformas. Quando você trabalha simultaneamente com dados da AWS e Snowflake, é possível consultar tabelas Snowflake através de conexões externas e combiná-las com dados do AWS Glue Data Catalog em um único comando. Essa integração elimina a necessidade de movimentar dados ou escrever lógica complexa de join manualmente.

    Otimização automática com materialized views

    Um dos recursos mais inteligentes é a capacidade do agente em analisar seus notebooks e sugerir otimizações. Você pode pedir: “analyze my notebook and suggest which queries would benefit from materialized views” (analise meu notebook e sugira quais consultas se beneficiariam de materialized views). O sistema então recomenda otimizações baseadas nos padrões de suas consultas, cria as views automaticamente e configura cronogramas de atualização.

    Como começar

    Para utilizar essas funcionalidades, abra um notebook em seu projeto SageMaker Unified Studio e acesse o painel de chat do Data Agent. Os recursos estão disponíveis em todas as regiões AWS onde o SageMaker Unified Studio é suportado.

    Para aprofundar os detalhes técnicos, consulte a documentação do SageMaker Data Agent no SageMaker Unified Studio User Guide.

    Fonte

    Amazon SageMaker Data Agent introduces charting capabilities and support for materialized views (https://aws.amazon.com/about-aws/whats-new/2026/03/amazon-sgmkr-dataagent-chart-mv/)

  • CloudWatch expande autoativação para logs do CloudFront e 3 tipos adicionais de recursos

    Autoativação expandida no CloudWatch

    A AWS anunciou uma expansão significativa da funcionalidade de autoativação do CloudWatch. O serviço agora oferece suporte automático para ativação de logs de acesso padrão do Amazon CloudFront, relatórios de descoberta de postura de segurança (CSPM) do AWS Security Hub, além de logs e rastreamentos de memória e gateway do Amazon Bedrock AgentCore que são enviados automaticamente para o CloudWatch Logs.

    Essa evolução marca um passo importante na simplificação do gerenciamento de telemetria em ambientes de nuvem. Clientes podem agora estabelecer regras de autoativação que configuram automaticamente a coleta de telemetria tanto para recursos já existentes quanto para novos recursos criados no futuro, garantindo uma cobertura de monitoramento consistente sem necessidade de configurações manuais repetitivas.

    Flexibilidade no escopo das regras

    As regras de autoativação oferem um alto grau de flexibilidade em termos de escopo. É possível configurá-las em três níveis diferentes:

    • No nível da organização como um todo
    • Para contas específicas dentro da organização
    • Para recursos específicos identificados por tags

    Essa estrutura permite que equipes padronizem a coleta de telemetria de forma consistente, adaptando-se às necessidades específicas de cada ambiente. Um exemplo prático dessa flexibilidade: uma equipe central de segurança pode criar uma única regra que automaticamente envia logs de acesso do CloudFront e descobertas do Security Hub para todos os recursos em toda a organização para o CloudWatch Logs.

    Disponibilidade e cobertura

    A capacidade de autoativação do CloudWatch está disponível em todas as regiões comerciais da AWS. É importante observar que a ingestão de logs será cobrada conforme os preços estabelecidos no modelo de preços do CloudWatch.

    Quanto ao escopo das regras por tipo de recurso: logs de acesso do Amazon CloudFront e descobertas do Security Hub CSPM suportam regras de autoativação em nível de organização, enquanto os dados de memória e gateway do Bedrock AgentCore funcionam com regras no nível de conta.

    Próximos passos

    Para aprofundar o conhecimento sobre como configurar e usar as regras de autoativação no CloudWatch, a documentação do Amazon CloudWatch oferece detalhes completos sobre a implementação dessa funcionalidade.

    Fonte

    Amazon CloudWatch expands auto-enablement to Amazon CloudFront logs and 3 additional resource types (https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-cloudwatch-cloudfront-enablement/)

  • Controle quais domínios seus agentes de IA podem acessar

    O desafio de dar acesso à internet para agentes de IA

    Agentes de inteligência artificial que conseguem navegar pela web abrem possibilidades impressionantes — desde automação de pesquisas até coleta de dados em tempo real. Porém, fornecer acesso irrestrito à internet para um agente de IA levanta preocupações legítimas sobre segurança e conformidade regulatória. E se o agente acessar websites não autorizados? E se dados sensíveis forem exfiltrados para domínios externos?

    O Amazon Bedrock AgentCore fornece ferramentas gerenciadas que permitem agentes de IA interagir com a web através do navegador, executar código e ser hospedados em ambiente gerenciado. Quando implantado em uma Nuvem Privada Virtual da AWS (Amazon VPC), você consegue controlar o acesso à rede das ferramentas utilizando o AWS Network Firewall para implementar filtragem baseada em domínios.

    Por que isso importa para empresas

    Requisitos de segurança em setores regulados

    Organizações em indústrias reguladas que implantam agentes de IA têm demandas consistentes e rigorosas em relação ao controle de tráfego de rede — tanto entrada quanto saída. Clientes em setores altamente regulados (como serviços financeiros) exigem explicações detalhadas sobre como o tráfego dos agentes é controlado e auditado. Esses clientes querem garantias de que os endpoints de tempo de execução permaneçam privados e que controles adicionais, como proteção de firewall de aplicações web, estejam disponíveis.

    Requisitos de provedores SaaS multi-tenant

    Empresas de Software como Serviço (SaaS) com múltiplos clientes precisam de controles granulares em nível de DNS, pois suas arquiteturas multi-tenant exigem políticas de rede específicas por cliente. Por exemplo, o Cliente A pode precisar permitir domínios que o Cliente B bloqueia. Requisitos comuns incluem: bloqueio específico de execução (impedir acesso a certos domínios durante launches específicas do navegador), restrições regionais e regras baseadas em categorias (desabilitar sites de jogos ou redes sociais através de conjuntos de regras pré-configurados).

    Mitigação de vulnerabilidades e conformidade

    Equipes de segurança identificaram que agentes de IA podem ser enganados para navegar para sites intencionais através de ataques de injeção de prompts. Listas de permissão de URLs customizadas reduzem a superfície de ataque ao restringir o navegador apenas aos domínios aprovados, independentemente do que o agente for instruído a fazer. Filtragem de egresso baseada em domínios fornece o logging e visibilidade de controle de acesso que equipes de segurança frequentemente precisam para seus processos de monitoramento.

    Arquitetura da solução

    A solução implanta o AgentCore Browser em uma subnet privada sem acesso direto à internet. O tráfego de saída é roteado através do AWS Network Firewall, que inspeciona os headers de Indicação de Nome de Servidor TLS (SNI) para determinar o domínio de destino e aplicar regras de filtragem. Você também consegue monitorar as ações do Network Firewall através da integração nativa com métricas do Amazon CloudWatch.

    Implantação do AgentCore com AWS Network Firewall e filtragem de egresso baseada em domínios — Fonte: Aws

    Componentes da arquitetura

    A arquitetura inclui:

    • Subnet privada: hospeda instâncias do AgentCore Browser sem endereços IP públicos
    • Subnet pública: contém o NAT Gateway para conectividade de saída
    • Subnet de firewall: hospeda o endpoint do Network Firewall
    • Tabelas de rota: quatro tabelas que controlam o fluxo de tráfego através do firewall para requisições de saída e tráfego de retorno

    Fluxo de tráfego

    O fluxo funciona em etapas sequenciais:

    • O AgentCore Runtime executa o agente e invoca a ferramenta AgentCore Browser
    • AgentCore Browser inicia uma requisição HTTPS da subnet privada
    • A tabela de rotas da subnet privada direciona tráfego ao NAT Gateway na subnet pública
    • O NAT Gateway traduz o endereço IP privado e encaminha a requisição ao endpoint do Network Firewall
    • Network Firewall inspeciona o header SNI do TLS para identificar o domínio de destino
    • Se o domínio corresponder a uma regra de lista de permissão, o firewall encaminha tráfego ao Internet Gateway
    • O Internet Gateway roteia tráfego aprovado para o destino externo
    • Tráfego de retorno segue o caminho simétrico de volta através do firewall para o agente

    Esta arquitetura garante que tráfego de navegador seja inspecionado e filtrado, independentemente do destino.

    Implementação prática

    Pré-requisitos

    Antes de começar, certifique-se de ter:

    • Uma conta AWS com permissões para criar recursos de VPC, Network Firewall e funções IAM
    • AWS Command Line Interface (AWS CLI) versão 2.x configurada com credenciais apropriadas
    • Acesso ao Amazon Bedrock AgentCore
    • Familiaridade básica com conceitos de redes VPC

    Passo 1: Deploy de recursos

    Para a configuração completa e passo a passo do VPC e Network Firewall, consulte a documentação de configuração VPC do Amazon Bedrock AgentCore. Esta seção destaca configurações específicas para o AgentCore Browser.

    Inicie o deploy do template CloudFormation:

    Você pode manter os valores padrão do stack. No entanto, certifique-se de adicionar um nome de stack (por exemplo, "agentcore-egress") ao campo "Stack name", escolha uma Zona de Disponibilidade no menu "Availability Zone" e inclua um nome de bucket existente válido no parâmetro "BucketConfigForOutput". Aguarde a conclusão da criação do stack, que normalmente leva 10 minutos. Continue com os próximos passos após o status do stack mudar para CREATE_COMPLETE.

    Passo 2: Revisar a função de execução IAM

    AgentCore Browser requer uma função IAM com política de confiança para o serviço bedrock-agentcore.amazonaws.com:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "bedrock-agentcore.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

    Passo 3: Configurar lista de permissão do Network Firewall

    Crie um grupo de regras stateful com seus domínios aprovados. Note o ponto à frente (.) para corresponder a subdomínios:

    cat > allowlist-rules.json << 'EOF'
    {
      "RulesSource": {
        "RulesSourceList": {
          "Targets": [
            ".wikipedia.org",
            ".stackoverflow.com",
            ".docs.aws.amazon.com",
            ".amazonaws.com",
            ".pypi.org",
            ".pythonhosted.org"
          ],
          "TargetTypes": ["HTTP_HOST", "TLS_SNI"],
          "GeneratedRulesType": "ALLOWLIST"
        }
      },
      "StatefulRuleOptions": {
        "RuleOrder": "STRICT_ORDER"
      }
    }
    EOF
    aws network-firewall create-rule-group \
      --rule-group-name browser-allowed-domains \
      --type STATEFUL \
      --capacity 100 \
      --rule-group file://allowlist-rules.json \
      --region us-east-2

    Importante: inclua .amazonaws.com na sua lista de permissão se o navegador precisar acessar serviços AWS ou use VPC Endpoints como alternativa.

    Passo 4: Configurar política de firewall

    A política de firewall deve usar aws:drop_established como ação padrão. Isso permite que handshakes TCP sejam concluídos (necessário para inspeção SNI do TLS) enquanto bloqueia conexões para domínios não permitidos:

    cat > firewall-policy.json << 'EOF'
    {
      "StatelessDefaultActions": ["aws:forward_to_sfe"],
      "StatelessFragmentDefaultActions": ["aws:forward_to_sfe"],
      "StatefulRuleGroupReferences": [
        {
          "ResourceArn": "arn:aws:network-firewall:us-east-2:ACCOUNT_ID:stateful-rulegroup/browser-allowed-domains",
          "Priority": 1
        }
      ],
      "StatefulEngineOptions": {
        "RuleOrder": "STRICT_ORDER"
      },
      "StatefulDefaultActions": ["aws:drop_established"]
    }
    EOF

    Passo 5: Criar grupo de segurança

    Crie um grupo de segurança que permita tráfego de saída. O Network Firewall cuida da filtragem de domínios:

    # Create security group
    aws ec2 create-security-group \
      --group-name agentcore-egress-sg \
      --description "AgentCore tools - egress only, filtered by Network Firewall" \
      --vpc-id vpc-XXXXXXXXX \
      --region us-east-2
    
    # Allow all outbound traffic (Network Firewall handles filtering)
    aws ec2 authorize-security-group-egress \
      --group-id sg-XXXXXXXXX \
      --protocol -1 \
      --port -1 \
      --cidr 0.0.0.0/0 \
      --region us-east-2
    
    # Remove default inbound rules if present (AgentCore tools don't need inbound)
    aws ec2 revoke-security-group-ingress \
      --group-id sg-XXXXXXXXX \
      --protocol -1 \
      --port -1 \
      --cidr 0.0.0.0/0 \
      --region us-east-2

    Passo 6: Criar AgentCore Browser

    Crie o navegador com configuração VPC apontando para sua subnet privada:

    aws bedrock-agentcore-control create-browser \
      --name my_secure_browser \
      --execution-role-arn arn:aws:iam::ACCOUNT_ID:role/AgentCoreBrowserExecutionRole \
      --network-configuration '{
        "networkMode": "VPC",
        "vpcConfig": {
          "securityGroups": ["sg-XXXXXXXXX"],
          "subnets": ["subnet-XXXXXXXXX"]
        }
      }' \
      --region us-east-2

    Passo 7: Testar a configuração

    Inicie uma sessão de navegador e verifique que as regras de firewall funcionam corretamente:

    # Start browser session
    aws bedrock-agentcore start-browser-session \
      --browser-identifier my_secure_browser-ABC123xyz \
      --region us-east-2

    Use a URL WebSocket retornada com uma ferramenta de automação de navegador como Playwright para testar domínios permitidos e bloqueados.

    Monitoramento via CloudWatch

    Verifique os logs de firewall no CloudWatch para tentativas de conexão bloqueadas:

    # View recent alert logs (blocked connections)
    aws logs filter-log-events \
      --log-group-name "/aws/network-firewall/agentcore-egress/alerts" \
      --filter-pattern '{ $.event.alert.action = "blocked" }' \
      --region us-east-2 \
      --start-time $(($(date +%s) - 300))000

    Boas práticas e considerações

    Práticas recomendadas

    • Use avaliação STRICT_ORDER: facilita processamento previsível de regras ao combinar listas de permissão e bloqueio
    • Inclua .amazonaws.com para acesso a serviços AWS: ou use VPC Endpoints para evitar rotear chamadas de API através da internet
    • Configure a tabela de rotas de entrada do IGW: crítico para roteamento simétrico. Sem isso, tráfego de retorno bypassa o firewall
    • Habilite logs ALERT e FLOW: logs ALERT capturam conexões bloqueadas; logs FLOW fornecem metadados de conexão
    • Aguarde sincronização do firewall: mudanças de regras levam alguns minutos para se propagar
    • Configure HOME_NET para arquiteturas multi-VPC: por padrão, inspeção de domínio do Network Firewall filtra apenas tráfego originário da faixa CIDR da VPC de deployment

    Limitações e considerações de custo

    Inspeção de conteúdo requer inspeção TLS: por padrão, filtragem de domínio opera em metadados TLS não criptografados (headers SNI) e não consegue inspecionar corpos de requisição ou resposta criptografados.

    Risco de bypass de header SNI/Host: o Network Firewall usa headers SNI do TLS e headers Host HTTP — não endereços IP — para determinar domínios de destino. Se esses headers forem manipulados, tráfego pode contornar filtragem de domínio. Para deployments de alta segurança, combine regras de domínio com regras baseadas em IP para destinos bloqueados críticos, ou adicione filtragem DNS como camada adicional.

    Escopo de HOME_NET em deployments multi-VPC: por padrão, inspeção de domínio do Network Firewall aplica-se apenas ao tráfego originário da faixa CIDR da VPC de deployment. Se você usar firewall centralizado com AWS Transit Gateway (múltiplas VPCs roteando através de um firewall compartilhado), você deve configurar a variável HOME_NET em seu grupo de regras para incluir faixas CIDR de origem.

    Custos variam conforme seu uso. Consulte os preços de NAT Gateway e Network Firewall para taxas atuais.

    Limpeza de recursos

    Delete recursos nesta ordem para evitar cobranças contínuas:

    • Delete o AgentCore Browser
    • Delete o Network Firewall (desabilite configurações de proteção primeiro)
    • Delete o NAT Gateway
    • Libere o endereço IP elástico
    • Delete as subnets e tabelas de rota
    • Desanexe e delete o Internet Gateway
    • Delete a VPC

    Nota: AgentCore Browser e Code Interpreter criam interfaces de rede elásticas em sua VPC. Após deletar esses recursos, aguarde alguns minutos para a interface de rede ser liberada antes de deletar o grupo de segurança, subnet ou VPC.

    Próximos passos

    Filtragem de domínio através de inspeção SNI é uma camada de segurança de egresso. Dependendo de seus requisitos, considere essas mitigações adicionais:

    • Route 53 DNS Firewall: ajuda a bloquear ou permitir consultas DNS por domínio e previne tunneling e exfiltração de DNS. Útil quando você precisa de filtragem em nível DNS ou proteção contra exfiltração de dados baseada em DNS.
    • Inspeção TLS + Suricata DLP: descriptografa HTTPS, inspeciona corpos de requisição/resposta com regras Suricata, ajuda a bloquear padrões de dados sensíveis (PII, credenciais). Necessário quando você precisa de prevenção de perda de dados (DLP) para tráfego gerado por agentes.
    • Arquitetura de inspeção centralizada: roteia tráfego de múltiplas VPCs através de uma VPC de inspeção compartilhada com Network Firewall. Útil quando você tem múltiplos deployments do AgentCore e quer enforcement de política centralizado.

    Quando usar inspeção TLS, configure certificados customizados em seus recursos do AgentCore para confiar na CA de re-assinatura do Network Firewall.

    Conclusão

    Ao combinar ferramentas do Amazon Bedrock AgentCore com AWS Network Firewall, você consegue dar aos agentes de IA acesso controlado à web mantendo segurança e alinhamento de conformidade. A abordagem de filtragem baseada em domínios permite definir precisamente quais websites agentes podem acessar, bloquear destinos indesejados e fazer logging de tentativas de conexão para fins de auditoria.

    Esta arquitetura resolve as preocupações de segurança levantadas por clientes corporativos: conformidade em setores regulados fornece isolamento de rede e logging de auditoria necessários para revisões de segurança em nível CISO, controle multi-tenant habilita políticas de domínio por cliente ou por execução para provedores SaaS, defesa contra injeção de prompts restringe navegação de agentes a domínios aprovados reduzindo superfície de ataque, e evidência de auditoria gera logs no CloudWatch que suportam requisitos de conformidade.

    Para empresas implantando agentes de IA que precisam de acesso à internet para pesquisa, coleta de dados ou integrações de API, este padrão fornece uma abordagem production-ready para manter controle rigoroso sobre onde esse acesso leva. Em vez de manter proxies squid customizados ou infraestrutura de rede complexa, você consegue usar serviços gerenciados da AWS para implementar filtragem de egresso em nível corporativo em horas, não semanas.

    Para mais informações sobre AgentCore Browser, consulte a documentação do AgentCore Browser.

    Recursos relacionados

    Fonte

    Control which domains your AI agents can access (https://aws.amazon.com/blogs/machine-learning/control-which-domains-your-ai-agents-can-access/)

  • Persistência de Estado de Sessão com Configuração de Filesystem e Execução de Comandos Shell

    A Evolução dos Agentes de IA e o Desafio da Efêmera

    Os agentes de inteligência artificial ultrapassaram a simples conversa e evoluíram significativamente. Hoje, eles conseguem escrever código, gerenciar estado persistente em filesystem, executar comandos de sistema operacional e administrar estados ao longo de toda a estrutura de diretórios. À medida que assistentes de codificação baseados em agentes e fluxos de desenvolvimento se tornaram mais maduros, o filesystem emergiu como a memória de trabalho principal desses agentes, estendendo suas capacidades muito além da janela de contexto disponível em modelos de linguagem grandes.

    Porém, essa mudança de paradigma introduz dois desafios que toda equipe desenvolvendo agentes em ambiente de produção enfrenta inevitavelmente.

    O Primeiro Desafio: Filesystems Efêmeros

    O filesystem é temporário por natureza. Quando a sessão do agente termina, tudo que foi criado desaparece: dependências instaladas, código gerado, histórico local do git. Nada persiste.

    O Segundo Desafio: Operações Determinísticas sem Intermediários

    Quando seu fluxo de trabalho precisa executar operações determinísticas como npm test ou git push, você fica forçado a rotear essas operações através do modelo de linguagem grande (LLM) ou construir ferramentas customizadas fora do runtime. Nenhuma dessas opções é ideal.

    Duas Soluções Integradas do Amazon Bedrock AgentCore Runtime

    A AWS respondeu a esses desafios com duas capacidades inovadoras no Amazon Bedrock AgentCore Runtime: armazenamento de sessão gerenciado para persistir estado de filesystem do agente (em preview público) e execução de comando (InvokeAgentRuntimeCommand) para rodar comandos shell diretamente dentro da máquina virtual de rede (microVM) associada a cada sessão ativa do agente.

    Cada uma delas é útil isoladamente. Juntas, elas desbloqueiam workflows que não eram possíveis anteriormente.

    Compreendendo a Arquitetura do AgentCore Runtime

    Isolamento e Segurança da Sessão

    O AgentCore Runtime executa cada sessão em uma máquina virtual de rede dedicada com recursos isolados, incluindo seu próprio kernel, memória e filesystem. Essa arquitetura proporciona limites de segurança robustos, mas também implica que cada sessão começa com um filesystem limpo. Quando a microVM é finalizada — seja através de uma parada explícita ou timeout de inatividade — tudo que o agente criou desaparece.

    Na prática, isso significa que seu agente de codificação pode gastar vinte minutos estruturando um projeto inteiro: configurando diretórios, instalando dependências, gerando código boilerplate, configurando ferramentas de build. Você tira um intervalo para almoçar e, quando retorna invocando a mesma sessão, o agente começa do zero. Cada pacote reinstalado, cada arquivo regeneado. Vinte minutos de computação desperdiçados antes que o agente possa fazer trabalho útil novamente.

    As Soluções Anteriores e Suas Limitações

    Essa limitação poderia ser contornada escrevendo lógica de checkpoint para fazer upload de arquivos para Amazon Simple Storage Service (S3) antes de parar a sessão e baixá-los ao retomar, ou mantendo sessões vivas para evitar perda de estado. Essas soluções funcionam, mas não resolvem as limitações no nível de filesystem e adicionam complexidade ao código do agente.

    A mesma fricção existe para operações determinísticas. Quando o agente termina uma correção e você precisa rodar testes, rotear o comando através do LLM como uma chamada de ferramenta adiciona custo de tokens, latência e não-determinismo a uma operação previsível. A alternativa é construir lógica de orquestração separada fora do runtime, o que exige conectar-se ao filesystem do agente, adicionando ainda mais complexidade.

    Armazenamento de Sessão Gerenciado: Estado que Persiste

    O Conceito de Armazenamento Persistente

    A AWS introduziu armazenamento de sessão gerenciado para resolver o desafio dos filesystems efêmeros. Ele oferece ao agente um diretório persistente que sobrevive aos ciclos de parada e retomada. A persistência é integrada no runtime e configurada na criação do agente — tudo que é escrito naquele diretório persiste mesmo quando o ambiente de computação é substituído.

    Configurando Armazenamento Persistente

    Para configurar armazenamento persistente, você adiciona sessionStorage à configuração de filesystem do runtime do agente. Usando a interface de linha de comando:

    aws bedrock-agentcore create-agent-runtime \
      --agent-runtime-name "coding-agent" \
      --role-arn "arn:aws:iam::111122223333:role/AgentExecutionRole" \
      --agent-runtime-artifact '{"containerConfiguration": { "containerUri": "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest" }}' \
      --filesystem-configurations '[{ "sessionStorage": { "mountPath": "/mnt/workspace" } }]'

    Ou utilizando o AWS SDK para Python (Boto3):

    import boto3
    
    # Use the control plane client for creating and managing runtimes
    control_client = boto3.client('bedrock-agentcore-control', region_name='us-west-2')
    response = control_client.create_agent_runtime(
        agentRuntimeName='coding-agent',
        agentRuntimeArtifact={
            'containerConfiguration': {
                'containerUri': '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest'
            }
        },
        roleArn='arn:aws:iam::111122223333:role/AgentExecutionRole',
        protocolConfiguration={
            'serverProtocol': 'HTTP'
        },
        networkConfiguration={
            'networkMode': 'PUBLIC'
        },
        filesystemConfigurations=[{
            'sessionStorage': {
                'mountPath': '/mnt/workspace'
            }
        }]
    )

    Detalhes Importantes sobre Clientes Boto3

    Uma observação técnica importante: o AgentCore utiliza dois clientes Boto3 distintos. O cliente do plano de controle (bedrock-agentcore-control) gerencia operações de ciclo de vida do runtime como CreateAgentRuntime, GetAgentRuntime e DeleteAgentRuntime. O cliente do plano de dados (bedrock-agentcore) lida com operações de sessão como InvokeAgentRuntime e InvokeAgentRuntimeCommand.

    O caminho de montagem deve começar com /mnt seguido por um nome de pasta (por exemplo, /mnt/workspace ou /mnt/data). Após configurado, qualquer arquivo que o agente escreva nesse caminho é automaticamente persistido em armazenamento gerenciado.

    A Experiência de Parada e Retomada

    Você invoca seu agente e solicita que configure um projeto:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "session-001" \
      --payload '{"prompt": "Set up the project and install dependencies in /mnt/workspace"}'

    O agente baixa o código, instala os pacotes e gera as configurações na microVM dedicada a essa sessão. Depois, você para a sessão ou o timeout de inatividade dispara, e a microVM finaliza. Horas depois, você retorna e invoca com o mesmo ID de sessão:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "session-001" \
      --payload '{"prompt": "Run the tests and fix any failures"}'

    Um novo ambiente de computação (microVM) é provisionado e monta o mesmo armazenamento. O agente vê /mnt/workspace exatamente como deixou: arquivos de código, node_modules, artefatos de build e histórico .git intactos. O agente retoma seu trabalho sem necessidade de reinstalar ou regenerar. Do ponto de vista do agente, nada extraordinário está acontecendo — ele apenas lê e escreve em um diretório como faria normalmente. Seu código de agente não precisa mudar: sem APIs especiais, sem lógica de salvar/restaurar, sem serialização. Escreva um arquivo em /mnt/workspace, pare a sessão, retome, e o arquivo continua lá.

    Controle da Retenção de Dados

    Por padrão, os dados de armazenamento de sessão são retidos por 14 dias de inatividade. Se a sessão não for retomada dentro dessa janela, os dados são limpos automaticamente. Quando o endpoint do agente é atualizado para uma versão diferente e o mesmo ID de sessão é invocado, os dados da sessão são atualizados, oferecendo um contexto limpo para a nova versão.

    Um Fluxo de Trabalho de Múltiplos Dias na Prática

    Dia 1: Análise e Preparação

    Você invoca seu agente de codificação e solicita que baixe uma base de código, inspecione os arquivos e configure o ambiente de desenvolvimento:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "fefc1779-e5e7-49cf-a2c4-abaf478680c4" \
      --payload '{"prompt": "Download the code from s3://amzn-s3-demo-bucket/fastapi-demo-main.zip and list all files"}'

    O agente baixa o repositório para /mnt/workspace, extrai o conteúdo e relata:

    Arquivos no projeto fastapi-demo-main:

    • Dockerfile
    • README.md
    • main.py
    • requirements.txt

    Você fecha seu laptop e vai para casa.

    Dia 2: Implementação e Iteração

    Você invoca com o mesmo ID de sessão:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "fefc1779-e5e7-49cf-a2c4-abaf478680c4" \
      --payload '{"prompt": "Add a new function called hello_world to main.py"}'

    O agente enxerga o projeto exatamente como deixou. Ele modifica o main.py diretamente. Sem re-download, sem re-extração. Quando você pede ao agente para listar os arquivos, tudo continua lá, incluindo o main.py modificado com a nova função hello_world. A microVM de ontem já foi finalizada, mas o trabalho persiste.

    Execução de Comando Shell: Operações Determinísticas Diretas

    O Problema das Operações Determinísticas

    Agora que seu agente escreveu novo código, você precisa verificar que funciona. É onde a segunda capacidade entra em cena: InvokeAgentRuntimeCommand permite executar comandos shell diretamente dentro de uma sessão ativa do AgentCore Runtime e transmitir a saída de volta via HTTP/2.

    Quando Usar Cada Abordagem

    O conceito-chave é que agentes e comandos shell são bons em coisas diferentes. Use execução de comando para operações com comando conhecido (npm test, git push), operações que exigem execução determinística, fluxos que precisam de saída em tempo real de processos longos, validação de gate de fluxo de trabalho ou bootstrap de ambiente. Use o agente para operações que exigem raciocínio (“analise esse código e corrija o bug”), quando você quer que o LLM decida o que fazer, para trabalho criativo ou analítico.

    Quando seu agente termina de escrever código e você precisa rodar testes, não deveria precisar do LLM para isso. npm test é npm test. O comando é conhecido, o comportamento deve ser determinístico, e você quer a saída bruta, não a interpretação do LLM.

    Executando um Comando

    Execute um comando utilizando o AWS SDK para Python (Boto3):

    import boto3
    import sys
    
    client = boto3.client('bedrock-agentcore', region_name='us-west-2')
    response = client.invoke_agent_runtime_command(
        agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my-agent',
        runtimeSessionId='session-id-at-least-33-characters-long',
        body={
            'command': '/bin/bash -c "npm test"',
            'timeout': 60
        }
    )
    
    for event in response['stream']:
        if 'chunk' in event:
            chunk = event['chunk']
            if 'contentStart' in chunk:
                print("Command execution started")
            if 'contentDelta' in chunk:
                delta = chunk['contentDelta']
                if delta.get('stdout'):
                    print(delta['stdout'], end='')
                if delta.get('stderr'):
                    print(delta['stderr'], end='', file=sys.stderr)
            if 'contentStop' in chunk:
                stop = chunk['contentStop']
                print(f"\nExit code: {stop.get('exitCode')}, Status: {stop.get('status')}")

    Tipos de Eventos da Resposta

    A resposta transmite três tipos de evento em tempo real: contentStart (primeiro chunk, confirma que o comando começou), contentDelta (durante execução, contém saída stdout e/ou stderr) e contentStop (último chunk, contém exitCode e status — COMPLETED ou TIMED_OUT).

    Como a saída é transmitida conforme é produzida, você pode detectar uma falha nos primeiros segundos e reagir imediatamente, em vez de esperar pela execução completa.

    Detalhes Críticos: Mesmo Container, Mesmo Filesystem

    Um detalhe crítico: comandos executam no mesmo container, filesystem e ambiente que seu agente, não em um sidecar ou processo separado comunicando via socket. Um arquivo que o agente escreveu em /mnt/workspace/fix.py é imediatamente visível para um comando executando cat /mnt/workspace/fix.py. Não há etapa de sincronização, transferência de arquivo ou volume compartilhado a configurar.

    O AgentCore Runtime microVM não inclui ferramentas de desenvolvimento por padrão. Portanto, qualquer ferramenta que seus comandos dependem — git, npm ou runtimes de linguagem — deve ser adicionado na imagem de container ou instalado dinamicamente em tempo de execução.

    Características de Design que Moldam o Uso

    Os comandos seguem um design de execução única: cada comando dispara um novo processo bash, executa até conclusão (ou timeout) e retorna. Sem sessão shell persistente entre comandos. Isso alinha-se com como frameworks de agentes usam execução de comando: elaborar um comando, executá-lo, ler saída e decidir o próximo passo.

    A execução é não-bloqueante: execução de comando não bloqueia invocações de agente. Você pode invocar o agente e rodar comandos concorrentemente na mesma sessão.

    Cada comando é stateless: cada comando inicia limpo, sem histórico de shell e variáveis de ambiente de comandos anteriores não persistem. Se você precisa de estado, codifique na comando: cd /workspace && export NODE_ENV=test && npm test.

    Casos de Uso Práticos

    Equipes estão construindo com essas capacidades: automação de testes — após o agente escrever código, rodar npm test ou pytest como comando, transmitir saída e realimentar falhas específicas ao agente para iteração; fluxos git — branching, commit e push são determinísticos, rodar como comandos mantém lógica de controle de versão fora do LLM; bootstrap de ambiente — clonar repos, instalar pacotes, configurar ferramentas de build antes do agente começar, muito mais rápido e confiável como comandos diretos; pipelines de build — qualquer coisa com comando conhecido que deve rodar exatamente como especificado (cargo build --release, mvn package, go build); gates de validação — rodar linters, verificadores de tipo, scanners de segurança como gate após o agente escrever código mas antes de fazer commit; debug — inspecionar ambiente de runtime, verificar pacotes instalados, uso de disco, processos rodando. Tudo útil para entender falhas de agente.

    Melhor Juntas: O Filesystem como Contexto Compartilhado

    A Sinergia das Duas Capacidades

    Armazenamento de sessão gerenciado resolve o desafio de filesystems efêmeros. Execução de comando resolve o desafio de operações determinísticas. Cada uma é valiosa isoladamente, mas são mais poderosas juntas porque compartilham o mesmo filesystem que une todo o fluxo de trabalho.

    Quando seu runtime de agente tem armazenamento de sessão gerenciado configurado em /mnt/workspace, tudo opera no mesmo diretório persistente: InvokeAgentRuntime escreve código, gera artefatos e gerencia arquivos em /mnt/workspace. InvokeAgentRuntimeCommand executa testes, operações git e builds lendo e escrevendo no mesmo /mnt/workspace. Você para a sessão, computação (microVM) desliga, /mnt/workspace persiste. Retorna no dia seguinte, nova computação monta o mesmo armazenamento. Tanto agente quanto execute command veem os mesmos arquivos. O filesystem torna-se o contexto compartilhado que conecta raciocínio do agente, operações determinísticas e tempo.

    Exemplo Integrado de Uso

    Aqui está como parece em código:

    import boto3
    import json
    
    client = boto3.client('bedrock-agentcore', region_name='us-west-2')
    AGENT_ARN = 'arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my-coding-agent'
    SESSION_ID = 'fefc1779-e5e7-49cf-a2c4-abaf478680c4'
    
    def run_command(command, timeout=60):
        """Execute a shell command and return the exit code."""
        response = client.invoke_agent_runtime_command(
            agentRuntimeArn=AGENT_ARN,
            runtimeSessionId=SESSION_ID,
            contentType='application/json',
            accept='application/vnd.amazon.eventstream',
            body={'command': command, 'timeout': timeout}
        )
        for event in response.get('stream', []):
            if 'chunk' in event and 'contentStop' in event['chunk']:
                return event['chunk']['contentStop'].get('exitCode')
        return None
    
    # Step 1: The agent analyzes the issue and writes a fix
    # (Reasoning task → use InvokeAgentRuntime)
    response = client.invoke_agent_runtime(
        agentRuntimeArn=AGENT_ARN,
        runtimeSessionId=SESSION_ID,
        payload=json.dumps({
            "prompt": "Read JIRA-1234 and implement the fix in /mnt/workspace"
        }).encode()
    )
    
    # Process agent response...
    
    # Step 2: Run the test suite
    # (Deterministic operation → use InvokeAgentRuntimeCommand)
    exit_code = run_command('/bin/bash -c "cd /mnt/workspace && npm test"', timeout=300)
    
    # Step 3: If tests pass, commit and push
    # (Deterministic operation → use InvokeAgentRuntimeCommand)
    if exit_code == 0:
        run_command('/bin/bash -c "cd /mnt/workspace && git checkout -b fix/JIRA-1234"')
        run_command('/bin/bash -c "cd /mnt/workspace && git add -A && git commit -m \'Fix JIRA-1234\'"')
        run_command('/bin/bash -c "cd /mnt/workspace && git push origin fix/JIRA-1234"')

    O agente escreve o código enquanto a plataforma executa os comandos. Cada um faz o que foi desenhado para fazer. Como /mnt/workspace é respaldado por armazenamento de sessão gerenciado, você pode parar essa sessão, retornar no dia seguinte, e todo o workspace continua lá pronto para o agente continuar iterando. Esse é o padrão: o agente raciocina, execute command atua, e o filesystem persistente lembra.

    Primeiros Passos

    Ambas as capacidades já estão disponíveis. Aqui está como começar a usá-las:

    Armazenamento de sessão gerenciado (preview público) — Adicione filesystemConfigurations com sessionStorage ao chamar CreateAgentRuntime. Especifique um caminho de montagem começando com /mnt. Tudo que seu agente escrever naquele caminho persiste entre ciclos de parada/retomada. Dados máximos permitidos são 1 GB por sessão.

    Execução de comando — Chame InvokeAgentRuntimeCommand com uma string de comando e timeout em qualquer sessão ativa. O comando executa no mesmo container que seu agente, com acesso ao mesmo filesystem.

    Para começar com tutoriais e código de exemplo:

    Conclusão

    Tudo começou com dois desafios: agentes que perdem seu trabalho quando sessões param e operações determinísticas que precisam ser roteadas através do LLM ou construídas fora do runtime. Armazenamento de sessão gerenciado e execução de comando resolvem ambos esses desafios. O filesystem compartilhado entre eles cria um loop de desenvolvimento onde o agente raciocina, comandos executam e o trabalho persiste entre sessões. As três capacidades formam um loop que não quebra quando você fecha seu laptop. Teste as novas capacidades do Amazon Bedrock AgentCore e compartilhe o que você constrói.

    Fonte

    Persist session state with filesystem configuration and execute shell commands (https://aws.amazon.com/blogs/machine-learning/persist-session-state-with-filesystem-configuration-and-execute-shell-commands/)

  • Simulando Usuários Realistas para Avaliar Agentes de IA em Múltiplas Rodadas com Strands Evals

    Por que avaliar agentes em múltiplas rodadas é fundamentalmente diferente

    A avaliação de interações single-turn (uma única rodada) segue um padrão bem estabelecido: você fornece uma entrada, coleta a saída e julga o resultado. Estruturas como o Strands Evaluation SDK sistematizam esse processo através de avaliadores que medem helpfulness (utilidade), faithfulness (fidelidade) e tool usage (uso de ferramentas). Publicações anteriores cobrem como construir suites de avaliação abrangentes para agentes de IA usando essas capacidades.

    No entanto, as conversas em produção raramente param em uma única rodada. Usuários reais se envolvem em trocas que se desenrolam ao longo de múltiplas rodadas. Eles fazem perguntas de acompanhamento quando as respostas são incompletas, mudam de direção quando novas informações surgem e expressam frustração quando suas necessidades não são atendidas. Um assistente de viagens que funciona bem com “Compre um voo para Paris” isoladamente pode sofrer quando o mesmo usuário pergunta depois: “Na verdade, podemos olhar trens?” ou “E quanto a hotéis perto da Torre Eiffel?”

    Imagem original — fonte: Aws

    O desafio da escala em avaliações multi-rodada

    Testar esses padrões dinâmicos exige mais do que casos de teste estáticos com entradas e saídas predefinidas. A dificuldade central é a escala: você não pode conduzir manualmente centenas de conversas multi-rodada toda vez que seu agente muda. Além disso, fluxos de conversa roteirizados o prendem a caminhos predeterminados que não refletem como usuários reais se comportam.

    O que equipes de avaliação precisam é de uma forma de gerar usuários realistas e orientados por objetivos programaticamente, permitindo que eles conversem naturalmente com um agente ao longo de múltiplas rodadas. A AWS aborda esse desafio com o ActorSimulator no Strands Evaluation SDK, que oferece simulação estruturada de usuários integrada ao seu pipeline de avaliação.

    O que torna um usuário simulado efetivo

    A avaliação baseada em simulação é bem estabelecida em outras disciplinas de engenharia. Simuladores de voo testam respostas de pilotos a cenários que seriam perigosos ou impossíveis de reproduzir no mundo real. Engines de jogos usam agentes orientados por IA para explorar milhões de caminhos de comportamento de jogador antes do lançamento. O mesmo princípio se aplica a IA conversacional.

    Um usuário simulado útil começa com uma persona consistente. Um que se comporta como especialista técnico em uma rodada e novato confuso na próxima produz dados de avaliação não confiáveis. Consistência significa manter o mesmo estilo de comunicação, nível de expertise e traços de personalidade em cada troca, assim como uma pessoa real faria.

    Igualmente importante é o comportamento orientado por objetivos. Usuários reais chegam a um agente com algo que querem realizar. Eles persistem até alcançar o objetivo, ajustam sua abordagem quando algo não está funcionando e reconhecem quando o objetivo foi atingido. Sem objetivos explícitos, um usuário simulado tende a encerrar conversas muito cedo ou continuar perguntando indefinidamente, nenhum dos quais reflete o uso real.

    O usuário simulado também deve responder adaptativamente ao que o agente diz, não seguir um script predeterminado. Quando o agente faz uma pergunta de esclarecimento, o ator deve respondê-la em caráter. Se a resposta for incompleta, o ator segue em relação ao que foi deixado de fora. Se a conversa se desviar do tópico, o ator a reconecta ao objetivo original. Esses comportamentos adaptativos tornam as conversas simuladas valiosas como dados de avaliação porque exercitam a mesma dinâmica de conversa que seu agente enfrenta em produção.

    Como o ActorSimulator funciona

    O ActorSimulator implementa essas qualidades de simulação através de um sistema que encapsula um Strands Agent configurado para se comportar como uma persona de usuário realista. O processo começa com geração de perfil. Dado um caso de teste contendo uma consulta de entrada e uma descrição de tarefa opcional, o ActorSimulator usa um Modelo de Linguagem Grande (LLM) para criar um perfil de ator completo.

    Um caso de teste com entrada “Preciso de ajuda para reservar um voo para Paris” e descrição de tarefa “Completar reserva de voo dentro do orçamento” pode produzir um viajante consciente do orçamento com experiência iniciante e um estilo de comunicação casual. A geração de perfil dá a cada conversa simulada um caráter distinto e consistente.

    Imagem original — fonte: Aws

    Gerenciamento de conversa e rastreamento de objetivos

    Com o perfil estabelecido, o simulador gerencia a conversa rodada por rodada. Ele mantém o histórico completo da conversa e gera cada resposta em contexto, mantendo o comportamento do usuário simulado alinhado com seu perfil e objetivos ao longo de todo o diálogo.

    Quando seu agente aborda apenas parte do pedido, o usuário simulado naturalmente faz perguntas de acompanhamento sobre as lacunas. Uma pergunta de esclarecimento do agente recebe uma resposta que permanece consistente com a persona. A conversa se sente orgânica porque cada resposta reflete tanto a persona do ator quanto tudo o que foi dito até então.

    O rastreamento de objetivo funciona junto com a conversa. O ActorSimulator inclui uma ferramenta integrada de avaliação de conclusão de objetivo que o usuário simulado pode invocar para avaliar se seu objetivo original foi atendido. Quando o objetivo é satisfeito ou o usuário simulado determina que o agente não pode completar seu pedido, o simulador emite um sinal de parada e a conversa termina. Se o máximo de rodadas for atingido antes do objetivo ser cumprido, a conversa também para. Isso oferece um indicador de que o agente pode não estar resolvendo as necessidades do usuário de forma eficiente.

    Cada resposta do usuário simulado também inclui raciocínio estruturado ao lado do texto da mensagem. Você pode inspecionar por que o usuário simulado escolheu dizer o que disse, se estava seguindo informações faltantes, expressando confusão ou redirecionando a conversa. Essa transparência é valiosa durante o desenvolvimento da avaliação porque você pode ver o raciocínio por trás de cada rodada, facilitando o rastreamento de onde as conversas têm sucesso ou falham.

    Iniciando com o ActorSimulator

    Para começar, você precisará instalar o Strands Evaluation SDK usando:

    pip install strands-agents-evals

    Para instruções passo a passo, você pode consultar a documentação ou nosso post anterior para mais detalhes. Colocar esses conceitos em prática requer código mínimo. Você define um caso de teste com uma consulta de entrada e uma descrição de tarefa que captura o objetivo do usuário. O ActorSimulator cuida da geração de perfil, gerenciamento de conversa e rastreamento de objetivo automaticamente.

    O exemplo a seguir avalia um agente assistente de viagens através de uma conversa simulada multi-rodada:

    from strands import Agent
    from strands_evals import ActorSimulator, Case, Experiment
    
    # Define your test case
    case = Case(
        input="I want to plan a trip to Tokyo with hotel and activities",
        metadata={"task_description": "Complete travel package arranged"}
    )
    
    # Create the agent you want to evaluate
    agent = Agent(
        system_prompt="You are a helpful travel assistant.",
        callback_handler=None
    )
    
    # Create user simulator from test case
    user_sim = ActorSimulator.from_case_for_user_simulator(
        case=case, max_turns=5
    )
    
    # Run the multi-turn conversation
    user_message = case.input
    conversation_history = []
    
    while user_sim.has_next():
        # Agent responds to user
        agent_response = agent(user_message)
        agent_message = str(agent_response)
        conversation_history.append({
            "role": "assistant",
            "content": agent_message
        })
        
        # Simulator generates next user message
        user_result = user_sim.act(agent_message)
        user_message = str(user_result.structured_output.message)
        conversation_history.append({
            "role": "user",
            "content": user_message
        })
    
    print(f"Conversation completed in {len(conversation_history) // 2} turns")

    O loop de conversa continua até que has_next() retorne False, o que acontece quando os objetivos do usuário simulado são atingidos, o usuário simulado determina que o agente não pode completar o pedido, ou o limite máximo de rodadas é atingido. O conversation_history resultante contém a transcrição completa multi-rodada, pronta para avaliação.

    Integração com pipelines de avaliação

    Um loop de conversa standalone é útil para experimentos rápidos, mas a avaliação em produção exige capturar traces e alimentá-los em seu pipeline de avaliador. O próximo exemplo combina o ActorSimulator com coleta de telemetria OpenTelemetry e mapeamento de sessão do Strands Evals. A função de tarefa executa uma conversa simulada e coleta spans de cada rodada, depois os mapeia em uma sessão estruturada para avaliação:

    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter
    from strands import Agent
    from strands_evals import ActorSimulator, Case, Experiment
    from strands_evals.evaluators import HelpfulnessEvaluator
    from strands_evals.telemetry import StrandsEvalsTelemetry
    from strands_evals.mappers import StrandsInMemorySessionMapper
    
    # Setup telemetry for capturing agent traces
    telemetry = StrandsEvalsTelemetry()
    memory_exporter = InMemorySpanExporter()
    span_processor = BatchSpanProcessor(memory_exporter)
    telemetry.tracer_provider.add_span_processor(span_processor)
    
    def evaluation_task(case: Case) -> dict:
        # Create simulator
        user_sim = ActorSimulator.from_case_for_user_simulator(
            case=case, max_turns=3
        )
        
        # Create agent
        agent = Agent(
            system_prompt="You are a helpful travel assistant.",
            callback_handler=None
        )
        
        # Accumulate spans across conversation
        all_target_spans = []
        user_message = case.input
        
        while user_sim.has_next():
            memory_exporter.clear()
            agent_response = agent(user_message)
            agent_message = str(agent_response)
            
            # Capture telemetry
            turn_spans = list(memory_exporter.get_finished_spans())
            all_target_spans.extend(turn_spans)
            
            # Generate next user message
            user_result = user_sim.act(agent_message)
            user_message = str(user_result.structured_output.message)
        
        # Map to session for evaluation
        mapper = StrandsInMemorySessionMapper()
        session = mapper.map_to_session(
            all_target_spans, session_id="test-session"
        )
        
        return {"output": agent_message, "trajectory": session}
    
    # Create evaluation dataset
    test_cases = [
        Case(
            name="booking-simple",
            input="I need to book a flight to Paris next week",
            metadata={
                "category": "booking",
                "task_description": "Flight booking confirmed"
            }
        )
    ]
    
    evaluator = HelpfulnessEvaluator()
    dataset = Experiment(cases=test_cases, evaluator=evaluator)
    
    # Run evaluations
    report = Experiment.run_evaluations(evaluation_task)
    report.run_display()
    Imagem original — fonte: Aws

    Essa abordagem captura traces completos do comportamento do seu agente ao longo de rodadas de conversa. Os spans incluem chamadas de ferramentas, invocações de modelo e informações de tempo para cada rodada na conversa simulada. Ao mapear esses spans em uma sessão estruturada, você disponibiliza a interação multi-rodada completa para avaliadores como GoalSuccessRateEvaluator e HelpfulnessEvaluator, que podem então avaliar a conversa como um todo, em vez de rodadas isoladas.

    Perfis de ator personalizados para testes direcionados

    A geração de perfil automático funciona bem para a maioria dos cenários de avaliação, mas alguns objetivos de teste exigem personas específicas. Você pode querer verificar se seu agente maneja um usuário especialista impaciente de forma diferente de um iniciante paciente, ou se ele responde apropriadamente a um usuário com necessidades específicas do domínio.

    Para esses casos, o ActorSimulator aceita um perfil de ator totalmente definido que você controla:

    from strands_evals.types.simulation import ActorProfile
    from strands_evals import ActorSimulator
    from strands_evals.simulation.prompt_templates.actor_system_prompt import (
        DEFAULT_USER_SIMULATOR_PROMPT_TEMPLATE
    )
    
    # Define a custom actor profile
    actor_profile = ActorProfile(
        traits={
            "personality": "analytical and detail-oriented",
            "communication_style": "direct and technical",
            "expertise_level": "expert",
            "patience_level": "low"
        },
        context="Experienced business traveler with elite status who values efficiency",
        actor_goal="Book business class flight with specific seat preferences and lounge access"
    )
    
    # Initialize simulator with custom profile
    user_sim = ActorSimulator(
        actor_profile=actor_profile,
        initial_query="I need to book a business class flight to London next Tuesday",
        system_prompt_template=DEFAULT_USER_SIMULATOR_PROMPT_TEMPLATE,
        max_turns=10
    )

    Ao definir traços como nível de paciência, estilo de comunicação e expertise, você pode testar sistematicamente como seu agente funciona em diferentes segmentos de usuários. Um agente que se sai bem com usuários pacientes e não-técnicos, mas mal com especialistas impacientes, revela uma lacuna de qualidade específica que você pode abordar. Executar o mesmo objetivo em múltiplas configurações de persona transforma a simulação de usuário em uma ferramenta para entender as forças e fraquezas do seu agente por tipo de usuário.

    Melhores práticas para avaliação baseada em simulação

    Essas melhores práticas ajudam a aproveitar ao máximo a avaliação baseada em simulação:

    • Defina max_turns com base na complexidade da tarefa, usando 3-5 para tarefas focadas e 8-10 para workflows multi-etapa. Se a maioria das conversas atingir o limite sem completar o objetivo, aumente-o.
    • Escreva descrições de tarefa específicas que o simulador possa avaliar. “Ajude o usuário a reservar um voo” é muito vago para julgar a conclusão de forma confiável, enquanto “reserva de voo confirmada com datas, destino e preço” oferece um alvo concreto.
    • Use perfis gerados automaticamente para ampla cobertura em tipos de usuários e perfis personalizados para reproduzir padrões específicos de seus logs de produção, como um especialista impaciente ou um usuário de primeira vez.
    • Concentre-se em padrões em seu suite de testes em vez de transcritos individuais. Redirecionamentos consistentes do usuário simulado sugerem que o agente está se desviando do tópico, e taxas de conclusão de objetivo em declínio após uma mudança de agente apontam para uma regressão.
    • Comece com um pequeno conjunto de casos de teste cobrindo seus cenários mais comuns e expanda para casos extremos e personas adicionais conforme sua prática de avaliação amadurece.

    Conclusão

    A AWS demonstra como o ActorSimulator no Strands Evals possibilita avaliação sistemática multi-rodada de agentes de IA conversacional através de simulação realista de usuários. Em vez de depender de casos de teste estáticos que capturam apenas trocas únicas, você pode definir objetivos e personas e deixar usuários simulados interagirem naturalmente com seu agente em conversas adaptativas.

    Para começar, explore os exemplos funcionais no repositório de exemplos do Strands Agents. Para equipes que avaliam agentes implantados através do Amazon Bedrock AgentCore, o exemplo de avaliações do AgentCore demonstra como simular interações com agentes implantados. Comece com um punhado de casos de teste representando seus cenários de usuário mais comuns, execute-os através do ActorSimulator e avalie os resultados. Conforme sua prática de avaliação amadurece, expanda para cobrir mais personas, casos extremos e padrões de conversa.

    Fonte

    Simulate realistic users to evaluate multi-turn AI agents in Strands Evals (https://aws.amazon.com/blogs/machine-learning/simulate-realistic-users-to-evaluate-multi-turn-ai-agents-in-strands-evals/)

  • Quatro Princípios de Segurança para Sistemas de IA Autônoma

    O Desafio Único da IA Autônoma

    A chegada da IA autônoma marca uma mudança qualitativa em como o software funciona. Diferentemente do software tradicional, que executa instruções determinísticas, ou da IA generativa, que responde a comandos humanos gerando saídas para revisão humana, a IA autônoma opera de forma fundamentalmente diferente.

    Agentes de IA conectam-se a ferramentas de software e APIs, utilizando modelos de linguagem de grande escala (Large Language Models — LLMs) como mecanismos de raciocínio para planejar e executar sequências de ações de forma autônoma — à velocidade das máquinas — com consequências no mundo real. Essa transformação traz questões inéditas para a segurança da informação.

    Em janeiro de 2026, o Centro para Padrões de IA e Inovação (CAISI, na sigla em inglês) do NIST emitiu um pedido de informações (Request for Information — RFI) buscando contribuições da indústria sobre como proteger esses sistemas. A AWS respondeu baseando-se em sua experiência construindo e operando serviços de IA autônoma, apresentando quatro princípios de segurança que formam o núcleo dessa abordagem.

    Por Que Isso Importa

    Uma análise conservadora de riscos e benefícios mostra claramente que os benefícios da IA autônoma superam os riscos em muitos domínios. A adoção acelerada dessa tecnologia em negócios e governo confirma essa conclusão. Porém, justamente porque os agentes são valiosos por sua autonomia e adaptabilidade, essas características criam desafios de segurança.

    Um sistema autônomo que executa uma ação não intencional faz isso à velocidade da máquina, antes que qualquer intervenção humana seja possível. Diferentemente de pessoas que fazem pausas ou escalações quando algo parece incomum, agentes podem não reconhecer naturalmente ambiguidades evidentes para humanos, nem compreender intuitivamente fronteiras políticas não explicitadas.

    A boa notícia é que a resposta de segurança para IA autônoma não precisa começar do zero. Frameworks de segurança consolidados — incluindo o NIST Cybersecurity Framework, o NIST AI Risk Management Framework e o Secure Software Development Framework — continuam relevantes. O desafio é estendê-los para considerações específicas de agentes, em vez de substituí-los.

    Os Quatro Princípios de Segurança

    Esses princípios partem da premissa de que IA autônoma não exige um novo paradigma de segurança, mas sim a evolução de práticas existentes. Os dois primeiros abordam o que continua válido; os dois últimos tratam do que é genuinamente novo.

    Princípio 1: Práticas de Ciclo de Vida Seguro em Todos os Componentes

    Sistemas de IA autônoma combinam componentes de software tradicional (APIs, bancos de dados, lógica de orquestração) com elementos de IA, como modelos fundamentais, templates de prompts e pipelines de recuperação de dados. Um ciclo de vida de desenvolvimento seguro deve cobrir ambos os conjuntos.

    Para componentes tradicionais, práticas estabelecidas como revisão de código, análise estática, varredura de dependências e modelagem de ameaças permanecem essenciais, reconhecendo que essas próprias práticas estão evoluindo com o auxílio de ferramentas baseadas em IA.

    Para componentes de IA, o desafio é diferente. Modelos fundamentais são probabilísticos, o que significa que testes de regressão tradicionais são necessários, mas insuficientes. Organizações devem complementar com testes comportamentais, avaliação adversarial e monitoramento contínuo para validar que componentes de IA operam dentro de parâmetros esperados.

    A reavaliação regular é igualmente importante para lidar com deriva comportamental. Modelos recebem atualizações que podem alterar seu comportamento. Templates de prompts evoluem conforme equipes refinam capacidades do agente. Novas ferramentas e fontes de dados expandem a superfície operacional. Cada mudança pode introduzir novos modos de falha ou problemas de segurança.

    Organizações devem tratar a avaliação como prática operacional contínua, não como uma barreira única no tempo. Isso inclui testes automatizados após atualizações de modelo, exercícios de red team contra agentes em produção e monitoramento que detecta deriva comportamental ao longo do tempo.

    Princípio 2: Controles de Segurança Tradicionais Continuam Totalmente Aplicáveis

    Embora IA autônoma introduza novas considerações, ela não torna obsoletos os riscos de segurança existentes. O conjunto completo de controles de segurança tradicionais permanece aplicável. Um sistema de IA autônoma combina software tradicional com o novo loop de processamento LLM-mais-ferramentas. Organizações devem proteger software, ferramentas e configurações existentes contra riscos conhecidos para prover uma base sólida para os elementos de IA.

    Escalação de privilégio, problemas de deputy confuso, sequestro de sessão, injeção de código e riscos de cadeia de suprimentos estendem-se diretamente para sistemas autônomos. Alguns desses riscos aumentam em contextos de IA autônoma. Agentes operam em maior escala e velocidade que atores humanos, o que significa que privilégios excessivos carregam maior potencial para consequências não intencionais.

    Aplicar princípios de menor privilégio (least privilege) à gestão de acesso em contexto autônomo é tão importante — se não mais — que em sistemas tradicionais. A superfície de cadeia de suprimentos também é mais ampla. Sistemas autônomos consomem não apenas dependências de código de terceiros, mas também modelos fundamentais, plugins, servidores de ferramentas e fontes de recuperação de dados.

    Agentes que invocam APIs, consultam bancos de dados ou geram código criam novas superfícies potenciais de injeção nos limites das ferramentas. Controles específicos de IA devem ser adições a essa segurança fundamental, não substituições.

    Princípio 3: Controles Determinísticos Externos como Ponto de Partida

    Este é o princípio arquitetônico mais importante para segurança de IA autônoma. Organizações devem fazer cumprir segurança através de controles determinísticos e no nível de infraestrutura, externos ao loop de raciocínio do agente, e não através do próprio raciocínio do agente, guardrails internos ou instruções baseadas em prompts.

    A lógica é simples: LLMs são mecanismos de raciocínio probabilístico, não mecanismos de execução de segurança. Desenvolvedores podem instruir um LLM a recusar certas solicitações, mas técnicas de prompt injection podem contornar essas instruções. Um LLM pode ser instruído a respeitar limites de acesso, mas não possui mecanismo confiável para mantê-los.

    Tentar restringir comportamento de agentes apenas através de prompting ou alignment vai contra a própria proposta de valor dos agentes: sua capacidade de adaptar-se dinamicamente a situações novas. Segurança eficaz coloca controles totalmente especificados e determinísticos fora do agente, governando quais ferramentas ele pode acessar, quais operações pode realizar e quais dados pode alcançar. Manipulação de modelo não consegue contornar esses controles.

    Isso é descrito como a caixa de segurança (security box). É externa ao agente, determinística em sua execução e abrangente em cobertura. Cada interação entre agente e o mundo externo passa por ela. O Agentic AI Security Scoping Matrix ajuda organizações a calibrar o rigor desses controles baseado no nível de autonomia do sistema. Os escopos variam desde sistemas que exigem aprovação humana explícita antes de cada ação até sistemas totalmente autônomos que iniciam suas próprias atividades baseados em eventos externos.

    A caixa de segurança não é uma limitação ao valor do agente. É a precondição para alcançar esse valor responsavelmente. Conforme a tecnologia de IA autônoma amadurece, a própria caixa provavelmente evoluirá para incluir elementos de IA — agentes de IA especializados em controlar o escopo de outros agentes podem eventualmente substituir alguns constrangimentos determinísticos, usando novas informações e contexto para tomar decisões automatizadas mais apropriadas do que aquelas que poderiam ser alcançadas por humanos gerenciando controles determinísticos complexos.

    Princípio 4: Maior Autonomia Deve Ser Conquistada Através de Avaliação Contínua

    Organizações devem expandir autonomia de agentes progressivamente baseadas em desempenho demonstrado, não concedê-la por padrão. O ponto de partida é tomada de decisão humana para operações de alta consequência. Quando um agente encontra uma ação que poderia modificar dados críticos de produção, iniciar transações financeiras ou comunicar informações sensíveis externamente, um humano toma a decisão final. O agente recomenda, e um humano aprova ou rejeita.

    Essa abordagem traz um risco conhecido: se toda ação de agente exigir aprovação humana, o volume de decisões pode sobrecarregar revisores. A aprovação torna-se reflexiva em vez de deliberada, mudando responsabilidade para humanos posicionados para falhar. Organizações devem limitar supervisão humana a operações genuinamente de alta consequência e resistir à tentação de exigir designs human-in-the-loop para ações rotineiras que carregam baixo risco.

    O caminho da supervisão humana para autonomia expandida passa por avaliação. Conforme organizações sistematicamente registram o que o agente recomendou, o que o humano decidiu e o que realmente aconteceu, constroem base de evidências para expandir autonomia. Quando dados mostram alinhamento sustentado, organizações podem mudar de aprovação prévia para revisão pós-fato, e eventualmente para autonomia total para tipos de operação específicos.

    Essa progressão deve acontecer no nível de operação ou fluxo de trabalho, não através de ampla gama de tarefas não relacionadas. Essa progressão não é unidirecional. Organizações devem estar preparadas para reintroduzir supervisão humana quando evidência justificar. Algumas fronteiras determinísticas provavelmente permanecem permanentes no futuro próximo — essas fronteiras existem não porque o agente não conquistou confiança, mas porque consequências de certas ações são inaceitáveis sob análise de risco razoável.

    O modelo geral é autonomia conquistada através de competência demonstrada, governada por avaliação, limitada por constrangimentos permanentes e sujeita a revisão contínua.

    Dos Princípios à Prática

    Os quatro princípios definem os objetivos. Alcançá-los exige blocos arquitetônicos específicos que compõem a caixa de segurança e a arquitetura de segurança mais ampla. A AWS descreveu esses blocos em maior detalhe em sua resposta ao NIST e os implementou no Amazon Bedrock AgentCore, um framework para construir, implantar e operar sistemas de IA autônoma com segurança incorporada desde o início.

    Isolamento de Computação

    Ambientes de computação de agentes devem isolar execução, prevenir vazamento de dados entre agentes e conter agentes dentro de limites definidos. O Amazon Bedrock AgentCore executa agentes em Firecracker, um gerenciador de máquina virtual open source escrito em Rust. Firecracker fornece micro-VMs leves apoiadas por Linux KVM e virtualização baseada em hardware, entregando velocidade de containers com propriedades de isolamento de máquinas virtuais completas. Elementos críticos de segurança do Firecracker foram formalmente verificados por equipes AWS, adicionando garantia além da segurança de memória que Rust oferece.

    Identidade e Gestão de Acesso

    Agentes exigem suas próprias identidades, armazenamento seguro de credenciais e autorização com menor privilégio executada no nível de infraestrutura. O AgentCore Identity fornece identidades de máquina para agentes, gerencia fluxos OAuth e credenciais seguras, e integra-se com o AWS Identity and Access Management (IAM) para controle de acesso fino. Suporta controle de acesso baseado em atributos e mantém cadeias de delegação rastreáveis para que a relação entre ações de agente e o usuário invocador permaneça auditável.

    Acesso a Ferramentas e Execução de Políticas

    Cada ferramenta que um agente pode acessar expande tanto sua utilidade quanto seu risco potencial. Gerenciar acesso a ferramentas individualmente entre agentes cria uma explosão combinatória ingerenciável. O AgentCore Gateway atua como intermediário centralizado entre agentes e ferramentas, executando autenticação e autorização em um único ponto de controle. Consegue inspecionar chamadas de ferramentas até parâmetros individuais, não apenas no nível de API. O AgentCore Policy, construído sobre a linguagem de autorização open source Cedar, adiciona execução de política formalmente verificada. Equipes conseguem escrever políticas Cedar em linguagem natural e então revisá-las, combinando flexibilidade de LLMs com rigor de métodos formais.

    Observabilidade

    Infraestrutura de observabilidade deve capturar contexto suficiente para monitoramento em tempo real e investigação, e deve estar protegida dos agentes que monitora. Organizações não permitiriam que funcionários editassem seus próprios registros de auditoria, e o mesmo princípio aplica-se a agentes. O AgentCore oferece observabilidade através do AgentCore Gateway, telemetria em nível de sessão e rastreamentos detalhados que registram mudanças de estado interno. Essas capacidades conseguem estender-se a agentes rodando fora do AgentCore também.

    Ambiente de Execução de Modelo

    A segurança do ambiente de execução de modelo importa tanto quanto a segurança do agente em si. O Amazon Bedrock executa modelos em ambientes de rede isolados onde nem AWS nem provedores de modelo acessam prompts e respostas de clientes. Quando clientes ativam logging, esses logs são encriptados em repouso e protegidos por chaves de encriptação gerenciadas pelo cliente. Esse isolamento arquitetônico é razão-chave para adoção por clientes governamentais e corporativos.

    Controles determinísticos externos são complementados por controles dentro do loop de processamento de IA. O Amazon Bedrock Guardrails inspeciona prompts e respostas usando pequenos modelos de IA chamados classificadores que lidam com desafios como prompt injection. Verificações de Raciocínio Automatizado vão além, permitindo desenvolvedores criar modelo formal de um domínio de conhecimento e verificar que saídas de LLM conformam com ele, produzindo resultados que são determinísticos e comprovadamente corretos.

    Caminho Adiante

    IA autônoma muda como software opera, mas a resposta de segurança constrói sobre décadas de prática estabelecida. Frameworks existentes oferecem a fundação certa. A tarefa é estender frameworks existentes para considerações específicas de agentes. Organizações devem aplicar práticas de ciclo de vida de desenvolvimento seguro a componentes de IA e manter controles de segurança tradicionais. Devem fazer cumprir segurança através de controles determinísticos externos ao agente e conquistar maior autonomia através de avaliação sistemática.

    Esses princípios não são teóricos — refletem experiência operacional que a AWS conquistou construindo e operando serviços de IA autônoma. Estão embutidos em como a empresa desenha sua infraestrutura. Conforme NIST desenvolve orientação baseada em contribuições da indústria, a AWS continuará investindo em ajudar clientes a construir e operar sistemas de IA autônoma com confiança.

    Para aprender mais sobre como a AWS ajuda clientes a proteger suas cargas de trabalho de IA, visite o AWS AI Security ou leia a resposta da Amazon ao Pedido de Informações do CAISI sobre Considerações de Segurança para Agentes de Inteligência Artificial.

    Fonte

    Four security principles for agentic AI systems (https://aws.amazon.com/blogs/security/four-security-principles-for-agentic-ai-systems/)