Blog

  • Gerencie os SageMaker HyperPod Spaces diretamente pelo SageMaker Studio

    O que mudou

    A AWS introduziu a capacidade de criar e gerenciar Amazon SageMaker Spaces para HyperPod diretamente pela interface do SageMaker Studio. Antes, essa operação dependia do HyperPod CLI ou de comandos kubectl — o que funcionava bem para administradores de infraestrutura, mas criava fricção para cientistas de dados que preferem uma interface visual.

    Com a novidade, é possível criar, configurar, iniciar, parar e abrir Spaces sem sair do navegador. A mudança reduz o tempo entre o acesso ao cluster e o início do desenvolvimento a poucos cliques.

    Contexto: o que é o HyperPod

    O Amazon SageMaker HyperPod é uma infraestrutura dedicada para treinamento e inferência de modelos fundacionais (FM — Foundation Models) em larga escala. Com orquestração via Amazon Elastic Kubernetes Service (EKS), equipes conseguem rodar jobs de treinamento distribuído em centenas de aceleradores com resiliência embutida e recuperação automática de falhas.

    Além do treinamento, o HyperPod estende essa mesma infraestrutura orquestrada por EKS para servir inferência de baixa latência e escalável para modelos fundacionais com bilhões de parâmetros.

    Ainda no início deste ano, a AWS lançou o SageMaker Spaces para HyperPod — um complemento que permite criar ambientes de desenvolvimento interativo diretamente nos clusters HyperPod EKS. Com isso, as organizações passaram a poder maximizar seus investimentos em GPU rodando cargas de trabalho interativas junto com jobs de treinamento e implantação de modelos na mesma infraestrutura, com suporte a alocações fracionadas de GPU.

    O que está disponível agora

    A nova aba IDE and Notebooks na página de detalhes do cluster HyperPod dentro do SageMaker Studio centraliza toda a gestão de Spaces. As principais operações disponíveis são:

    • Criar Spaces com configurações de computação, namespaces, armazenamento, HyperPod Task Governance para gerenciamento de cotas e configurações de imagem — tudo via formulário guiado.
    • Visualizar todos os Spaces em uma tabela pesquisável com nome, tipo de aplicação, status, tipo de acesso, armazenamento e alocações de GPU e vCPU.
    • Iniciar e parar Spaces com uma única ação, liberando recursos de computação quando os ambientes não estão em uso.
    • Abrir Spaces diretamente no navegador (JupyterLab ou Code Editor) ou conectar por meio de uma IDE remota, como o VS Code.

    Como configurar: papéis e responsabilidades

    A configuração envolve dois perfis distintos: administradores, que preparam o cluster, e cientistas de dados, que criam e utilizam os Spaces.

    Para administradores

    Os administradores precisam instalar o complemento SageMaker Spaces no cluster HyperPod EKS. A instalação pode ser feita pela opção Quick install (instalação com um clique e padrões otimizados) ou Custom install (necessária para habilitar acesso via navegador web), ambas disponíveis na aba IDE and Notebooks do cluster. Consulte a documentação oficial da AWS para instruções completas.

    Após a instalação, a configuração única que os administradores precisam realizar inclui:

    • Configurar entradas de acesso EKS: Associar as três políticas gerenciadas AmazonSagemakerHyperpodSpacePolicy, AmazonSagemakerHyperpodUserClusterPolicy e AmazonSagemakerHyperpodSpaceTemplatePolicy às funções do Gerenciamento de Identidade e Acesso (IAM — Identity and Access Management) usadas pelos cientistas de dados.
    • Habilitar propagação de identidade por usuário no domínio Studio: Se o domínio Studio foi criado antes da integração entre SageMaker Studio e HyperPod Spaces ser disponibilizada, é necessário habilitar a propagação de identidade por usuário para o cluster HyperPod EKS. Isso garante que as ações de cada usuário no cluster sejam atribuídas ao seu perfil nas entradas de acesso EKS e no AWS CloudTrail, além de aplicar a propriedade estrita de Spaces — controlando quem criou o ambiente e se ele é privado ou compartilhado no domínio Studio.

    O comando para atualizar o domínio é executado uma única vez:

    aws sagemaker update-domain \
      --domain-id $DOMAIN_ID \
      --default-user-settings '{
        "StudioWebPortalSettings": {
          "ExecutionRoleSessionNameMode": "USER_IDENTITY"
        }
      }'

    Para verificar se a configuração foi aplicada corretamente:

    aws sagemaker describe-domain --domain-id $DOMAIN_ID \
      --query 'DefaultUserSettings.StudioWebPortalSettings.ExecutionRoleSessionNameMode'

    O retorno esperado é "USER_IDENTITY". Apps já em execução não são afetados — os usuários passam a usar a nova configuração no próximo login.

    Para cientistas de dados

    Após a instalação do complemento e a configuração de acesso, os cientistas de dados acessam o cluster HyperPod no SageMaker Studio pelo caminho Compute → HyperPod e selecionam a aba IDE and Notebooks para visualizar a interface de gerenciamento de Spaces. Saiba mais em Criar e gerenciar Spaces no HyperPod.

    Quando o status do Space exibir Running — geralmente alguns minutos em um cluster frio, ou cerca de 30 a 40 segundos com over-provisioning —, basta clicar em Open para abrir o JupyterLab ou o Code Editor no navegador, ou em Open in VS Code para conectar pelo editor local via SSH-over-SSM.

    Ambientes disponíveis

    JupyterLab

    O ambiente JupyterLab no HyperPod oferece um ambiente de desenvolvimento totalmente configurado, com acesso a notebooks Python 3 com ipykernel, consoles Glue PySpark e Glue Spark, kernels SparkMagic PySpark e Spark, terminal, navegador de arquivos com armazenamento persistente e chat com ajuda contextual. O trabalho persiste no volume Amazon Elastic Block Store (EBS) anexado ao Space, então parar e reiniciar o ambiente não implica perda de progresso.

    Code Editor

    Para desenvolvedores que preferem uma experiência estilo VS Code no navegador, os Spaces com Code Editor oferecem edição completa de arquivos com destaque de sintaxe e IntelliSense, terminal integrado para executar comandos shell e submeter jobs de treinamento, suporte a extensões para servidores de linguagem, linters e formatadores, integração com Git e acesso direto ao sistema de arquivos do cluster e volumes Amazon FSx montados.

    Conexão remota via VS Code

    A opção Open in VS Code na tabela de Spaces conecta o Visual Studio Code local ao Space em execução no HyperPod. A conexão utiliza tunelamento SSH-over-SSM internamente, dispensando o gerenciamento de chaves SSH ou a exposição da porta 22. O desenvolvedor mantém todas as extensões, temas e atalhos do seu VS Code local enquanto executa o código no cluster.

    Também é possível conectar usando o AWS Toolkit para Visual Studio Code, que lista os Spaces em SageMaker AI > HyperPod e permite iniciar, parar e conectar aos Spaces diretamente pelo painel do toolkit.

    Capacidades opcionais

    Cada funcionalidade abaixo é opcional e pode ser combinada conforme a necessidade da equipe:

    • Acesso via navegador web: Balanceador de Carga de Aplicação (ALB — Application Load Balancer) da AWS e DNS personalizado via Amazon Route 53 para rotear o tráfego do navegador aos Spaces. Não é necessário para acesso remoto via VS Code sobre SSM.
    • Templates de Space: Templates definidos por administradores que pré-configuram computação, imagens, armazenamento e scripts de ciclo de vida para configurações consistentes entre equipes.
    • Task Governance: Cotas de computação por namespace, filas e admissão baseada em prioridade via Kueue para clusters multi-tenant.
    • Autoscaling com Karpenter: Escalonamento dinâmico de nós com base na demanda de Spaces.
    • Over-provisioning com Karpenter: Nós pré-aquecidos com imagens pré-carregadas que reduzem o tempo de inicialização de Spaces de 5 a 7 minutos para aproximadamente 30 a 40 segundos.
    • Volumes persistentes (EFS / FSx): Diretórios de usuário compartilhados e datasets de equipe que persistem entre Spaces.
    • Imagens customizadas (ECR): Runtimes e bibliotecas específicas da equipe incorporadas em imagens de container hospedadas no Amazon Elastic Container Registry (ECR).
    • Desligamento por inatividade: Encerramento automático de Spaces inativos para evitar custos desnecessários de computação.
    • NVIDIA MIG: Alocação fracionada de GPU para cargas de trabalho interativas com custo eficiente em hardware A100/H100.

    Dica avançada: reduza o tempo de inicialização com over-provisioning

    Por padrão, Spaces no HyperPod EKS com autoscaling via Karpenter têm um atraso de cold start de 5 a 7 minutos na primeira criação em um cluster zerado, causado pelo lançamento de instância EC2, registro do nó Kubernetes e download da imagem SageMaker Distribution (SMD).

    Para cargas de trabalho interativas sensíveis à latência (JupyterLab, Code Editor), é possível manter um pool de nós pré-aquecidos com imagem em cache usando o padrão de over-provisioning nativo do Kubernetes. Isso reduz o tempo de inicialização para cerca de 30 a 40 segundos. Veja como funciona:

    • Um Deployment de baixa prioridade (-1000) mantém um pod Kubernetes em cada nó quente, solicitando a mesma CPU/memória que um Space real usaria.
    • Um initContainer em cada placeholder faz o pré-download da imagem SageMaker Distribution no nó quando o Karpenter o provisiona.
    • Quando um usuário cria um Space (prioridade padrão 0), o scheduler Kubernetes preempta o placeholder (prioridade -1000). O Space então é alocado no nó já aquecido e com imagem em cache em segundos.
    • O Karpenter provisiona um nó substituto para o placeholder deslocado em segundo plano.

    Saiba mais em Over-provisioning para HyperPod Spaces.

    As latências verificadas em instâncias ml.m5.12xlarge (24 vCPU alocáveis, 2 vCPU de placeholder, 8 GiB de memória de placeholder) com a imagem SMD sagemaker-distribution:latest-cpu (aproximadamente 3,5 GB) foram:

    • Space coexiste com o placeholder: ~14 segundos
    • Space preempta o placeholder: ~35 segundos
    • Cold start (sem pool aquecido): 5 a 7 minutos

    Atenção: Esses números são para CPU. Spaces com GPU precisam de um Deployment de placeholder próprio solicitando nvidia.com/gpu com a imagem GPU pré-carregada — caso contrário, os nós GPU permanecem frios. A imagem GPU tem aproximadamente 10 GB, muito mais custosa de baixar do que a imagem CPU de 3,5 GB. Além disso, cada nó aquecido mantém uma instância EC2 em execução, o que representa um custo adicional para nós on-demand.

    Preços

    A configuração do complemento SageMaker Spaces não gera cobranças adicionais. O que é cobrado é o consumo de computação do cluster HyperPod pelos Spaces e uma taxa por hora para a instância AWS Systems Manager Advanced On-Premises usada para conectividade remota SSH-over-SSM. Consulte a página de preços do AWS Systems Manager para detalhes. Se o over-provisioning for utilizado, há custo adicional pelos nós aquecidos mantidos em execução.

    Conclusão

    A integração entre o gerenciamento de HyperPod Spaces e o SageMaker Studio reduz a barreira de acesso à infraestrutura de computação de alto desempenho para cientistas de dados. Equipes passam a ter acesso self-service a clusters compartilhados com controles de custo e equidade de recursos — via Task Governance, suporte a GPU fracionada e desligamento automático por inatividade — sem precisar dominar ferramentas de linha de comando ou conceitos de Kubernetes.

    Para começar, acesse seu cluster HyperPod EKS no console SageMaker AI e selecione a aba IDE and Notebooks. Mais informações estão disponíveis na documentação do SageMaker HyperPod Spaces.

    Fonte

    Manage Amazon SageMaker HyperPod Spaces directly from SageMaker Studio (https://aws.amazon.com/blogs/machine-learning/manage-amazon-sagemaker-hyperpod-spaces-directly-from-sagemaker-studio/)

  • Como construir um concierge de viagens por voz com Amazon Bedrock AgentCore, Knowledge Base e Nova Sonic

    Voz como nova camada de interação em aplicativos de viagem

    Companhias aéreas já dispõem de aplicativos e sites onde passageiros consultam voos, escolhem assentos e gerenciam reservas. O que a AWS propõe neste guia é adicionar uma camada de voz natural sobre essa infraestrutura existente — permitindo que o viajante troque um assento ou verifique um atraso simplesmente falando, sem sair do aplicativo ou navegar por menus.

    Construir essa camada exige engenharia cuidadosa em várias frentes: transmissão de áudio em ambas as direções, manutenção do contexto da conversa ao longo de muitos turnos, integração com sistemas de backend sem acoplamento rígido ao agente, e escalabilidade automática nos picos de tráfego — como nas vésperas de feriados.

    Os três serviços gerenciados no centro da solução

    A solução apresentada pela AWS é construída sobre três serviços gerenciados principais:

    • Amazon Bedrock AgentCore: plataforma agnóstica para construir, implantar e operar agentes de Inteligência Artificial (IA) com segurança e escala, com liberdade de escolha de framework e modelo.
    • Amazon Nova Sonic: modelo de fala para fala (speech-to-speech) para interações de voz em tempo real, disponível no Amazon Bedrock.
    • Amazon Bedrock Knowledge Bases: serviço totalmente gerenciado de Geração Aumentada por Recuperação (RAG) que fundamenta as respostas nos documentos da própria empresa.

    Com essa combinação, o passageiro fala e o concierge consulta o itinerário, troca o assento, atualiza a preferência de refeição, responde perguntas sobre políticas e, se necessário, conecta o viajante a um atendente humano — tudo dentro da mesma sessão, sem substituir as telas existentes do aplicativo.

    Visão geral da arquitetura

    A arquitetura separa o front-end, o agente de IA e os serviços de backend em camadas distintas, permitindo que cada uma seja desenvolvida e escalada de forma independente. A comunicação entre o agente e o backend usa o Protocolo de Contexto de Modelo (MCP), um padrão aberto para conectar aplicações de IA a ferramentas e dados externos, mantendo os dois lados fracamente acoplados.

    Os serviços implantados pela solução são:

    Fluxo de uma requisição do usuário

    O fluxo completo de uma interação funciona assim: o usuário abre o aplicativo web hospedado no AWS Amplify e faz login. O Amazon Cognito autentica a requisição e retorna Tokens Web JSON (JWTs) e credenciais temporárias da AWS. O front-end abre uma conexão WebSocket assinada com SigV4 para o Amazon Bedrock AgentCore, que valida o token com o Cognito e inicializa o Amazon Nova 2.5 Sonic via Amazon Bedrock.

    Quando o usuário fala, o Nova 2.5 Sonic processa o áudio e dispara chamadas de ferramentas. O agente invoca o AgentCore Gateway via MCP para recuperar dados de voos, gerenciar reservas e atualizar preferências de passageiros. O Gateway encaminha as requisições como chamadas REST ao API Gateway, que as roteia para funções Lambda. Essas funções consultam as tabelas do DynamoDB e retornam os resultados. O Nova 2.5 Sonic então gera uma resposta de voz contextual e a transmite de volta ao usuário pela conexão WebSocket.

    Para perguntas sobre políticas, o AgentCore Gateway consulta diretamente o Amazon Bedrock Knowledge Bases por meio do conector MCP nativo, que retorna os trechos relevantes como citações ao agente. Quando o usuário solicita um atendente humano, o Lambda registra o escalonamento no DynamoDB e retorna um número de referência com tempo estimado de espera.

    Pré-requisitos para implantação

    Antes de começar, é necessário ter em mãos:

    A solução é implantada com um único script do AWS Cloud Development Kit (AWS CDK). Para os passos detalhados, o README do repositório no GitHub contém todas as instruções.

    Respondendo perguntas sobre políticas com Knowledge Base

    Passageiros frequentemente perguntam sobre franquia de bagagem, taxas de alteração, viagem com pets e regras do programa de fidelidade. A solução responde a essas perguntas usando Geração Aumentada por Recuperação (RAG) via Amazon Bedrock Knowledge Bases, fundamentando as respostas nos documentos de política da própria companhia aérea.

    O repositório já vem com documentos de exemplo cobrindo bagagem, cancelamentos e reembolsos, alterações e remarcações, regras de classe tarifária, termos do programa de fidelidade, viagem com pets, assistência especial e upgrades. O processo é simples: basta fazer o upload dos documentos para o Amazon S3 e criar a base de conhecimento uma única vez. A partir daí, o Amazon Bedrock cuida de todo o restante — embedding, chunking, indexação, armazenamento e recuperação. O armazenamento roda sobre o Amazon S3 Vectors, uma capacidade do Amazon S3. O Smart Parsing prepara os PDFs de origem para que tabelas e layouts estruturados sejam recuperados com precisão.

    Quando os documentos de política são atualizados, basta sincronizar a base de conhecimento e o novo conteúdo fica disponível imediatamente — sem necessidade de reimplantar nenhum pipeline. A conexão da base de conhecimento ao agente é feita diretamente pelo AgentCore Gateway: basta adicioná-la como alvo de conector e escolher entre recuperação padrão ou agêntica. Para os passos de configuração, consulte como adicionar uma base de conhecimento como alvo de gateway.

    Processamento de voz com Amazon Nova 2.5 Sonic

    Cada sessão roda como um container gerenciado no AgentCore runtime com isolamento por microVM, mantendo as conversas dos passageiros separadas mesmo sob carga. O AgentCore oferece escalabilidade automática, monitoramento integrado e roteamento de sessões.

    Para implantações em produção, a AWS recomenda adicionar Amazon Bedrock Guardrails para filtrar tentativas de injeção de prompt e validar o fundamentação das respostas. O padrão de confirmar antes de gravar — onde o agente pede confirmação antes de fazer qualquer alteração — já oferece uma linha de base de práticas responsáveis de IA.

    O agente usa o framework Strands BidiAgents para definir o prompt do sistema, as ferramentas e o fluxo da conversa. O Amazon Nova 2.5 Sonic traz as seguintes capacidades ao concierge:

    • Reconhecimento de fala com robustez a diferentes sotaques e ruído de fundo.
    • Respostas faladas que se adaptam ao tom do passageiro.
    • Streaming bidirecional com baixa latência.
    • Chamada de ferramentas assíncrona que busca dados em paralelo sem pausar a conversa.
    • Mascaramento de latência que gera respostas faladas intermediárias enquanto aguarda os resultados das ferramentas, mantendo a conversa natural.
    • Interrupção (barge-in) e troca de turno natural.
    • Contexto mantido ao longo de muitos turnos de conversa.

    O áudio é transmitido do front-end como PCM a 16 kHz pela conexão WebSocket para o AgentCore runtime. O Nova 2.5 Sonic transcreve a fala, o agente seleciona as ferramentas certas e as chama via MCP. O AgentCore Gateway traduz cada chamada MCP em uma requisição REST, o Lambda executa a lógica e retorna os resultados, e o Nova 2.5 Sonic incorpora esses resultados em uma resposta falada. Como as chamadas de ferramentas rodam de forma assíncrona, a conversa não trava enquanto os dados são carregados.

    O que há de novo no Amazon Nova 2.5 Sonic

    Esta solução usa o Amazon Nova 2.5 Sonic, um modelo de fala para fala com raciocínio aprimorado para voz em tempo real. Para um concierge de voz que chama ferramentas de backend e segue um prompt de sistema detalhado, esse raciocínio se manifesta de formas práticas:

    • Melhor chamada de ferramentas e conclusão de tarefas agênticas: o agente seleciona e encadeia as ferramentas certas de forma confiável em requisições com múltiplos passos — como consultar um itinerário e depois trocar um assento em uma única conversa.
    • Seguimento rigoroso de instruções e raciocínio: o modelo adere ao prompt do sistema, incluindo regras de formatação como ler códigos de confirmação e números de voo caractere por caractere.
    • Tratamento preciso de IA responsável: o modelo responde de forma útil a requisições legítimas de passageiros enquanto lida com segurança com requisições inadequadas.

    Autenticação e fluxo de conexão WebSocket

    A solução usa Amazon Cognito User Pools e Identity Pools para acesso baseado em função. O passageiro faz login com usuário e senha e recebe JWTs — um token de acesso e um token de identidade. O front-end troca o token de identidade pelo Cognito Identity Pool por credenciais temporárias da AWS compostas por chave de acesso, chave secreta e token de sessão.

    Essas credenciais assinam a conexão WebSocket para o AgentCore runtime e as requisições ao API Gateway usando Signature Version 4 (SigV4). Apenas passageiros autenticados chegam ao aplicativo e às APIs de serviço. O navegador então transmite áudio PCM a 16 kHz e recebe respostas de voz e notificações de ferramentas pela mesma conexão, sem nenhum proxy intermediário no servidor.

    Escalonamento para atendente humano

    O concierge encaminha o passageiro para um atendente humano quando não consegue atender a uma solicitação ou quando o passageiro pede. Após a confirmação, o agente chama a ferramenta EscalateToAgent. O Lambda registra o escalonamento no DynamoDB e retorna um número de referência com o tempo estimado de espera. O agente compartilha esse número e o front-end no AWS Amplify realiza a chamada para a linha de suporte.

    Limpeza dos recursos

    Para evitar cobranças contínuas após os testes, a solução inclui um script de limpeza que destrói os recursos na ordem inversa da implantação — começando pelo front-end, depois o AgentCore runtime, o AgentCore Gateway e a infraestrutura de backend:

    ./cleanup-all.sh --dry-run
    ./cleanup-all.sh

    Conclusão

    A AWS demonstrou como é possível construir um concierge de viagens por voz totalmente funcional combinando Amazon Cognito para autenticação, Amazon Bedrock AgentCore para hospedagem do agente, API Gateway e Lambda para lógica de negócio, DynamoDB para armazenamento e Amazon Bedrock Knowledge Bases para respostas sobre políticas. O design em camadas separa front-end, agente e backend, permitindo que cada um evolua e escale de forma independente.

    O pricing por uso e a escalabilidade automática mantêm os custos proporcionais ao tráfego. Com a integração via MCP, é possível adicionar uma nova função Lambda sem tocar no código do agente. Para começar, acesse o repositório da solução no GitHub e adapte o padrão aos seus próprios sistemas.

    Recursos adicionais

    Fonte

    Build a voice travel concierge with Amazon Bedrock AgentCore, Managed Knowledge Base and Nova Sonic (https://aws.amazon.com/blogs/machine-learning/build-a-voice-travel-concierge-with-amazon-bedrock-agentcore-managed-knowledge-base-and-nova-sonic/)

  • Agentes de IA com consciência de identidade usando AWS Lake Formation e Propagação de Identidade Confiável

    O problema: agentes de IA que ignoram quem está perguntando

    Imagine que você construiu um agente de dados que permite a usuários de negócio fazer perguntas em linguagem natural sobre um lakehouse. Você já tem políticas de governança definindo quem pode acessar quais conjuntos de dados. O desafio é fazer o agente respeitar essas regras sem precisar reconstruí-las no código da aplicação.

    Quando um usuário faz uma pergunta, o agente mapeia a intenção para os dados e monta uma consulta. O problema está aqui: a ferramenta que executa essa consulta opera sob uma função do AWS Gerenciamento de Identidade e Acesso (IAM) própria. Isso significa que o AWS Lake Formation enxerga as credenciais da ferramenta — não a pessoa que fez a pergunta. Sobram duas saídas ruins: restringir o acesso da ferramenta (limitando a análise self-service) ou reconstruir os controles de acesso no código da aplicação (tirando a governança da camada de dados).

    A AWS publicou um padrão diferente: agentes de IA com consciência de identidade, que propagam a identidade de cada usuário por todos os saltos — do usuário, passando pelo agente, chegando até a ferramenta — para que o Lake Formation avalie as permissões do usuário real. O código da aplicação não toma nenhuma decisão de autorização, as políticas existentes no Lake Formation funcionam sem modificações, e o AWS CloudTrail registra a pessoa real que acessou os dados.

    O que esse padrão entrega na prática

    O padrão, implementado com o Amazon Bedrock AgentCore, resolve três problemas de uma vez:

    • Controle de acesso por usuário para agentes de IA que consultam o lakehouse, sem reescrever as políticas existentes do Lake Formation.
    • Auditabilidade e conformidade garantidas por uma troca de token no servidor, dentro do AWS Lambda, que converte o token de identidade em credenciais com escopo do usuário real — com cada consulta registrada no CloudTrail.
    • Validação ponta a ponta com múltiplos usuários, confirmando resultados distintos e evidências de auditoria por usuário.

    Os blocos de construção — delegação de token OAuth 2.0, AWS IAM Identity Center, Lake Formation e Lambda — são bem documentados individualmente. A novidade é que um modelo de fundação (FM) agora está no meio da cadeia de propagação. O FM é o cérebro do agente: ele decide quais ferramentas chamar e quais argumentos passar. Qualquer coisa que entra no seu contexto (prompts, esquemas de ferramentas, argumentos) fica acessível dentro daquele limite de confiança. Por isso, o token de identidade do usuário precisa chegar à ferramenta, mas deve fazer isso na camada de transporte HTTP — completamente fora da camada de raciocínio do FM.

    Como o fluxo funciona

    Dois tokens percorrem o sistema. Um access_token autentica a requisição em cada fronteira de confiança. Um id_token carrega a identidade do usuário e é trocado, no servidor, pelo contexto de identidade que o Lake Formation avalia.

    O fluxo completo da requisição funciona assim:

    • Usuário → Interface: o usuário se autentica com um provedor de identidade OpenID Connect (OIDC). A implementação de referência usa o Amazon Cognito, mas qualquer provedor OIDC funciona. A interface recebe um id_token e um access_token.
    • Interface → AgentCore Runtime: a interface chama o agente via HTTPS. O access_token vai no cabeçalho padrão Authorization. O id_token vai em um cabeçalho customizado: X-Amzn-Bedrock-AgentCore-Runtime-Custom-IdToken. O corpo HTTP contém apenas o prompt do usuário.
    • AgentCore Runtime → código do agente: o runtime valida o access_token e repassa a requisição ao container do agente com ambos os cabeçalhos acessíveis via context.request_headers.
    • Agente → AgentCore Gateway: o agente abre uma conexão via Protocolo de Contexto de Modelo (MCP) com o gateway, incluindo ambos os cabeçalhos na conexão. O gateway valida o access_token e encaminha o cabeçalho customizado ao Lambda alvo.
    • AgentCore Gateway → Lambda: os cabeçalhos propagados chegam em context.client_context.custom['bedrockAgentCorePropagatedHeaders'].
    • Lambda → camada de dados: o Lambda valida o id_token, troca-o por um contexto de identidade, assume uma função com esse contexto e executa a consulta no Amazon Athena sob a identidade do usuário. O Lake Formation avalia as permissões do usuário real. O Athena retorna apenas as linhas e colunas que aquele usuário tem direito de ver. O CloudTrail registra a função assumida com uma entrada onBehalfOf identificando o ser humano.

    Os três pontos de configuração no Bedrock AgentCore

    1. Lista de permissão de cabeçalhos no runtime

    Por padrão, o Bedrock AgentCore Runtime não repassa cabeçalhos de requisição ao container do agente. É necessário declarar uma lista de permissão explícita, seja via agentcore configure ou diretamente na configuração do runtime:

    # .bedrock_agentcore.yaml
    request_header_configuration:
      requestHeaderAllowlist:
        - Authorization
        - X-Amzn-Bedrock-AgentCore-Runtime-Custom-IdToken

    O runtime suporta dois tipos de cabeçalhos encaminhados: o cabeçalho padrão Authorization para autenticação JWT de entrada (access_token), e cabeçalhos customizados com prefixo X-Amzn-Bedrock-AgentCore-Runtime-Custom-. O id_token usa um cabeçalho customizado. Dentro do agente, os cabeçalhos permitidos chegam como um objeto dicionário no contexto da requisição. O código Python que roda no container do agente fica assim:

    from bedrock_agentcore.runtime import BedrockAgentCoreApp
    
    ID_TOKEN_HEADER = "X-Amzn-Bedrock-AgentCore-Runtime-Custom-IdToken"
    
    app = BedrockAgentCoreApp()
    
    @app.entrypoint
    def invoke(payload, context):
        request_headers = getattr(context, "request_headers", None) or {}
        id_token = ""
        access_token = ""
        for key, value in request_headers.items():
            if key.lower() == ID_TOKEN_HEADER.lower():
                id_token = value
            elif key.lower() == "authorization":
                access_token = value.replace("Bearer ", "")
        # ... build MCP headers and call the Gateway

    O código do agente lê o id_token da camada de transporte HTTP e o encaminha (também na camada de transporte) para o próximo salto. Ele não trata o token como argumento de ferramenta e não o injeta em um prompt. Ponto-chave: a lista de permissão do runtime é o primeiro portão. Sem ela, o id_token não chega ao código do agente.

    2. Metadados do AgentCore Gateway para propagação de cabeçalhos

    O Bedrock AgentCore Gateway é o endpoint MCP com o qual o agente se comunica. Por padrão, ao invocar um Lambda alvo, ele não encaminha cabeçalhos arbitrários. É necessário configurar quais cabeçalhos propagar usando metadataConfiguration.allowedRequestHeaders no alvo:

    from aws_cdk import aws_bedrockagentcore as agentcore
    
    self.gateway_target = agentcore.CfnGatewayTarget(
        self, "AthenaTarget",
        name="athena-executor",
        gateway_identifier=self.gateway.attr_gateway_identifier,
        target_configuration=agentcore.CfnGatewayTarget.TargetConfigurationProperty(
            mcp=agentcore.CfnGatewayTarget.McpTargetConfigurationProperty(
                lambda_=agentcore.CfnGatewayTarget.McpLambdaTargetConfigurationProperty(
                    lambda_arn=lambda_function_arn,
                    tool_schema=...  # execute_athena_query
                ),
            ),
        ),
        metadata_configuration=agentcore.CfnGatewayTarget.MetadataConfigurationProperty(
            allowed_request_headers=["X-Amzn-Bedrock-AgentCore-Runtime-Custom-IdToken"],
        ),
        ...
    )

    Observe que o esquema da ferramenta não inclui um parâmetro id_token — não há parâmetro de token em nenhuma ferramenta. O FM não vê, seleciona nem passa um id_token, porque o token não faz parte do contrato da ferramenta. Ele viaja em paralelo à chamada de ferramenta, na conexão HTTP, via metadataConfiguration. Essa é uma propriedade crítica de segurança: se o id_token fosse colocado no esquema da ferramenta, o FM seria responsável por passá-lo — o que significa que o token apareceria em prompts, rastreamentos, memória e logs. Mantê-lo fora do contrato da ferramenta o mantém fora do FM completamente.

    3. Leitura dos cabeçalhos propagados no Lambda

    No lado do Lambda, o cabeçalho propagado chega não no corpo do evento, mas no contexto do cliente, sob uma chave específica:

    ID_TOKEN_HEADER = "X-Amzn-Bedrock-AgentCore-Runtime-Custom-IdToken"
    
    def lambda_handler(event, context):
        client_ctx = getattr(context.client_context, "custom", {}) or {}
        propagated_headers = client_ctx.get("bedrockAgentCorePropagatedHeaders", {})
        id_token = propagated_headers.get(ID_TOKEN_HEADER)
    
        if not id_token:
            return {"statusCode": 400, "body": {"error": "missing id_token"}}
    
        # Tool arguments from the agent's call (no id_token here)
        query = event["query"]
        database = event["database"]
        workgroup = event["workgroup"]
        output_location = event["output_location"]
    
        # ... validate token, exchange, run query

    O dicionário do evento contém apenas os parâmetros declarados da ferramenta — nada mais. O id_token é acessado exclusivamente via context.client_context.custom['bedrockAgentCorePropagatedHeaders']. O Lambda é o único componente que lê o token.

    A troca de token no servidor

    Depois que o Lambda tem o id_token, ele valida o token e o troca por um identityContext. Essa etapa usa a mecânica padrão de Propagação de Identidade Confiável (TIP) do IAM Identity Center. O fato de acontecer dentro do Lambda é o que impede que o contexto de identidade cruze fronteiras de processo:

    import boto3, jwt, time
    
    def exchange_and_assume(id_token: str, user_sub: str):
        # 1. Validate id_token against the OIDC IdP's JWKS.
        claims = validate_id_token(id_token)  # signature, exp, aud, iss, token_use
    
        # 2. Exchange for an Identity Center identityContext.
        sso_oidc = boto3.client("sso-oidc")
        resp = sso_oidc.create_token_with_iam(
            clientId=OAUTH_APPLICATION_ARN,
            grantType="urn:ietf:params:oauth:grant-type:jwt-bearer",
            assertion=id_token,
        )
        identity_context = resp["awsAdditionalDetails"]["identityContext"]
    
        # 3. AssumeRole with ProvidedContexts
        sts = boto3.client("sts")
        assumed = sts.assume_role(
            RoleArn=TIP_ROLE_ARN,
            RoleSessionName=f"agent-tip-{user_sub[:8]}-{int(time.time())}",
            ProvidedContexts=[{
                "ProviderArn": "arn:aws:iam::aws:contextProvider/IdentityCenter",
                "ContextAssertion": identity_context,
            }],
        )
        creds = assumed["Credentials"]
        return boto3.Session(
            aws_access_key_id=creds["AccessKeyId"],
            aws_secret_access_key=creds["SecretAccessKey"],
            aws_session_token=creds["SessionToken"],
        )

    Dois aspectos importantes saem dessa troca: o identityContext é criado e consumido dentro de uma única invocação do Lambda — ele não volta para o agente, o gateway ou a interface. E a boto3.Session resultante contém credenciais de curta duração cuja asserção de identidade subjacente é o usuário real. Quando a sessão chama o Athena, a consulta roda com a identidade do usuário propagada. O Lake Formation enxerga o usuário, não a função do Lambda.

    Configuração do Lake Formation

    É necessária apenas uma permissão para o usuário ou grupo no IAM Identity Center. Esse é o único trabalho na camada do Lake Formation:

    aws lakeformation grant-permissions \
      --principal DataLakePrincipalIdentifier=arn:aws:identitystore:::user/ \
      --resource '{"Table":{"DatabaseName":"iceberg_db","Name":"trip_details"}}' \
      --permissions SELECT

    Essa é a permissão que o Lake Formation avalia no momento da consulta. Filtros em nível de coluna e linha são adicionados ao mesmo usuário ou grupo da mesma forma. Nada aqui é específico para agentes de IA. Se você já tem um modelo de permissões do Lake Formation para usuários humanos, você já tem as permissões que esse padrão precisa.

    A função TIP que o Lambda assume não tem permissões de dados no Lake Formation. Ela contém apenas permissões IAM para chamar as APIs de serviço: athena:* para execução de consultas, glue:* para leituras do catálogo, lakeformation:GetDataAccess para o handshake do plano de consulta, e acesso ao Amazon Simple Storage Service (Amazon S3) para o bucket de saída do Athena. Quando o Lambda assume essa função com um identityContext anexado via ProvidedContexts, o Lake Formation avalia apenas a identidade do usuário propagada. A função em si é transparente para a decisão de autorização.

    Testando o padrão ponta a ponta

    Dois usuários, mesma pergunta, resultados diferentes. O Usuário A tem permissão SELECT na tabela trip_details e solicita cinco registros — os dados são retornados. O Usuário B não tem permissão na mesma tabela e faz a mesma pergunta — o acesso é negado. Nenhum código mudou entre as duas interações. Nenhum parâmetro foi alterado. O Lake Formation tomou a decisão com base na identidade propagada.

    O registro no CloudTrail para a chamada AssumeRole mostra a delegação:

    {
      "eventSource": "sts.amazonaws.com",
      "eventName": "AssumeRole",
      "requestParameters": {
        "roleArn": "arn:aws:iam:::role/",
        "roleSessionName": "agent-tip--",
        "providedContexts": [{
          "providerArn": "arn:aws:iam::aws:contextProvider/IdentityCenter",
          "contextAssertion": ""
        }]
      },
      "userIdentity": {
        "type": "AssumedRole",
        "onBehalfOf": {
          "userId": "",
          "identityStoreArn": "arn:aws:identitystore:::identitystore/"
        }
      }
    }

    O bloco onBehalfOf fecha o ciclo de auditoria. Cada consulta que o agente executa em nome de um usuário tem um registro no CloudTrail com o nome desse usuário — sem nenhuma instrumentação adicional no código.

    As quatro propriedades de segurança do padrão

    • O id_token nunca chega ao modelo de fundação: ele trafega em cabeçalhos HTTP em cada salto, e o Lambda o lê via context.client_context.custom. Não é um parâmetro de nenhuma ferramenta. O FM não tem caminho para acessá-lo — nem em argumentos de ferramentas, nem em prompts, nem em memória, nem em rastreamentos.
    • O contexto de identidade permanece dentro de uma única invocação do Lambda: é derivado do id_token, usado imediatamente em uma chamada AssumeRole e descartado. Não retorna ao agente, ao gateway ou à interface.
    • As decisões de autorização vivem no Lake Formation, contra o usuário real: a função TIP que o Lambda assume não tem permissões de dados. O Lake Formation avalia a identidade propagada do usuário. Nenhum caminho de código no agente, gateway ou Lambda executa lógica de autorização.
    • A trilha de auditoria não requer trabalho extra: o evento AssumeRole no CloudTrail com onBehalfOf identifica o usuário humano em cada consulta — com a mesma fidelidade de auditoria que você teria para usuários humanos acessando dados diretamente.

    Implantando o padrão

    Para implantar esse padrão, quatro configurações são necessárias:

    • Um provedor de identidade OIDC com um emissor de token confiável (TTI) no IAM Identity Center aceitando seus tokens, e um aplicativo OAuth no Identity Center configurado para CreateTokenWithIAM.
    • Bedrock AgentCore Runtime rodando o container do agente com requestHeaderAllowlist cobrindo Authorization e o cabeçalho customizado do id_token.
    • Bedrock AgentCore Gateway com um alvo Lambda cujo metadataConfiguration.allowedRequestHeaders inclui o cabeçalho do id_token. O esquema de ferramenta do Lambda não tem parâmetro de id_token.
    • Lambda lendo o id_token de context.client_context.custom['bedrockAgentCorePropagatedHeaders'], realizando a troca de token via sso-oidc:CreateTokenWithIAM, e chamando sts:AssumeRole com ProvidedContexts para obter a sessão com TIP.

    Conclusão

    Quando um agente de IA consulta um lakehouse governado, a camada de dados precisa saber quem está perguntando — não qual função o agente está usando. A abordagem apresentada pela AWS resolve isso tratando o agente como um ator delegado OAuth. O token do usuário trafega junto ao transporte HTTP do agente, mas não entra no contexto do modelo. A troca de token que produz as credenciais de consulta acontece no servidor, dentro do Lambda, com escopo de uma única invocação.

    As três funcionalidades do Bedrock AgentCore que tornam isso possível — requestHeaderAllowlist no runtime, metadataConfiguration.allowedRequestHeaders no gateway, e bedrockAgentCorePropagatedHeaders no Lambda — são específicas para construção sobre o Bedrock AgentCore. Tudo o que está abaixo do Lambda é funcionalidade do IAM Identity Center e do Lake Formation.

    O resultado é uma separação limpa: a identidade do usuário trafega de ponta a ponta, o modelo nunca a vê, e a camada de dados a aplica exatamente como se o usuário tivesse consultado diretamente.

    Recursos relacionados

    Fonte

    Identity-aware AI data agents with AWS Lake Formation and Trusted Identity Propagation (https://aws.amazon.com/blogs/security/identity-aware-ai-data-agents-with-aws-lake-formation-and-trusted-identity-propagation/)

  • Melhorando a segurança e resiliência do SPIRE com serviços gerenciados da AWS

    O problema com credenciais estáticas em ambientes de nuvem

    Em ambientes modernos de nuvem, estabelecer confiança entre workloads é um pré-requisito para proteger a comunicação máquina a máquina. Abordagens tradicionais — como chaves de API, segredos compartilhados e credenciais estáticas de contas de serviço — simplesmente não foram projetadas para a escala e a natureza efêmera dos workloads em nuvem. Isso cria uma necessidade organizacional clara: migrar de credenciais de longa duração para identidades criptográficas de curta duração.

    É nesse contexto que o SPIFFE (Framework de Identidade de Produção Segura para Todos) entra em cena como componente central de estratégias de identidade de workload. O SPIFFE é um conjunto de padrões open source para identificar com segurança sistemas de software em ambientes dinâmicos e heterogêneos. Um dos problemas que ele resolve é o chamado “problema da tartaruga de baixo”: a dependência circular onde proteger uma credencial exige outra credencial — e assim por diante.

    O SPIRE (Ambiente de Execução SPIFFE) é a implementação open source do SPIFFE. Ele permite que equipes experimentem o framework rapidamente, mas traz consigo considerações operacionais e de segurança importantes quando levado para produção:

    • Onde as chaves criptográficas de assinatura de identidades de workload são gerenciadas
    • Como garantir disponibilidade e resiliência do registro de identidade de workload
    • Como a Autoridade Certificadora (CA) do SPIRE se integra à PKI corporativa existente
    • Como workloads sem conectividade direta ao servidor SPIRE validam identidades
    • Como identidades de workload são entregues a ambientes serverless
    • Como autorização granular baseada em SPIFFE IDs é aplicada

    A AWS publicou um guia detalhado mostrando como endereçar cada um desses pontos ao delegar as funções centrais do SPIRE para serviços gerenciados. O post é acompanhado por um repositório no GitHub com toda a infraestrutura necessária para seguir a arquitetura de referência.

    Como o SPIRE funciona: conceitos essenciais

    Uma implantação SPIRE é composta por pelo menos um SPIRE Server, pelo menos um SPIRE Agent e pelo menos um workload. O servidor fica em um plano de controle central e gerencia a emissão de identidades e o armazenamento de registros de workloads. Ele opera com cinco funções principais:

    • RegistrationAPI: Cria, atualiza e remove entradas que definem quais workloads têm direito a quais SPIFFE IDs, com base em seletores (namespace Kubernetes, UID Unix, etc.)
    • DataStore: Armazena os registros de identidade de workload e o status dos SVIDs emitidos
    • KeyManager: Controla como o servidor gerencia as chaves privadas usadas para assinar X.509-SVIDs e JWT-SVIDs
    • BundlePublisher: Publica o trust bundle local em um repositório. O trust bundle contém as chaves criptográficas do domínio de confiança
    • UpstreamAuthority: Define qual autoridade certificadora raiz assina o certificado CA do SPIRE

    O SPIRE Agent é distribuído junto aos workloads, seja em instâncias Amazon EC2, containers Amazon ECS ou Pods do Amazon EKS. Ele expõe a Workload API, realiza atestação de nó e de workload, e pode armazenar SVIDs em destinos externos como o AWS Secrets Manager.

    Após servidor e agente estarem em execução, as aplicações recuperam Documentos de Identidade Verificável SPIFFE de curta duração — seja como certificados X.509 ou JSON Web Tokens (JWTs) — usando a Workload API.

    Figura 1: Arquitetura de alto nível do SPIRE — Imagem original — fonte: AWS

    Usando serviços gerenciados da AWS para cada função do SPIRE

    A arquitetura proposta pela AWS substitui cada componente padrão do SPIRE por um serviço gerenciado correspondente. Veja como cada integração funciona.

    Figura 2: Arquitetura SPIFFE usando serviços gerenciados da AWS — Imagem original — fonte: AWS

    SPIRE Key Manager com AWS KMS

    O Key Manager do SPIRE controla as chaves criptográficas usadas para assinar os SVIDs. Por padrão, essas chaves ficam em memória ou em disco — o que apresenta riscos em produção. Usando o plugin AWS KMS para SPIRE, as chaves passam a ser gerenciadas pelo AWS KMS, trazendo os seguintes benefícios:

    • HSMs validados: O AWS KMS usa módulos de segurança de hardware (HSMs) validados sob FIPS 140-3 Nível 2
    • Proteção de chaves: As chaves KMS em texto simples nunca saem dos HSMs, não são gravadas em disco e são usadas apenas na memória volátil durante a operação criptográfica
    • Auditoria completa: Cada solicitação de uso das chaves é autenticada via Signature Version 4 (SigV4) e registrada no AWS CloudTrail
    • Controle de acesso granular: Use Políticas de Chave do AWS KMS para restringir quem pode usar as chaves de assinatura

    O bloco de configuração abaixo indica ao SPIRE que as chaves AWS KMS devem ser usadas para assinar os SVIDs:

    KeyManager "aws_kms" {
      plugin_data {
        region = "<your-region>"
        key_identifier_file = "./key_metadata"
      }
    }

    SPIRE DataStore com Amazon Aurora

    Por padrão, o SPIRE usa um banco SQLite em memória para armazenar os registros de identidade de workload. A AWS recomenda substituir isso pelo Amazon Aurora, desacoplando o banco de dados do servidor e eliminando a carga operacional de gerenciá-lo manualmente. Os benefícios incluem alta disponibilidade com failover automático e implantações multi-AZ, backups automatizados com recuperação point-in-time, escalabilidade independente de computação e armazenamento, criptografia em repouso e em trânsito com AWS IAM, e atualizações e patches automáticos.

    O stack CloudFormation provisiona um cluster Aurora PostgreSQL, um usuário de banco com autenticação via IAM e a conectividade de rede entre o servidor SPIRE e o banco. A configuração do DataStore muda de:

    DataStore "sql" {
      plugin_data {
        database_type = "sqlite3"
        connection_string = "/opt/spire/data/server/datastore.sqlite3"
      }
    }

    Para:

    DataStore "sql" {
      plugin_data {
        database_type "aws_postgres" {
          region = "<region>"
        }
        connection_string = "dbname=<dbname> user=spiffe host=<your_db_endpoint> port=<your_port>"
      }
    }

    Mais detalhes estão disponíveis na documentação do Plugin Datastore SQL.

    Autoridade Certificadora do SPIRE com AWS Private CA

    Na configuração padrão, o SPIRE gera um certificado autoassinado como CA raiz. Em produção, organizações geralmente precisam encadear essa CA à hierarquia PKI corporativa existente. Usando o plugin AWS Private Certificate Authority (AWS Private CA), o SPIRE passa a atuar como uma CA emissora que encadeia à CA raiz existente. Os benefícios são:

    Importante: se o certificado CA do SPIRE for assinado por uma CA emissora, é necessário garantir que o path length dessa CA seja de pelo menos 1. O código de exemplo provisiona uma CA raiz, então isso não é um problema ao seguir o sample.

    Após a implantação, a configuração do servidor SPIRE inclui o plugin UpstreamAuthority:

    UpstreamAuthority "aws_pca" {
      plugin_data {
        region = "<aws_region>"
        certificate_authority_arn = "<your_pca_arn>"
        ca_signing_template_arn = "arn:aws:acm-pca:::template/SubordinateCACertificate_PathLen0/V1"
      }
    }

    Mais detalhes estão disponíveis na documentação do plugin AWS Private CA upstream authority.

    SPIRE Bundle Publisher com Amazon S3

    No SPIFFE, trust bundles são conjuntos de chaves públicas usadas pelos workloads de destino para verificar a identidade dos workloads de origem. O SPIRE Server suporta publicar esse bundle no Amazon S3. Com isso é possível:

    • Desacoplar: O acesso ao bundle deixa de depender da disponibilidade do servidor SPIRE
    • Validação contínua: Workloads de destino podem validar identidades de origem sem precisar de acesso de rede direto ao servidor SPIRE
    • Distribuição global: O bundle pode ser distribuído via Amazon CloudFront, com mais de 750 Pontos de Presença ao redor do mundo
    • Redução de carga: O tráfego de recuperação do trust bundle é descarregado do servidor SPIRE
    • Controle de versão: Versões históricas dos trust bundles podem ser mantidas com o versionamento do S3

    Exemplo de configuração para este plugin:

    BundlePublisher "aws_s3" {
      plugin_data {
        region = "<your_bucket_region>"
        bucket = "<your_bucket_name>"
        object_key = "<your_bundle_name"
        format = "spiffe"
      }
    }

    Mais detalhes na referência do Plugin S3 Bundle Publisher.

    SPIRE Agent SVID Store com Secrets Manager

    Em uma implementação típica do SPIRE, os SVIDs são recuperados da Workload API pelo agente SPIRE. Porém, em cenários serverless ou de container, não é viável executar o agente SPIRE — especialmente em workloads rodando no AWS Lambda ou em agentes de IA no Amazon Bedrock AgentCore Runtime.

    Nesses casos, o plugin SVID store permite que o SVID seja enviado diretamente para o Secrets Manager. Um agente SPIRE ainda precisa estar rodando em algum nó para realizar a atestação de nó com o servidor SPIRE e entregar o SVID ao secrets store. O Plugin AWS Secrets Manager SVIDStore oferece:

    Este plugin é configurado no agente, não no servidor SPIRE. As permissões necessárias estão documentadas no repositório GitHub do plugin. No arquivo agent.conf do código de exemplo, a configuração é:

    SVIDStore "aws_secretsmanager" {
      plugin_data {
        region = "<your_region>"
      }
    }

    Para que o SVID de um workload específico seja enviado ao Secrets Manager, os parâmetros storeSVID e selector precisam ser adicionados ao criar a entrada no registro de workload. Em um ambiente Kubernetes, o comando fica assim:

    kubectl exec -n spire spire-server-<postfix>-- \
      /opt/spire/bin/spire-server entry create \
      -spiffeID spiffe://example.org/<workload_name> \
      -parentID spiffe://example.org/ns/spire/sa/spire-agent \
      -selector aws_secretsmanager:secretname:<workload_name> \
      -storeSVID

    Controle de acesso granular com Amazon Verified Permissions

    Todos os serviços gerenciados mencionados até aqui tratam da criação e distribuição de SVIDs e trust bundles. Mas um dos grandes diferenciais do SPIFFE é permitir que donos de recursos protejam seus recursos com autorização granular. O Amazon Verified Permissions é o serviço gerenciado que atende a essa necessidade no contexto de implementações SPIFFE/SPIRE.

    Com o Verified Permissions é possível:

    • Definir políticas declarativas: Usando a linguagem de políticas Cedar, que oferece regras de controle de acesso legíveis por humanos
    • Centralizar o gerenciamento de políticas: Separando a lógica de autorização do código da aplicação, com suporte a verificação formal e benefícios de performance do Cedar
    • Tomar decisões em tempo real: Avaliando requisições de autorização com base em identidade do usuário, identidade do workload (SPIFFE ID), atributos do recurso e informações contextuais
    • Integrar com provedores de identidade: Com suporte a provedores OpenID Connect (OIDC), habilitando validação de tokens JWT, incluindo JWT-SVIDs

    Para usar o Verified Permissions, são necessários um policy store, uma fonte de identidade e políticas de autorização. O código de exemplo cria o policy store e configura a infraestrutura para que o SPIRE atue como fonte de identidade.

    A política abaixo proíbe um workload específico de executar qualquer ação:

    forbid(
      principal,
      action,
      resource
    ) when {
      context has sub &&
      context.sub like "spiffe://example.org/forbidden-workload/*"
    };

    E esta permite que um workload específico execute ações:

    permit(
      principal,
      action,
      resource
    ) when {
      context has sub &&
      context.sub like "spiffe://example.org/allowed-workload/*"
    };

    Conclusão

    A AWS demonstrou como organizações podem aprimorar suas implantações SPIRE substituindo implementações padrão por serviços gerenciados. As integrações cobrem AWS KMS para assinatura de SVIDs, Amazon Aurora para operações de datastore gerenciado, AWS Private CA para raiz de confiança, Amazon S3 e CloudFront para distribuição global de trust bundles, AWS Secrets Manager para armazenamento de SVIDs e Amazon Verified Permissions para autorização granular.

    Ao adotar essas integrações, as organizações conseguem melhorar a postura de segurança, reduzir a complexidade operacional e aumentar a resiliência de suas implantações SPIRE. Para quem quer aprender mais, a AWS disponibiliza o repositório GitHub do SPIRE on AWS e o Workshop SPIFFE e SPIRE na AWS para aprendizado prático.

    Fonte

    Improving SPIRE security and resiliency with AWS managed services (https://aws.amazon.com/blogs/security/improving-spire-security-and-resiliency-with-aws-managed-services/)

  • AWS Certificate Manager passa a suportar emissão ACME via AWS PrivateLink

    O que mudou no AWS Certificate Manager

    A AWS anunciou uma atualização relevante para quem utiliza o Gerenciador de Certificados da AWS (ACM): agora é possível emitir e renovar certificados públicos TLS via protocolo ACME utilizando o AWS PrivateLink. Na prática, isso significa que todo o fluxo de emissão de certificados pode permanecer dentro da rede privada da AWS, sem precisar trafegar pela internet pública.

    Como funciona na prática

    Para usar o recurso, é necessário criar um endpoint de interface de Rede Privada Virtual (VPC) apontando para o serviço ACME do ACM. A partir daí, qualquer cliente compatível com ACMEv2 pode rotear o tráfego de emissão de certificados diretamente pela sua VPC.

    Um ponto importante: quem já utiliza o ACME com o ACM não precisa alterar nada na configuração dos clientes existentes. Após a criação do endpoint ACME gerenciado no ACM, basta criar o endpoint de interface VPC padrão — pelo console da VPC, pela Interface de Linha de Comando da AWS (AWS CLI) ou via AWS CloudFormation. O DNS privado resolve automaticamente a URL do diretório ACME já existente para o endpoint dentro da VPC, mantendo a mesma configuração e URL que o cliente já utiliza.

    O que passa pelo PrivateLink

    Com o PrivateLink habilitado, todas as operações de emissão passam pelo caminho privado. Isso inclui:

    • Criação de conta
    • Criação de pedido de certificado
    • Validação de domínio
    • Finalização da emissão
    • Recuperação do certificado

    Toda a atividade continua visível no console do ACM, com registros via AWS CloudTrail e métricas no Amazon CloudWatch, garantindo rastreabilidade e auditoria completas.

    Disponibilidade e custos

    O suporte ao AWS PrivateLink para emissão de certificados ACME está disponível em todas as regiões comerciais da AWS. As cobranças padrão do AWS PrivateLink se aplicam para os endpoints de interface. Para detalhes sobre preços, consulte a página de preços do ACM.

    Como começar

    Para quem quer entender melhor o recurso e dar os primeiros passos, a AWS disponibilizou um post no AWS News Blog com mais detalhes, além da documentação oficial completa sobre ACME com PrivateLink.

    Fonte

    AWS Certificate Manager now supports ACME issuance through AWS PrivateLink (https://aws.amazon.com/about-aws/whats-new/2026/10/AWS-Certificate-Manager-ACME-Privatelink)

  • Construindo um assistente de IA com memória contextual usando AgentCore e OpenClaw

    O problema da amnésia nos assistentes de IA

    Assistentes de IA prontos para uso respondem bem a perguntas individuais, mas falham em um aspecto crítico: a continuidade. Um assistente sem memória não sabe que você mencionou, três semanas atrás, que seu canteiro drena rápido, que você só usa fertilizante orgânico ou que suas petúnias estavam sofrendo com uma onda de calor. Cada conversa começa do zero, e o peso de recontextualizar tudo recai sobre o usuário.

    O problema não está na qualidade das respostas — está na ausência de memória sobre quem você é. É exatamente esse gap que a AWS endereça em um tutorial publicado no blog de Machine Learning, mostrando como construir um assistente pessoal que acumula contexto ao longo do tempo usando o OpenClaw, um sistema agêntico de código aberto, rodando sobre o AgentCore runtime, uma capacidade do Amazon Bedrock AgentCore.

    Visão geral da solução

    O assistente de exemplo se chama Sprout — um bot de jardinagem — mas a arquitetura é agnóstica de domínio. Troque a persona e o manifesto de habilidades, e o mesmo pipeline serve um bot de suporte, um coach de fitness ou um help desk interno.

    Toda a infraestrutura vive em um único template do AWS CloudFormation, é implantada com um comando e opera em modelo de consumo, custando alguns dólares por mês para uso pessoal leve.

    O fluxo de ponta a ponta funciona assim: mensagens do Telegram chegam pelo Amazon Interfaceace de Programação de Aplicações (API) Gateway e por uma função AWS Lambda de webhook, enquanto tarefas agendadas — como lembretes de rega matinal — chegam via Amazon EventBridge Scheduler e uma Lambda de cronjob. Ambas chamam a API InvokeAgentRuntime no AgentCore runtime, onde um processo server.py coordena o gateway do OpenClaw, o AgentCore Memory e a API Converse do Amazon Bedrock. O Amazon Simple Storage Service (Amazon S3) fornece armazenamento de workspace, o AWS Key Management Service (AWS KMS) cuida da criptografia, o AWS Secrets Manager guarda o token do bot, e o Amazon CloudWatch captura logs e métricas.

    A arquitetura: um agente serverless no AgentCore runtime

    Pagando apenas pelo compute ativo

    O agente roda em um container no AgentCore runtime, que usa precificação baseada em consumo. A cobrança é pelo compute que o agente efetivamente usa — não pelo tempo ocioso aguardando respostas de modelos ou chamadas de I/O. Para um assistente pessoal usado em sessões curtas, isso representa a diferença entre uma baseline de aproximadamente US$ 1–2/mês e uma instância Amazon Elastic Compute Cloud (Amazon EC2) sempre ligada, que custaria cerca de US$ 35/mês. Esses valores são estimativas para uso pessoal leve referentes a julho de 2026. Consulte a página de preços do AgentCore para valores atualizados.

    O runtime exige um contrato mínimo de container: escutar na porta 8080, expor GET /ping para health check e POST /invocations como ponto de entrada do agente.

    OpenClaw como substrato do agente

    O OpenClaw fornece o loop do agente, o uso de ferramentas e um sistema de habilidades (skills). Ele roda um wrapper (server.py) que o adapta ao contrato HTTP do protocolo AgentCore: na inicialização do container, o server.py lança o openclaw gateway run como subprocesso e verifica sua saúde. O GET /ping retorna saudável rapidamente para que o probe de prontidão do AgentCore passe. O POST /invocations faz o trabalho real: parseia o payload, recupera memória, monta o contexto, encaminha o turno ao gateway e persiste o resultado.

    Um detalhe importante: o AgentCore pode descongelar um container cujo subprocesso já tenha encerrado. Por isso, o caminho de invocação não assume que o gateway está vivo — ele chama um helper ensure_openclaw_ready() que verifica a saúde (e reinicia o gateway se necessário) antes de encaminhar o turno. Esse padrão de wrapper se generaliza: qualquer framework de agente que rode como processo local pode ser adaptado ao AgentCore runtime da mesma forma, sem modificar o framework em si.

    Dois modelos, roteados por tarefa

    Chat de texto e compreensão de imagens têm tradeoffs diferentes de custo e qualidade, então o assistente roteia para modelos Claude distintos no Bedrock:

    • Claude Haiku 4.5 para texto: rápido e econômico para os turnos conversacionais de alto volume que dominam o uso diário.
    • Claude Sonnet 4.5 para visão: raciocínio multimodal mais robusto para a tarefa menos frequente, porém mais complexa, de diagnosticar uma planta a partir de uma foto.

    Os turnos de texto fluem pelo gateway do OpenClaw, que traz habilidades e estado de sessão. Os turnos de imagem chamam o modelo diretamente da API Converse do Bedrock, passando os bytes da imagem como blocos de conteúdo multimodal. Os IDs dos modelos são variáveis de ambiente (MODEL_ID, VISION_MODEL_ID), então é possível trocar os modelos por implantação sem reconstruir a imagem.

    Habilidades como unidade de capacidade reutilizável

    As capacidades são declaradas como skills em um manifesto community-skills.json. Um script de deploy as materializa no container e as registra na configuração do OpenClaw antes da imagem ser construída. O Sprout vem com skills de clima, lembretes e notas de plantas. Trocar o manifesto faz o mesmo pipeline servir a um domínio completamente diferente — é o que torna o padrão reutilizável.

    Memória: transformando chats descartáveis em conhecimento durável

    O modelo mental: eventos de curto prazo, extração de longo prazo

    O AgentCore Memory tem duas camadas. A memória de curto prazo armazena cada turno de conversa como um evento via CreateEvent, indexado por actorId (o chat ID do Telegram) e sessionId — é a transcrição bruta. A memória de longo prazo é produzida de forma assíncrona por estratégias de extração gerenciadas em registros estruturados e duráveis. Três estratégias são configuradas:

    • USER_PREFERENCE: escolhas explícitas do usuário (“só uso fertilizante orgânico”).
    • SEMANTIC: fatos inferidos (“cultiva petúnias mexicanas em um canteiro elevado de aço Corten”).
    • SUMMARIZATION: resumos episódicos de sessão (“discutiu folhas inferiores amarelando durante uma onda de calor”).

    Namespaces: um jardim por jardineiro

    O Sprout arquiva registros em namespaces por usuário, para que dois chats nunca se misturem:

    • sprout/{chat_id}/long_term: preferências e fatos semânticos.
    • sprout/{chat_id}/episodic/{session_id}: resumos de sessão.

    O chat ID é o único segmento variável, o que torna o isolamento simples de raciocinar e testar: cada jardineiro único mapeia para exatamente um namespace, sem colisões.

    O pipeline de recuperação, montagem e injeção

    A cada turno, o agente recupera os registros de longo prazo relevantes, os classifica e os injeta no system prompt. Veja o que acontece em cada mensagem dentro do server.py:

    1. Recuperar: chama RetrieveMemoryRecords contra sprout/{chat_id}/long_term, usando a mensagem do usuário como query de busca, limitado a 50 resultados e com budget de 3 segundos. Se a recuperação expirar ou falhar, o sistema degrada graciosamente e responde sem memória, em vez de falhar.

    try:
        records = memory_client.retrieve_memory_records(
            memoryId=MEMORY_ID,
            namespace=f'sprout/{chat_id}/long_term',
            searchCriteria={
                'searchQuery': user_message,
                'topK': 50,
                'metadataFilters': []
            },
        )  # 3s timeout
    except Exception:
        records = []  # fall back to answering without memory

    2. Montar: preferências explícitas têm prioridade sobre fatos inferidos, a ordem é estável dentro de cada classe, e o resultado é limitado antes da injeção:

    def assemble(records, cap=50):
        explicit = [r for r in records if r.type == 'USER_PREFERENCE']
        inferred = [r for r in records if r.type != 'USER_PREFERENCE']
        # explicit beats inferred; stable order within each class
        ordered = explicit + inferred
        return ordered[:cap]

    Metadados: subagrupando memórias dentro de um namespace

    Namespaces respondem de quem é um registro, mas metadados respondem sobre o quê ele trata. Dentro de sprout/{chat_id}/long_term, uma busca semântica por “minhas petúnias estão murchando” retornaria tudo que está semanticamente próximo — incluindo uma preferência de fertilizante de março e uma nota de poda de figueira. Metadados estruturados ajudam a restringir o escopo antes que os registros cheguem ao prompt.

    Uma regra fundamental: uma chave de metadado só é filtrável no servidor se for declarada como chave indexada. Você pode aprender mais sobre isso em Filtragem estruturada de memória com metadados no Amazon Bedrock AgentCore Memory. O Sprout usa três chaves indexadas:

    IndexedKeys:  # on the AWS::BedrockAgentCore::Memory resource
      - Key: type       # seperate the kinds of records
        Type: STRING
      - Key: section    # which bed or area it describes
        Type: STRING
      - Key: plants     # what is growing there
        Type: STRINGLIST

    Persistindo o turno e fechando o loop

    Após o modelo responder, o server.py chama CreateEvent com o turno do usuário e o turno do assistente. Esse novo evento alimenta as estratégias de extração, que enriquecem o armazenamento de longo prazo para a próxima vez:

    memory.create_event(
        memoryId=MEMORY_ID,
        actorId=chat_id,
        sessionId=session_id,
        payload=[
            {'role': 'user', 'content': user_message},
            {'role': 'assistant', 'content': reply},
        ],
    )
    # feeds USER_PREFERENCE / SEMANTIC / SUMMARIZATION extraction; errors are logged, never fatal

    A extração é assíncrona, então um fato mencionado nesta sessão tipicamente se torna recuperável em uma sessão posterior. O design considera esse delay: eventos de sessão de curto prazo cobrem a conversa atual, e registros de longo prazo cobrem tudo o que veio antes.

    Mantendo os custos de inferência baixos com prompt caching

    Injetar memória em cada turno torna o system prompt grande, e uma implementação ingênua pagaria por esses tokens em cada requisição. O prompt caching no Amazon Bedrock resolve isso. O assistente estrutura seu prompt de forma que o prefixo estável — a persona e o bloco de memória montado — venha primeiro, e a mensagem volátil do usuário venha por último. O Bedrock faz cache do prefixo processado entre requisições, então turnos repetidos dentro de uma conversa pulam o reprocessamento da parte inalterada. O prompt caching pode reduzir custos em até 90% e a latência em até 85% para modelos compatíveis.

    A regra de ordenação importa mais do que qualquer configuração individual: coloque conteúdo estável primeiro, conteúdo volátil por último, e mantenha a ordenação interna do bloco de memória determinística — o que a função de montagem mostrada anteriormente facilita — para que o prefixo realmente coincida entre requisições.

    Diretrizes de design para construir sobre AgentCore e OpenClaw

    O Sprout é um assistente, mas as decisões por trás dele se generalizam. Estas são as diretrizes que a AWS recomenda para qualquer domínio:

    • Envolva, não bifurque. Adapte seu framework de agente ao contrato de container do AgentCore com um wrapper HTTP fino, em vez de modificar o framework. O contrato é pequeno — porta 8080 com /ping e /invocations — e um wrapper mantém você no caminho de atualização do framework.
    • Projete namespaces antes de armazenar qualquer coisa. Namespaces de memória são seu limite de isolamento. Use o ID do usuário como único segmento variável e escolha-o a partir de um ID nativo do canal em que você já confia.
    • Trate memória como melhoria, nunca como dependência. Toda operação de memória deve poder falhar graciosamente. Falhas de recuperação devem produzir uma resposta sem memória, sem bloquear a resposta. Usuários perdoam um turno esquecido muito mais facilmente do que um turno com falha.
    • Roteie modelos por tarefa. Use um modelo rápido e econômico para texto de alto volume e reserve um modelo multimodal mais robusto para os turnos que precisam dele. Mantenha os IDs dos modelos em variáveis de ambiente.
    • Ordene prompts para o cache. Persona estável e memória primeiro, input volátil do usuário por último, ordenação determinística ao longo de tudo.
    • Planeje para a latência de extração. A memória de longo prazo é extraída de forma assíncrona — não prometa recall na mesma sessão de fatos novos.
    • Defina um orçamento desde o primeiro dia. Um alerta no AWS Budgets em 80% e 100% de um teto mensal não custa nada e evita surpresas.
    • Mantenha skills pequenas e com propósito único. Uma skill deve fazer uma coisa que o usuário nomearia em uma frase — verificar o clima ou definir um lembrete. Skills pequenas são testáveis e trocáveis de forma independente.

    Como implantar sua própria versão

    Há duas formas de colocar o projeto no ar:

    • Launch Stack em um passo: o template do CloudFormation aponta para uma imagem pública do Amazon Elastic Container Registry (Amazon ECR), então implanta com apenas um token do Telegram bot.
    • Build próprio: o script scripts/deploy.sh valida o template, constrói e envia sua própria imagem ARM64 para seu repositório privado do Amazon ECR, implanta o stack e registra o webhook do Telegram — para um build totalmente customizável.

    O uso pessoal leve custa cerca de US$ 5–9/mês em julho de 2026 (aproximadamente US$ 2 de infraestrutura, US$ 1–3 de texto com Haiku e US$ 2 de visão com Sonnet), com um AWS Budget embutido que alerta em 80% e 100% do teto que você definir. O código-fonte completo está disponível no repositório GitHub sample-agentcore-memory-openclaw.

    Limpeza do ambiente

    Ao terminar os experimentos, a AWS recomenda remover todos os recursos para evitar cobranças contínuas. Como todo o sistema é um único stack do CloudFormation, a limpeza é basicamente uma única exclusão:

    • Exclua o stack do CloudFormation — isso remove o agente AgentCore runtime, o API Gateway, as funções Lambda, o agendamento do EventBridge e as funções do AWS Identity and Access Management (IAM) associadas.
    • Exclua o armazenamento de memória do AgentCore (e seus namespaces) para que nenhum registro de usuário seja retido.
    • Exclua as imagens enviadas para seu repositório privado do ECR e o próprio repositório, se não for mais necessário.
    • Remova o alerta do AWS Budget, se criado fora do stack.
    • Revogue o webhook do Telegram (ou exclua o bot pelo BotFather) e revogue o acesso ao modelo do Bedrock, se não for mais necessário.

    Conclusão

    O núcleo reutilizável desta solução é um agente serverless no Amazon Bedrock AgentCore com um sistema de skills e memória gerenciada. O AgentCore Memory elimina a necessidade de construir pipelines customizados de vetores e extração, enquanto mantém controle total sobre o que o agente lembra e esquece. O compute baseado em consumo combinado com prompt caching mantém um assistente genuinamente personalizado por poucos dólares por mês, e o manifesto de skills do OpenClaw torna o padrão portátil entre domínios.

    A personalização também se compõe ao longo do tempo: quanto mais um usuário interage, mais útil o assistente se torna. Para ir além, a AWS sugere começar com um único domínio como lembretes de rega e expandir o escopo de memória incrementalmente, explorar memória episódica para que o agente possa referenciar conversas passadas específicas, ou fazer fork do repositório, trocar a persona e as skills, e construir o assistente que você precisar.

    Para aprofundar nos componentes individuais, a AWS disponibilizou posts relacionados: Amazon Bedrock AgentCore memory: construindo agentes com contexto, Construindo agentes de IA mais inteligentes: deep dive na memória de longo prazo do AgentCore, Como usar o prompt caching no Amazon Bedrock de forma eficaz e Lançando e escalando agentes e ferramentas com segurança no Amazon Bedrock AgentCore runtime. Para a documentação oficial, consulte a documentação do AgentCore.

    Fonte

    Building a context-aware AI assistant on AgentCore and OpenClaw (https://aws.amazon.com/blogs/machine-learning/building-a-context-aware-ai-assistant-on-agentcore-and-openclaw/)

  • Governança Responsável de IA: Como a AWS Posiciona Clientes para Atender à ISO/IEC 42005:2025

    O Momento da Governança de IA

    A adoção de IA generativa está acontecendo em um ritmo mais acelerado do que o computador pessoal ou a internet em seu tempo, e os números confirmam isso: os investimentos globais relacionados à IA em 2025 chegaram a US$ 581,69 bilhões. Com esse volume de recursos e velocidade de adoção, as organizações precisam não apenas usar IA para impulsionar suas operações, mas fazê-lo com responsabilidade.

    Pesquisadores ligados à AI Adoption Initiative propõem que a força de trabalho se relaciona com a IA por meio de uma estrutura chamada AI Labor Stack, composta por três perfis: inovadores, facilitadores e usuários de IA. Nesse modelo, os facilitadores são frequentemente o “meio ausente” nas estratégias nacionais de IA — justamente as pessoas responsáveis por transformar capacidade tecnológica em implantação prática dentro de empresas, setores e serviços públicos.

    É para esse perfil de profissional que a AWS voltou sua atenção ao publicar uma análise da norma internacional ISO/IEC 42005:2025, explorando como ela pode ser usada para integrar avaliações de impacto de IA a um ecossistema mais amplo de governança corporativa.

    A Aposta da AWS em Padrões Internacionais

    A Organização Internacional de Normalização (ISO) tem desenvolvido padrões específicos para gestão de riscos em IA, e a Amazon Web Services (AWS) tem sido uma participante ativa desse processo — tanto obtendo certificações para seus próprios serviços quanto incentivando clientes a fazerem o mesmo.

    A AWS já conquistou a certificação ISO/IEC 42001 para quatro serviços de IA: Amazon Bedrock, Amazon Q Business, Amazon Transcribe e Amazon Textract. Além disso, a empresa disponibiliza ferramentas práticas para apoiar a governança de IA alinhada à ISO/IEC 42005 e outras boas práticas de IA responsável, como o guia de implementação do Sistema de Gestão de IA (AIMS) ISO/IEC 42001:2023 na AWS e o Well-Architected Framework: Responsible AI Lens.

    O Que é uma Avaliação de Impacto de Sistema de IA?

    Antes de entrar nos detalhes da norma, vale entender o conceito central: uma avaliação de impacto de sistema de IA é um processo documentado de identificação de riscos. Por meio dele, organizações que desenvolvem, fornecem ou utilizam sistemas de IA analisam os impactos potenciais sobre a própria organização, indivíduos, comunidades, grupos e sociedade como um todo.

    Esse processo também canaliza seus resultados — como identificação de impactos à privacidade, riscos de discriminação ou problemas de desempenho — para as decisões de gestão de riscos da organização. Em termos práticos, isso significa escolher as salvaguardas adequadas para lidar com os riscos identificados antes que eles se tornem problemas reais.

    Por Que Integrar Avaliações de Impacto à Gestão de Riscos Corporativos?

    As avaliações de impacto de IA não existem isoladas: elas fazem parte do processo geral de gestão de riscos de uma organização. A ISO/IEC 42005 oferece orientação explícita sobre como integrar essas avaliações aos processos já existentes dentro de uma empresa, que normalmente incluem avaliações de risco, privacidade e segurança cibernética para sistemas de TI.

    Para organizações que já têm um ecossistema robusto de avaliações de impacto, o Anexo D da norma apresenta um processo que ajuda a simplificar as avaliações e evitar duplicações — coordenando as revisões necessárias em áreas como risco, jurídico, segurança, privacidade, compras e arquitetura. Já para organizações que preferem uma avaliação de impacto de IA independente, o Anexo E oferece um modelo pronto para uso.

    Como a ISO/IEC 42005 Estrutura o Processo de Governança de IA

    A norma ISO/IEC 42005 oferece orientação em quatro frentes principais:

    • Como desenvolver o conteúdo das avaliações de impacto de sistemas de IA;
    • Como executar essas avaliações na prática;
    • Em que momento do ciclo de vida da IA as avaliações devem ser integradas;
    • Como documentar o processo e seus resultados.

    Criando Processos Repetíveis e Escaláveis

    Para organizações que buscam uma abordagem estruturada e consistente, a norma cobre o ciclo de vida completo da avaliação — desde o escopo e a execução até a análise, o relatório e o monitoramento contínuo. Ela também define quando uma avaliação deve ser realizada, qual deve ser seu nível de abrangência e como estabelecer gatilhos para reavaliação.

    Entre os fatores que podem indicar a necessidade de uma reavaliação, a norma menciona: requisitos legais aplicáveis, obrigações contratuais, políticas internas, expectativas de clientes e mudanças no sistema de IA, em seu ambiente operacional ou em seu contexto de uso.

    A norma também descreve como conduzir uma triagem inicial — uma classificação rápida para determinar se uma avaliação mais abrangente é necessária com base no nível de risco identificado — antes de comprometer recursos com uma avaliação completa.

    Projetando Avaliações: As Perguntas que Precisam Ser Respondidas

    Para quem está começando a estruturar avaliações de impacto de IA, a ISO/IEC 42005 especifica as informações que devem ser documentadas. Entre os itens obrigatórios estão:

    • Descrição do sistema de IA e seus usos pretendidos;
    • Como ele pode ser previsivelmente mal utilizado;
    • Os dados usados para desenvolver o sistema, seus componentes e algoritmos subjacentes;
    • O ambiente em que será implantado;
    • Os indivíduos e comunidades que podem ser afetados pelo sistema.

    A norma também fornece uma metodologia para identificar tanto os impactos positivos quanto os negativos dos sistemas de IA, considerando como o sistema pode ser usado e mal utilizado. Ela usa uma variedade de objetivos de IA — como justiça, confiabilidade, privacidade e segurança — como critérios para avaliar benefícios e danos. Além disso, orienta sobre como identificar e consultar partes interessadas, incluindo a coleta de contribuições de comunidades diversas.

    Suporte à Certificação ISO/IEC 42001

    Para organizações que estão buscando a certificação ISO/IEC 42001, a norma ISO/IEC 42005 oferece orientação complementar sobre como tratar a avaliação de impacto de IA como um controle-chave do processo de certificação. O Anexo A da norma detalha especificamente como a ISO/IEC 42005 apoia os requisitos da ISO/IEC 42001.

    A AWS oferece certificação acreditada ISO/IEC 42001 para seus serviços de IA — Amazon Bedrock, Amazon Q Business, Amazon Textract e Amazon Transcribe — e, com base nessa experiência, desenvolveu boas práticas para ajudar outras organizações em sua jornada de IA responsável.

    Ferramentas da AWS para Apoiar a Jornada de IA Responsável

    A AWS disponibiliza dois recursos principais para quem quer colocar esses conceitos em prática:

    O AWS Well-Architected Responsible AI Lens auxilia equipes de desenvolvimento a construir e operar soluções de IA de forma responsável para casos de uso específicos. Ele se alinha estreitamente com a ISO/IEC 42005 em três pontos fundamentais:

    • Identificação de benefícios e danos: ambos orientam os desenvolvedores a mapear os benefícios esperados e os danos potenciais;
    • Integração à gestão de riscos: ambos priorizam a incorporação dos resultados da identificação e análise de riscos nas decisões de tratamento e mitigação;
    • Integração ao ciclo de vida: ambos posicionam as avaliações de impacto como parte integrante do ciclo de desenvolvimento de IA, e não como um exercício pontual de conformidade.

    O segundo recurso é o guia de conformidade ISO/IEC 42001: implementação na AWS, compartilhado em maio de 2026, que orienta organizações no design e operação de Sistemas de Gestão de IA (AIMS) usando serviços da AWS.

    Conclusão

    Padrões internacionais como a ISO/IEC 42001 e a ISO/IEC 42005 têm um papel concreto: promover confiança, interoperabilidade e responsabilidade — elementos que impulsionam a inovação e a adoção de IA em diferentes contextos globais. Ao investir em ferramentas que facilitam o alinhamento a esses padrões, a AWS oferece aos seus clientes uma validação independente de seu compromisso com o desenvolvimento responsável de IA e um modelo de como os serviços de IA da plataforma podem acelerar a jornada de conformidade das organizações.

    Aviso importante: as orientações sobre avaliação de riscos e impactos compartilhadas no artigo original têm caráter geral e educativo. Cada organização é responsável por conduzir suas próprias avaliações de risco específicas ao contexto, conforme exigido pela norma e pelos reguladores. O conteúdo não deve ser interpretado como uma abordagem exaustiva ou garantia de conformidade com qualquer padrão de gestão de riscos ou legislação vigente.

    Fonte

    Responsible AI governance: How AWS positions customers to align with ISO/IEC 42005:2025 (https://aws.amazon.com/blogs/machine-learning/responsible-ai-governance-how-aws-positions-customers-to-align-with-iso-iec-420052025/)

  • Boas práticas de administração e governança do Amazon SageMaker HyperPod

    O desafio de governar clusters compartilhados

    O Amazon SageMaker HyperPod oferece a times de aprendizado de máquina (ML) acesso a grandes pools de compute acelerado para treinar e ajustar modelos. Quando várias equipes compartilham um mesmo cluster, a parte técnica costuma ser simples. O que complica é a governança: quem pode usar o cluster, quanto cada time recebe, o que acontece quando workloads competem por recursos e quem responde quando o uso se afasta da política definida.

    O Amazon SageMaker Unified Studio adiciona mais uma camada a esse cenário: é possível conectar um cluster HyperPod a um projeto para que membros do time lancem workloads diretamente do workspace. Isso é conveniente, mas quando múltiplas equipes passam a enxergar o mesmo cluster, os controles sobre quem pode fazer o quê se tornam ainda mais críticos.

    A AWS publicou um guia de boas práticas que mostra como administrar o SageMaker HyperPod pelo SageMaker Unified Studio preservando os controles de governança subjacentes. O modelo cobre quatro camadas de controle — organização, projeto, cluster e workload — e explica como estruturar políticas de identidade, capacidade e observabilidade em cada uma delas.

    Vale lembrar: o SageMaker HyperPod é uma capacidade do Amazon SageMaker AI, enquanto o SageMaker Unified Studio é o ambiente de desenvolvimento de dados e IA onde os times trabalham com suas ferramentas. A separação entre os dois é justamente o que dá à equipe de infraestrutura um modelo operacional claro.

    As quatro camadas de controle

    Um ambiente bem governado separa administração organizacional, acesso por projeto e operações de cluster. Cada camada responde a uma pergunta diferente e usa um controle diferente:

    • Organização: domínios e unidades de domínio do SageMaker Unified Studio, contas associadas, perfis de projeto e políticas de autorização. Define quem pode criar projetos, quais contas e regiões estão disponíveis e quais ferramentas são permitidas.
    • Projeto: membros do projeto, papéis e conexões com o HyperPod. Define o contexto de colaboração e os recursos AWS que os membros podem acessar.
    • Cluster: papéis de administrador do HyperPod, entradas de acesso ao Amazon EKS, Controle de Acesso Baseado em Papel (RBAC), EKS Pod Identity ou controles do Slurm. Governa configuração do cluster, acesso ao scheduler, namespaces, tarefas e operações de infraestrutura.
    • Workload: alocações de compute, classes de prioridade, políticas de empréstimo e permissões de tarefa. Controla quem pode submeter trabalho e como a capacidade compartilhada é distribuída.
    Imagem original — fonte: Aws

    Um ponto importante: uma conexão do HyperPod adiciona um cluster aprovado a um projeto, mas não substitui os controles de Gerenciamento de Identidade e Acesso (IAM), Amazon EKS ou Slurm já existentes. Papéis de projeto, papéis de acesso de conexão, entradas EKS, RBAC, identidade de workload, políticas de dados e de chaves do AWS Key Management Service (AWS KMS), políticas de rede e controles do scheduler devem ser revisados em conjunto. O cluster só deve ser disponibilizado depois que todos esses controles estiverem alinhados.

    Projetos do SageMaker Unified Studio são fronteiras de colaboração — não são fronteiras fortes de segurança em tempo de execução. O cluster HyperPod, o scheduler e a capacidade de aceleradores devem permanecer sob uma conta de capacidade designada. Para Amazon EKS, a recomendação é usar um namespace por tenant com RBAC, contas de serviço por tenant com papéis EKS Pod Identity, políticas de rede com negação padrão e permissões de armazenamento e KMS específicas por tenant. Para Slurm, usar contabilidade hierárquica com associações, Qualidade de Serviço (QoS), políticas de prioridade e partições.

    Quando o SageMaker Unified Studio é a experiência certa

    Com o SageMaker Unified Studio, times de ML que já trabalham em um projeto podem seguir um caminho aprovado para acessar o compute compartilhado do HyperPod — encontrar clusters conectados, revisar status e metadados, inspecionar tarefas e métricas, e abrir o JupyterLab sem precisar de um inventário de infraestrutura separado.

    Mas essa experiência não substitui a administração do cluster. Cada persona tem seu papel:

    • Administrador de domínio ou infraestrutura: usa o Unified Studio para unidades de domínio, políticas de criação de projetos e perfis. Continua usando ferramentas específicas para provisionamento de contas e automação de infraestrutura.
    • Administrador do cluster HyperPod: usa o Unified Studio para apresentar conexões aprovadas e revisar metadados. Continua usando as interfaces do SageMaker AI para criação, atualização, resiliência e resposta a incidentes.
    • Dono do projeto: gerencia membros e o contexto de compute aprovado. Solicita mudanças de infraestrutura por canais adequados.
    • Engenheiro de ML ou cientista de dados: encontra compute aprovado, revisa status de workloads e abre o JupyterLab. Submete e gerencia workloads detalhados pelo HyperPod CLI, kubectl ou ferramentas Slurm.

    Para mudanças no cluster e automação repetível, a recomendação é continuar usando APIs do SageMaker AI, infraestrutura como código e ferramentas de orquestração. Implementações de referência estão disponíveis no site AI on SageMaker HyperPod.

    Decisões antes de conectar um cluster

    Antes de aprovar uma conexão, a AWS recomenda documentar a conta de capacidade, contas de consumidor ou dados, região AWS, caminhos de rede, identidades, donos, fronteiras de workload e requisitos de isolamento. Para orientações sobre criação de cluster, consulte a documentação do Amazon SageMaker HyperPod.

    Alguns princípios fundamentais para essa etapa:

    • Separe identidades administrativas e de workload. Um papel voltado para o projeto não deve receber permissões de ciclo de vida do cluster só porque seus usuários executam workloads. Consulte AWS Identity and Access Management para SageMaker HyperPod para o modelo de permissões suportado.
    • Trate a rede como controle de ponta a ponta. Restrinja o acesso ao endpoint da API Kubernetes do EKS a caminhos administrativos aprovados, controle ingresso e egresso de pods, e configure endpoints de VPC para serviços como Amazon S3, Amazon ECR e Amazon CloudWatch. Para configuração específica do orquestrador, consulte Orquestrando clusters SageMaker HyperPod com Amazon EKS.
    • Crie um contrato de conexão. Esse é um registro de governança gerenciado pelo cliente — pode ser uma página de wiki, ticket, registro de service catalog ou arquivo em repositório de infraestrutura como código. Não é uma funcionalidade da plataforma. Deve registrar: dono de negócio, operações e custos; domínio e projeto no Unified Studio; conta, região, nome e orquestrador do cluster; papel do projeto e ARN do papel de acesso; tipos de workload aprovados e classificação de dados; namespaces EKS ou escopo de acesso Slurm; política de scheduling e dono de exceções; e expectativas de monitoramento e descomissionamento.

    Governança de identidade e visibilidade de tarefas

    Controlar tanto ações quanto visibilidade é essencial. Uma configuração incorreta de nomes de tarefas, namespaces e padrões de uso pode revelar informações sobre o trabalho de outra equipe.

    A AWS chama atenção para um detalhe importante: por padrão, usuários do SageMaker AI Studio conseguem ver todas as tarefas de clusters Amazon EKS. Para clusters Slurm, todo usuário do Studio pode visualizar, gerenciar e interagir com tarefas disponíveis. Por isso, é necessário configurar restrições de visibilidade de tarefas antes de integrar múltiplas equipes — veja Restringir visibilidade de tarefas no Studio para clusters EKS e Restringir visibilidade de tarefas no Studio para clusters Slurm.

    Para clusters Amazon EKS, cada time deve ser mapeado para um namespace aprovado com permissões RBAC, e cada conta de serviço de workload deve estar associada a um papel IAM específico do tenant. Para acesso a dados entre contas, o EKS Pod Identity realiza a assunção de papel entre contas automaticamente, sem que o código da aplicação precise chamar AssumeRole diretamente.

    Manter visibilidade somente leitura separada das permissões para criar, atualizar ou excluir workloads é fundamental. O exemplo abaixo, presente no guia original, mostra um Role Kubernetes RBAC que concede a um time acesso somente leitura a jobs apenas em seu próprio namespace:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      namespace: team-research
      name: research-job-viewer
    rules:
    - apiGroups: ["batch"]
      resources: ["jobs"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["kubeflow.org"]
      resources: ["pytorchjobs"]
      verbs: ["get", "list", "watch"]

    Um papel separado é necessário para criar ou excluir workloads, mantendo “ver” separado de “agir”.

    Traduzindo prioridades de negócio em política de scheduling

    Para clusters Amazon EKS, a AWS recomenda aplicar a governança de tarefas somente depois que os controles de identidade e acesso de workload estiverem em vigor. A separação entre autorização e política de scheduling é um ponto central do guia.

    Imagem original — fonte: Aws

    RBAC do EKS ou listas de controle de acesso (ACLs) do Slurm determinam se um usuário pode submeter um workload. A governança de tarefas do SageMaker HyperPod para Amazon EKS ou os controles nativos do Slurm determinam quando esse workload autorizado recebe compute. Usar quota do scheduler como controle de acesso, ou usar controles de autorização como política de scheduling, gera comportamento ambíguo e dificulta o diagnóstico de incidentes.

    A AWS recomenda documentar capacidade garantida e compartilhada, classes de prioridade e se um time pode usar a alocação ociosa de outro. Por exemplo: o time de treinamento de produção pode receber 60% de alocação garantida com classe de alta prioridade, enquanto o time de pesquisa toma capacidade ociosa em prioridade mais baixa e pode ser preemptado quando o time de produção submeter trabalho. Cada exceção a essa política deve ter um dono designado.

    A governança de tarefas também se aplica aos SageMaker HyperPod spaces — ambientes JupyterLab ou Code Editor que rodam diretamente no cluster — portanto esses workloads interativos devem ser incluídos na política de alocação. O post Boas práticas para governança de tarefas do Amazon SageMaker HyperPod detalha pesos de fair-share, quotas, empréstimo e preempção para clusters EKS.

    Observabilidade como ciclo de feedback de governança

    Com o SageMaker Unified Studio, é possível visualizar detalhes do cluster HyperPod — tarefas, métricas, configurações e metadados. Para clusters EKS, as métricas de governança de tarefas incluem visões de hardware, time e tarefa, que ajudam a comparar a intenção da política com o consumo real.

    A recomendação é tratar a observabilidade como um ciclo: monitorar sinais, comparar com a intenção da política, decidir uma resposta e ajustar política e alocações. Cada sinal monitorado deve ter um dono e uma resposta definidos. Alguns exemplos práticos do guia:

    • Capacidade do cluster e utilização de aceleradores: verificar se baixa utilização é temporária, orientada por política ou causada por restrições de workload.
    • Alocação e utilização por time: revisar se a capacidade reservada e compartilhada ainda reflete a demanda de negócio.
    • Tempo de execução e espera de tarefas: investigar política de prioridade, dimensionamento de workload ou contenção de capacidade.
    • Tarefas pendentes e preemptadas: confirmar que os resultados do scheduler correspondem ao modelo de prioridade aprovado.
    • Saúde de nós e eventos de recuperação: acionar o processo de incidente do cluster e validar objetivos de recuperação.

    O add-on Amazon CloudWatch Observability EKS é necessário para as visões de métricas documentadas. Ele requer versão 2.4.0 ou superior e a política IAM CloudWatchAgentServerPolicy anexada ao papel do nó worker Kubernetes. Métricas do Kueue, que alimentam as visões de governança de tarefas, podem gerar cobranças do CloudWatch após o nível gratuito. Consulte a documentação do dashboard do SageMaker HyperPod para considerações atuais de configuração e preços.

    Revisando conexões ao longo do ciclo de vida

    A AWS recomenda definir um calendário de revisão para cada conexão, além de revisões orientadas por eventos — mudanças de dono de projeto, papéis de acesso, conta ou região, capacidade do cluster, versão do orquestrador, classificação de dados ou cobertura de monitoramento. O contrato de conexão deve registrar cada decisão tomada.

    Imagem original — fonte: Aws

    O ciclo de vida de uma conexão passa por quatro fases: aprovação com contrato registrado, operação com monitoramento de uso e custo, revisão periódica e orientada por eventos, e por fim renovação ou revogação. Automação de inventário e coleta de evidências é bem-vinda onde reduz trabalho manual, mas a aprovação deve permanecer com administradores responsáveis. Conexões sem propósito de negócio ou dono responsável devem ser revogadas.

    Por onde começar

    O guia da AWS sugere começar com um cluster fora de produção e um projeto de teste. Antes de adicionar membros, configure identidade de workload, escopo de namespace ou Slurm, permissões de dados, política de rede, restrições de visibilidade de tarefas e governança de tarefas para EKS (ou controles nativos de scheduling para Slurm). Instale o add-on Amazon CloudWatch Observability EKS para que as visões de métricas sejam populadas, e registre a aprovação completa no contrato de conexão. Use papéis entre contas para contas de consumidor aprovadas e infraestrutura dedicada quando isolamento rígido for exigido. Para os passos de implementação, consulte o procedimento de conexão do SageMaker HyperPod.

    Fonte

    Best practices for Amazon SageMaker HyperPod administration and governance (https://aws.amazon.com/blogs/machine-learning/best-practices-for-amazon-sagemaker-hyperpod-administration-and-governance/)

  • Amazon Quick com suporte enterprise: promoção automatizada e auditável de recursos entre contas AWS

    O problema: promoção manual entre contas é lenta e arriscada

    O Amazon Quick é o assistente de inteligência artificial agêntico da Amazon voltado para o ambiente corporativo. Com ele, as equipes constroem agentes que raciocinam sobre dados internos, acionam conectores e executam tarefas em múltiplas etapas. O problema surge quando esses recursos — agentes de chat, conectores de ação, bases de conhecimento, fluxos e espaços — precisam ser promovidos de uma conta AWS de desenvolvimento para uma conta de produção.

    A maioria das empresas mantém contas AWS separadas para desenvolvimento e produção, às vezes com um ambiente de garantia de qualidade (QA) no meio. Quando os recursos são validados no ambiente de desenvolvimento, não existe um mecanismo nativo de “um clique” para promovê-los à próxima conta. As equipes precisam recriar cada recurso manualmente: reconfigurar agentes com as mesmas instruções e prompts iniciais, reconectar os conectores de ação, reatribuir permissões e reprovisionar o bucket do Amazon Simple Storage Service (Amazon S3), sua política e a fonte de dados de cada base de conhecimento.

    Esse processo é lento, difícil de auditar e fácil de errar em detalhes sutis — o que compromete exatamente a governança que as empresas precisam demonstrar.

    A solução: Quick Resource Migrator via servidor MCP

    A AWS publicou um guia detalhado apresentando o Quick Resource Migrator, um servidor MCP (Protocolo de Contexto de Modelo) de exemplo hospedado no runtime do Amazon Bedrock AgentCore. Ele automatiza a promoção de recursos do Amazon Quick entre contas em uma única chamada de ferramenta.

    O funcionamento é direto: você escolhe um tipo de recurso (agente, conector, base de conhecimento, fluxo ou espaço) e seleciona pelo identificador, pelo nome ou todos de uma vez. O servidor lê o recurso e suas permissões via API do Amazon Quick Sight e os replica na conta de destino exatamente como estavam. O código-fonte completo está disponível no repositório aws-samples.

    Dois princípios norteiam o design:

    • Idempotência: o migrador nunca emite um comando de exclusão contra a conta de destino. Cada execução apenas cria ou atualiza recursos. Rodar o processo várias vezes converge sempre para o mesmo estado, sem duplicatas nem falhas.
    • Reversibilidade segura: antes de atualizar qualquer recurso existente na conta de destino, o servidor grava um snapshot versionado desse recurso em um bucket S3 dedicado. Se esse backup não puder ser gravado, a atualização é abortada. Isso garante um histórico completo e a possibilidade de rollback.

    O que é migrado e como

    Agentes de chat

    Recriados com suas instruções personalizadas, identidade, tom, prompts iniciais e mensagem de boas-vindas. Os conectores de ação são reanexados com os identificadores de recurso (ARNs) remapeados para a conta de destino. Quando um espaço é migrado, seus agentes são automaticamente revinculados a ele.

    Conectores de ação

    Recriados com sua configuração. Valores secretos nunca são lidos da conta de origem — os conectores são criados com credenciais temporárias e reautenticados na conta de destino.

    Bases de conhecimento

    A base de conhecimento é registrada na conta de destino, sua fonte de dados é recriada e as permissões são copiadas. Para bases apoiadas em S3, o migrador também provisiona o bucket de destino e sua política. Os documentos em si (objetos S3) não são copiados.

    Fluxos

    Recriados na conta de destino a partir de sua definição. Como os identificadores de fluxo diferem entre contas, o matching é feito pelo nome: um fluxo com o mesmo nome na conta de destino é atualizado; caso contrário, um novo é criado. As permissões são copiadas.

    Espaços

    Recriados na conta de destino e revinculados a seus agentes, conectores e bases de conhecimento, com ARNs remapeados. As permissões do espaço são copiadas. A recomendação é migrar os recursos vinculados primeiro, para que os ARNs de destino já existam quando o espaço for criado.

    Princípios de design e segurança

    A solução adota um modelo de três contas: uma conta runner central hospeda o servidor MCP no runtime do Amazon Bedrock AgentCore. Essa conta assume um papel somente leitura na conta de origem e um papel de leitura e escrita na conta de destino usando o Serviço de Token de Segurança da AWS (AWS STS) — nenhuma credencial de longa duração é armazenada em lugar algum.

    O runtime autentica os chamadores com um Token Web JSON (JWT) do Amazon Cognito e pode operar em modo de rede de Nuvem Privada Virtual (VPC). O papel na conta de origem tem apenas permissões de leitura. O papel na conta de destino possui somente as ações necessárias para a migração — sem privilégios excessivos.

    A tabela abaixo resume as responsabilidades de cada componente da arquitetura:

    • Runtime AgentCore (conta runner): hospeda o servidor MCP, assume papéis nas contas de origem e destino e orquestra a migração.
    • Amazon Cognito (conta runner): emite o JWT que os chamadores apresentam ao AgentCore.
    • Papel de execução runner: permissões para Amazon CloudWatch Logs, telemetria e sts:AssumeRole nas contas de origem e destino.
    • Papel migrador (conta de origem): permissões de leitura somente para o Quick Sight e bases de conhecimento.
    • Papel migrador (conta de destino): permissões de criação e atualização no Quick Sight, escrita em bases de conhecimento e S3, e ListUsers para resolução de principais.
    • Bucket de backup (conta runner): bucket S3 criptografado que armazena snapshots versionados dos recursos antes de cada atualização.

    As cinco ferramentas expostas pelo servidor MCP

    preview_migration (somente leitura)

    Recebe o ID da conta de origem, o tipo de recurso, o seletor e a região AWS. Retorna um inventário do que seria migrado — nomes e tipos — sem realizar nenhuma alteração. Quando o ID da conta de destino também é informado, a resposta adiciona um mapeamento indicando se cada recurso seria criado (CREATE) ou atualizado (UPDATE). Ideal como passo de aprovação antes de qualquer promoção.

    migrate_resources (migração completa)

    Executa a migração completa de criação ou atualização e retorna um relatório estruturado de tudo o que foi criado, atualizado e concedido, além de eventuais erros. Por ser idempotente, pode ser executado em cada release.

    list_backups (somente leitura)

    Lista as versões disponíveis de cada recurso no catálogo de backups — os snapshots gravados antes de cada atualização.

    get_backup (somente leitura)

    Retorna o backup completo de um determinado recurso e versão (por padrão, a mais recente), incluindo a configuração capturada e suas dependências.

    restore_backup

    Reaaplica uma versão de backup salva sobre o recurso de destino, atualizando-o no lugar ou recriando-o se não existir mais. Antes de restaurar, captura um novo backup — tornando o próprio rollback reversível.

    Fluxo de migração passo a passo

    O processo segue esta sequência lógica:

    • Resolução de recursos: a partir do tipo e do seletor, o servidor identifica os IDs concretos na conta de origem.
    • Descrição da origem: cada recurso selecionado é descrito para capturar configuração e permissões.
    • Conectores: recriados com configuração de autenticação sanitizada e credenciais temporárias.
    • Bases de conhecimento: bucket de destino criado, política aplicada, fonte de dados e base de conhecimento provisionadas, permissões copiadas.
    • Agentes: recriados com conectores de ação reanexados e permissões copiadas.
    • Fluxos: recriados por nome, com permissões copiadas.
    • Espaços: recriados e revinculados a agentes, conectores e bases de conhecimento com ARNs remapeados.
    • Relatório: retorno em JSON com recursos criados, atualizados, buckets, backups, permissões ignoradas e erros.

    Implantação e uso via Quick App

    As instruções completas de implantação estão no README do repositório aws-samples. Em linhas gerais, são implantadas três stacks do AWS CloudFormation: os papéis de Gerenciamento de Identidade e Acesso (IAM) entre contas, a rede VPC e o runtime AgentCore autenticado pelo Cognito que hospeda o servidor MCP. Em seguida, esse runtime é registrado como um conector de ação no Amazon Quick.

    Ao registrar o runtime como conector de ação, é possível acionar o migrador diretamente do Amazon Quick em linguagem natural. Também é possível construir um Quick App — uma experiência web guiada sobre as mesmas ferramentas MCP. O repositório inclui um prompt de construção do app pronto para uso: basta colá-lo no construtor de apps do Amazon Quick, substituindo os IDs de conector e ação pelos seus próprios.

    O app gerado transforma o fluxo de trabalho em uma experiência guiada: escolha as contas de origem e destino e os recursos a promover, visualize o que será criado ou atualizado, execute a migração e revise o histórico completo de cada promoção passada — cada entrada respaldada pelos snapshots versionados gravados no S3.

    Para fazer rollback, basta selecionar a versão de backup desejada e acionar a restauração. O app reaaplica aquela versão salva no recurso de destino. Como ele captura um novo backup antes de restaurar, o próprio rollback é reversível.

    Conclusão

    A promoção entre contas é uma expectativa básica para software corporativo, e até agora era justamente a peça que faltava no Amazon Quick. Com o Quick Resource Migrator, a AWS transforma uma tarefa lenta, manual e difícil de auditar em um processo rápido, repetível e governado: uma única chamada de ferramenta recria agentes, conectores e bases de conhecimento na conta de destino, copia permissões fielmente e faz tudo de forma idempotente — podendo ser executado a cada release.

    Para quem quiser experimentar, o ponto de partida é clonar o repositório de exemplo, implantar em uma conta runner e testar a promoção de um agente ou base de conhecimento do desenvolvimento para a produção.

    Fonte

    Making Amazon Quick enterprise-ready: Automated, auditable cross-account resource promotion (https://aws.amazon.com/blogs/machine-learning/making-amazon-quick-enterprise-ready-automated-auditable-cross-account-resource-promotion/)

  • AWS Continuum for Penetration Testing agora se integra diretamente ao pipeline de CI/CD

    Testes de segurança direto no fluxo de desenvolvimento

    A AWS anunciou, em prévia pública, uma expansão importante para o AWS Continuum for Penetration Testing (anteriormente conhecido como AWS Security Agent): agora o serviço se integra diretamente a pipelines de Integração Contínua e Entrega Contínua (CI/CD), tornando o teste de penetração parte do próprio processo de deploy.

    O que muda na prática

    O AWS Continuum for Penetration Testing já oferecia testes de penetração contínuos e sob demanda, eliminando a necessidade de contratar fornecedores externos de pentest. Com essa novidade, a AWS dá mais um passo no conceito de shift left — ou seja, antecipar as verificações de segurança para as etapas mais iniciais do ciclo de desenvolvimento.

    Na prática, o que acontecia antes era o seguinte: mesmo com testes sob demanda disponíveis, a validação de segurança costumava ocorrer fora do fluxo de deploy. Isso criava uma lacuna: o código era publicado antes de passar por uma checagem de segurança adequada. A integração com CI/CD fecha exatamente esse gap.

    Como funciona a integração

    Com a nova funcionalidade, os times de desenvolvimento passam a receber os resultados dos testes diretamente na saída do pipeline. As informações incluem:

    • Severidade dos achados
    • Endpoints afetados
    • Orientações de remediação

    Alterações que não envolvem mudanças de segurança são concluídas sem atrasos relevantes. Além disso, após uma correção ser aplicada, o pipeline re-executa os testes e verifica automaticamente se o problema foi resolvido — sem necessidade de acionamento manual.

    Configuração acessível, sem exigir expertise em segurança

    Um ponto de destaque é a facilidade de adoção. A AWS afirma que nenhum conhecimento prévio em segurança é necessário para começar. O serviço gera automaticamente um trecho de configuração (snippet) que pode ser colado em qualquer pipeline existente, com setup estimado em menos de cinco minutos.

    Na primeira execução, o contexto da aplicação é carregado automaticamente — sem necessidade de realizar um teste de penetração completo anteriormente.

    Disponibilidade

    O teste de penetração contínuo com integração a CI/CD já está disponível em prévia pública. Para começar, a AWS disponibiliza a documentação oficial do serviço com todas as instruções necessárias.

    Fonte

    AWS Continuum for Penetration Testing now supports continuous penetration testing integrated directly into your CI/CD pipeline (https://aws.amazon.com/about-aws/whats-new/2026/10/aws-continuum-penetration-testing/)