Blog

  • Novo guia de conformidade HITRUST i1 na AWS disponível para organizações de saúde

    AWS publica guia de implementação para conformidade HITRUST i1

    A Amazon Web Services (AWS) acaba de publicar um novo material de orientação de conformidade: o HITRUST i1 Compliance on AWS: Customer Implementation Guidance with an Illustrative Healthcare Platform. O documento é voltado especialmente para organizações da área da saúde que utilizam a AWS como base de nuvem e precisam obter a certificação HITRUST i1.

    O que é o HITRUST i1 e por que ele importa?

    O HITRUST i1 é a certificação mais amplamente exigida no setor de saúde. A avaliação cobre 182 controles selecionados no nível de implementação (Implemented) e aparece com frequência em contratos com fornecedores, Acordos de Parceiro de Negócios (BAAs) e exigências de planos de saúde, sistemas hospitalares e associados de negócios como condição para estabelecer parcerias.

    Em outras palavras: para quem atua no ecossistema de saúde nos Estados Unidos — ou para empresas brasileiras que prestam serviços a clientes norte-americanos nesse setor — essa certificação pode ser um requisito contratual real.

    O que o guia cobre

    O material foi desenhado para preencher a lacuna entre entender o que o HITRUST i1 exige e saber como implementar esses requisitos na AWS. Ele conduz arquitetos de nuvem, engenheiros de segurança, responsáveis por conformidade e equipes de preparação para avaliação por todo o ciclo de um engajamento i1 — desde a definição do escopo da avaliação até a implementação de controles em cada domínio técnico.

    Os 11 domínios de controle técnico abordados no guia são:

    • Controle de acesso
    • Proteção de endpoints
    • Gerenciamento de configuração
    • Gerenciamento de vulnerabilidades
    • Proteção de rede
    • Proteção de transmissão
    • Gerenciamento de incidentes
    • Proteção de dados e privacidade
    • Registro de auditoria e monitoramento
    • Gerenciamento de senhas
    • Continuidade de negócios e recuperação de desastres

    Cenário ilustrativo com AWS Landing Zone Accelerator

    Para tornar os conceitos mais concretos, o guia utiliza um cenário fictício — mas realista — de uma plataforma de saúde conectada implantada no AWS Landing Zone Accelerator. Vale reforçar: o cenário existe para fins didáticos e não sugere que a mesma arquitetura ou as mesmas escolhas de controle se aplicam universalmente. O escopo do HITRUST i1 é, por natureza, específico para cada organização.

    O limite da avaliação, os controles aplicáveis e os requisitos de evidência são definidos pelo escopo de sistema de cada organização e gerenciados pelo portal HITRUST MyCSF. A recomendação é tratar o guia como ponto de partida e trabalhar com um Avaliador Externo Autorizado HITRUST para validar o que se aplica ao ambiente específico de cada empresa. O documento não constitui uma consultoria de certificação de conformidade.

    Como acessar o material

    O guia pode ser baixado diretamente: HITRUST i1 Compliance on AWS: A Customer Implementation Guidance with an Illustrative Healthcare Platform.

    A documentação de garantia HITRUST da AWS e a Matriz de Responsabilidade do Cliente estão disponíveis pelo AWS Artifact. Para suporte na preparação para avaliações, a AWS indica o AWS Security Assurance Services.

    Fonte

    New compliance guidance available: HITRUST i1 on AWS (https://aws.amazon.com/blogs/security/new-compliance-guidance-available-hitrust-i1-on-aws/)

  • GPT-5.6 Sol, Terra e Luna da OpenAI já estão disponíveis no Amazon Bedrock

    A família GPT-5.6 chega ao Amazon Bedrock

    A AWS anunciou a disponibilidade geral dos modelos GPT-5.6 Sol, Terra e Luna da OpenAI no Amazon Bedrock. A novidade traz a família de modelos mais avançada da OpenAI até hoje para o motor de inferência de nova geração da plataforma, projetado para alto desempenho, segurança e confiabilidade.

    O contexto é relevante: organizações que escalam agentes autônomos e produtos com IA precisam de inteligência de fronteira que funcione de forma confiável ao longo de centenas de etapas — de agentes de código que entregam software em produção a pesquisas de segurança cibernética que exploram novas superfícies de ataque, passando por fluxos de trabalho de genômica que analisam sequências genéticas inteiras de ponta a ponta. Essas cargas de trabalho rodam sobre dados sensíveis, exigem throughput consistente sob demanda imprevisível e operam em ambientes onde residência de dados e segurança não são negociáveis.

    Os preços do GPT-5.6 no Bedrock seguem as tarifas de primeira parte da OpenAI, e o uso conta para os compromissos existentes com a AWS.

    Um novo sistema de nomenclatura e três camadas de capacidade

    O GPT-5.6 inaugura um novo sistema de nomenclatura da OpenAI: o número identifica a geração, enquanto Sol, Terra e Luna identificam camadas de capacidade duráveis que podem evoluir em seu próprio ritmo.

    GPT-5.6 Sol — raciocínio avançado

    O Sol é o modelo de raciocínio principal e o mais poderoso da OpenAI até o momento. Segundo a própria OpenAI, o Sol estabelece um novo estado da arte no Artificial Analysis Coding Agent Index com 80 pontos — 2,8 acima do próximo melhor modelo — usando menos da metade dos tokens de saída, em menos da metade do tempo e custando cerca de um terço a menos.

    No ExploitBench, benchmark de pesquisa em segurança cibernética, o Sol alcança 73,5% contra 47,9% do GPT-5.5 com um orçamento comparável de tokens de saída. No Agents’ Last Exam — avaliação de fluxos de trabalho profissionais de longa duração em 55 áreas —, o Sol atinge 53,6 pontos, superando o próximo melhor modelo em 13,1 pontos. Com esforço de raciocínio médio, ainda lidera por 11,4 pontos a aproximadamente um quarto do custo estimado.

    O Sol também introduz o max reasoning effort (esforço máximo de raciocínio), que permite aumentar o poder computacional para trabalhos mais complexos. Os casos de uso indicados incluem agentes de codificação autônoma, pesquisa de vulnerabilidades, fluxos de trabalho de descoberta de medicamentos e tarefas que exigem raciocínio profundo em múltiplas etapas.

    GPT-5.6 Terra — equilíbrio para produção

    O Terra é o modelo balanceado para o trabalho cotidiano em produção. Ele entrega desempenho superior ao GPT-5.5 com custo menor. É indicado para geração de código, fluxos de trabalho de conteúdo, extração de dados estruturados e tarefas agênticas de propósito geral que precisam de raciocínio sólido sem o preço do modelo principal.

    GPT-5.6 Luna — velocidade e economia

    O Luna é o modelo rápido e acessível. É indicado para tarefas de inferência em alto volume, como classificação, sumarização, roteamento e aplicações em tempo real onde latência e custo por token são prioritários.

    Com as três camadas, é possível calibrar capacidade e custo ao modelo certo para cada carga de trabalho. Os modelos GPT-5.6 concluem tarefas com menos tokens de saída do que seus predecessores, entregando melhor desempenho por dólar gasto.

    Motor de inferência construído para escala

    O tráfego de agentes tende a ser irregular: uma única requisição de usuário pode disparar centenas de chamadas ao modelo, e a demanda pode mudar rapidamente conforme o uso cresce. O motor de inferência de nova geração do Amazon Bedrock agrupa capacidade para absorver picos de demanda enquanto isola o throughput de cada cliente. Isso reduz a necessidade de escolher entre capacidade compartilhada e desempenho previsível de aplicação.

    A inferência dentro da região (In-Region) mantém as requisições dentro da Região AWS especificada, ajudando equipes a cumprir requisitos rígidos de residência de dados.

    Cache de prompts com pontos de quebra explícitos

    Cargas de trabalho agênticas e de múltiplas etapas repetem boa parte do contexto entre chamadas. Instruções de sistema, definições de ferramentas e arquivos de referência frequentemente permanecem os mesmos enquanto apenas a entrada mais recente muda.

    O GPT-5.6 no Amazon Bedrock introduz o cache de prompts com pontos de quebra explícitos para aproveitar essa repetição. Você marca a parte reutilizável de um prompt com um ponto de quebra de cache, e o Bedrock reutiliza o contexto processado em requisições subsequentes que o compartilhem — cada chamada paga apenas pelo trabalho novo. A entrada em cache é cobrada com 90% de desconto e fica disponível para reutilização por pelo menos 30 minutos. Esse período é suficiente para cobrir o burst de chamadas que uma única execução de agente gera, sem multiplicar o custo conforme as cargas de trabalho crescem.

    Segurança robusta com proteção em nível de hardware

    Modelos mais capazes exigem salvaguardas mais fortes. O GPT-5.6 conta com a pilha de segurança mais robusta da OpenAI até hoje, moldada pelo período de avaliação mais extenso da empresa, combinando red teaming humano com testes automatizados em larga escala. A pilha de segurança inclui recusas em nível de modelo para atividades proibidas, classificadores de uso indevido em tempo real, monitoramento contínuo e aplicação em nível de conta para padrões persistentes.

    No Amazon Bedrock, essas proteções se somam à segurança em nível de hardware. O Bedrock utiliza um modelo de segurança ZOA (Zero-Operator Access — acesso zero ao operador), aplicado no chip, de modo que nenhum operador da AWS pode acessar seus prompts ou respostas. Cada chamada ao modelo roda sob as políticas do seu IAM (Identity and Access Management — Gerenciamento de Identidade e Acesso), dentro da sua VPC (Virtual Private Cloud — Nuvem Privada Virtual), e é registrada no AWS CloudTrail. Políticas de perímetro de dados evitam exfiltração entre fronteiras de conta e rede.

    Conforme exigido pelo provedor do modelo, dados de tráfego sinalizados por classificadores serão retidos por até 30 dias para detecção automatizada de abuso.

    ChatGPT Work e Codex no contexto do GPT-5.6

    Junto ao GPT-5.6, a OpenAI lançou o ChatGPT Work, um agente dentro do ChatGPT para tarefas maiores e de múltiplas etapas. O aplicativo desktop atualizado do ChatGPT para Mac e Windows reúne Chat, Work e Codex em uma única experiência, com dois agentes dedicados:

    • Work: construído para tarefas maiores e de múltiplas etapas. Pode reunir informações em aplicativos e arquivos, usar a web, criar materiais finalizados como planilhas, slides, documentos e sites, e se manter em projetos complexos por horas. Os usuários podem acompanhar o progresso, mudar de direção e aprovar ações importantes.
    • Codex: o poderoso agente de codificação para desenvolvedores e profissionais técnicos. Trabalha com arquivos locais, repositórios, terminais, ferramentas de desenvolvimento e ambientes de desenvolvimento para escrever funcionalidades, corrigir bugs, executar testes e abrir pull requests.

    Os usuários podem configurar o aplicativo para usar o GPT-5.6 por meio da Responses API no Amazon Bedrock.

    Disponibilidade e como começar

    O GPT-5.6 Sol está disponível nas seguintes Regiões AWS: US East (N. Virginia) e US East (Ohio). O GPT-5.6 Terra e Luna estão disponíveis em US East (N. Virginia), US East (Ohio) e US West (Oregon).

    Para começar a usar Sol, Terra e Luna, acesse o Console do Amazon Bedrock ou utilize programaticamente a Responses API. Para saber mais, consulte a documentação do Amazon Bedrock ou visite a página do produto Amazon Bedrock.

    Fonte

    OpenAI GPT-5.6 Sol, Terra, and Luna are now generally available on Amazon Bedrock (https://aws.amazon.com/blogs/machine-learning/openai-gpt-5-6-sol-terra-and-luna-are-now-generally-available-on-amazon-bedrock/)

  • Gemma-4-E2B-it do Google DeepMind já está disponível no Amazon SageMaker JumpStart

    O que foi anunciado

    A AWS anunciou a disponibilidade do modelo Gemma-4-E2B-it no Amazon SageMaker JumpStart, ampliando ainda mais o portfólio de modelos de fundação acessíveis aos clientes da plataforma. Desenvolvido pelo Google DeepMind, esse modelo chega como uma opção multimodal e ajustada para seguir instruções, com foco em execução local eficiente — o que o torna uma escolha interessante para quem quer construir aplicações de Inteligência Artificial (IA) na infraestrutura da AWS sem abrir mão de desempenho.

    O que é o Gemma-4-E2B-it

    O Gemma-4-E2B-it é um modelo multimodal, ou seja, capaz de processar diferentes tipos de entrada: texto, imagem e áudio. A saída gerada é sempre em formato de texto. Um diferencial importante é o seu modo de raciocínio nativo, que permite ao modelo “pensar passo a passo” antes de formular uma resposta — uma abordagem que tende a aumentar a qualidade e a precisão das respostas em tarefas mais complexas.

    Capacidades do modelo

    O Gemma-4-E2B-it cobre uma gama ampla de casos de uso. Entre as funcionalidades destacadas pela AWS, estão:

    • Compreensão de imagens: detecção de objetos, interpretação de documentos, entendimento de telas e interfaces de usuário (UI), leitura de gráficos e Reconhecimento Óptico de Caracteres (OCR)
    • Compreensão de vídeo
    • Chamada de funções nativa para fluxos de trabalho agênticos
    • Geração, completude e correção de código
    • Suporte multilíngue em dezenas de idiomas

    Esse conjunto de capacidades posiciona o modelo como uma opção versátil tanto para aplicações voltadas ao usuário final quanto para automações e pipelines de IA mais sofisticados.

    Como colocar em produção no SageMaker JumpStart

    Uma das vantagens do SageMaker JumpStart é justamente a facilidade de implantação. Para começar a usar o Gemma-4-E2B-it, basta acessar a seção Models dentro do SageMaker Studio ou utilizar o SageMaker Python SDK para realizar o deploy diretamente na conta AWS. O processo é feito em poucos cliques, sem necessidade de configurações complexas de infraestrutura.

    Para mais detalhes sobre como implantar e utilizar modelos de fundação no SageMaker JumpStart, a AWS disponibiliza a documentação oficial do Amazon SageMaker JumpStart.

    Por que isso importa

    A chegada do Gemma-4-E2B-it ao SageMaker JumpStart é mais um passo na expansão do catálogo de modelos de fundação disponíveis na AWS. Para times brasileiros que trabalham com desenvolvimento de aplicações de IA, isso significa acesso a um modelo multimodal de qualidade — com suporte a múltiplos idiomas, incluindo o português — diretamente integrado ao ecossistema de ferramentas que já utilizam no dia a dia.

    Fonte

    Gemma-4-E2B-it for is now available in Amazon SageMaker JumpStart (https://aws.amazon.com/about-aws/whats-new/2026/07/gemma-4-e2b-on-sagemaker-jumpstart/)

  • Amazon DocumentDB agora disponível como skill no Agent Toolkit for AWS

    DocumentDB ganha skill dedicada no Agent Toolkit for AWS

    A AWS anunciou que o Amazon DocumentDB (com compatibilidade com MongoDB) passou a integrar o Agent Toolkit for AWS como uma skill especializada de banco de dados. A novidade permite que agentes de codificação com Inteligência Artificial (IA) realizem operações completas em clusters do DocumentDB — desde o provisionamento até a resolução de problemas — seguindo fluxos de trabalho estruturados com boas práticas.

    Na prática, isso significa que times de desenvolvimento conseguem executar tarefas complexas no DocumentDB com muito menos esforço manual, sem precisar consultar documentações extensas a cada operação.

    O que a skill cobre

    A skill do Amazon DocumentDB contempla sete fluxos de trabalho distintos:

    • Provisionamento de cluster
    • Design de schema
    • Avaliação de compatibilidade com MongoDB
    • Migração baseada em DMS com Captura de Dados de Mudança (CDC)
    • Ajuste de performance
    • Revisão Well-Architected com 41 verificações
    • Upgrades de versão principal

    Essa cobertura abrangente reduz erros operacionais e acelera o trabalho dos desenvolvedores, que passam a contar com orientação automatizada em cada etapa.

    Integração com o AWS MCP Server e execução standalone

    Quando combinada com o AWS MCP Server, a skill permite que os agentes executem comandos da Interface de Linha de Comando (CLI) da AWS e rodem queries de diagnóstico com controles baseados em Gerenciamento de Identidade e Acesso (IAM), registro de auditoria via CloudTrail e execução em ambiente isolado (sandboxed).

    Para equipes que preferem trabalhar localmente, a skill também funciona de forma independente, diretamente via CLI da AWS, sem necessidade de integração adicional.

    Disponibilidade e como começar

    A skill do Amazon DocumentDB está disponível sem custo adicional como parte do Agent Toolkit for AWS. Para começar a usar, a AWS disponibiliza o código no repositório da skill no GitHub. Quem preferir uma introdução mais guiada pode acessar o Guia de Início Rápido do Agent Toolkit. Para aprofundar o conhecimento sobre o serviço em si, o Guia do Desenvolvedor do Amazon DocumentDB é o ponto de partida recomendado.

    Fonte

    Amazon DocumentDB (with MongoDB compatibility) now available as a skill in the Agent Toolkit for AWS (https://aws.amazon.com/about-aws/whats-new/2026/07/amazon-documentdb-agent-skill)

  • Troca de tokens On-Behalf-Of para agentes multi-tenant com Amazon Bedrock AgentCore Gateway

    O problema de identidade em agentes multi-tenant

    Quando um agente de IA generativa é colocado em produção em arquiteturas multi-tenant, surge um problema de identidade bastante específico: ao fazer uma chamada para uma API downstream em nome de um usuário, qual identidade viaja com essa chamada?

    Existem três abordagens possíveis, mas apenas uma delas é segura. Executar a chamada com a identidade de serviço do próprio agente destrói a trilha de auditoria, pois cada sistema downstream precisa confiar incondicionalmente no agente. Encaminhar o token do usuário sem modificação só funciona quando a audiência do token já corresponde à API downstream — condição raramente verdadeira em sistemas multi-tenant. A terceira opção, a troca On-Behalf-Of (OBO), é a única que preserva a identidade do usuário de ponta a ponta, aplica o princípio do menor privilégio na fronteira de audiência e produz um token que a API downstream pode validar de forma independente.

    A especificação OAuth 2.0 Token Exchange (RFC 8693) resolve exatamente esse problema, e o Amazon Bedrock AgentCore Identity oferece suporte nativo a ela como um tipo de concessão de provedor de credenciais. Os artigos Construindo agentes multi-tenant com Amazon Bedrock AgentCore e Aplicando controle de acesso refinado com interceptadores do Bedrock AgentCore Gateway estabelecem a fundação conceitual para esse padrão. O post original da AWS funciona como o guia de implementação prático.

    O que é o padrão On-Behalf-Of e por que ele importa

    Em uma troca OBO, o claim sub do token de entrada é preservado enquanto o claim aud é reescrito para o serviço downstream. O ator da troca fica registrado em um claim separado (act conforme a RFC 8693, ou cid no Okta), permitindo que a API downstream responda duas perguntas a partir de um único token: em nome de quem a ação está sendo executada? (claim sub) e quem está executando a ação? (claim do ator).

    O AgentCore Gateway suporta esse padrão de forma transparente: ele intercepta a chamada de ferramenta, identifica o tenant de destino e instrui o AgentCore Identity a realizar a troca contra o servidor de autorização do tenant antes de emitir a chamada downstream. O código do agente não precisa implementar nenhuma lógica de troca — ele obtém um único token de entrada e invoca ferramentas normalmente.

    A implementação de referência: TravelBot

    O TravelBot é um assistente de reservas multi-tenant que atende dois tenants de exemplo, Acme e Globex. A implementação de referência estará disponível no repositório aws-samples/sample-obo-flow-poc após a publicação.

    A arquitetura tem seis componentes principais:

    • Servidor de autorização provedor — Emite o Token Web JSON (JWT) de entrada que o agente apresenta ao Gateway. No TravelBot, é o servidor Okta chamado TravelBot Provider.
    • AgentCore Gateway — Valida o JWT de entrada, roteia a invocação de ferramenta para o tenant correto e orquestra a troca OBO.
    • AgentCore Identity — Armazena as credenciais do cliente delegado e executa a troca de token RFC 8693 contra o servidor de autorização do tenant.
    • Servidores de autorização por tenant — Emitem tokens OBO com escopo para a audiência de cada tenant. No TravelBot, ACME Travel API e Globex Travel API são dois servidores Okta distintos, cada um com sua própria audiência e política de acesso.
    • Superfície de API por tenant — Um Amazon API Gateway HTTP API com um autorizador JWT por tenant. Cada autorizador valida emissor, audiência e escopos obrigatórios.
    • Lógica de negócio do tenant — Uma função AWS Lambda que recebe o token OBO validado, lê os claims e armazena reservas no Amazon DynamoDB particionado pelo claim sub.

    Fluxo de troca de tokens: três fases

    O fluxo completo passa por três transformações de token. A tabela a seguir resume como cada claim JWT é transformado entre o token de entrada e o token OBO:

    • iss: reescrito do servidor provedor para o servidor do tenant
    • aud: reescrito de travelbot-provider para https://api.acme-travel.example
    • sub: preservado de ponta a ponta (alice@acme-travel.example)
    • cid: reescrito do cliente provedor para o cliente delegado (AgentCore Delegate)
    • scp: reescrito de [openid email gateway/invoke] para [booking/read booking/write]
    • authorized_scopes: novo claim calculado a partir da associação de grupo do usuário

    Três claims carregam a história de segurança: o sub é preservado para que logs de auditoria e decisões de autorização resolvam para o chamador original; o aud é reescrito para a API do tenant, vinculando o token criptograficamente a um único serviço downstream; e o cid registra o delegado que realizou a troca, separando o ator do chamador.

    Fase 1 — Token de entrada, emitido pelo servidor de autorização provedor

    {
      "iss": "https://example.okta.com/oauth2/aus<provider-id>",
      "aud": "travelbot-provider",
      "sub": "alice@acme-travel.example",
      "cid": "0oa<provider-client-id>",
      "scp": ["openid","email","gateway/invoke"],
      "exp": 1748395200
    }

    Fase 2 — Requisição de troca de token RFC 8693, enviada pelo AgentCore Identity

    POST /oauth2/aus<acme-id>/v1/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=urn:ietf:params:oauth:grant-type:token-exchange
    &subject_token=<inbound JWT from Phase 1>
    &subject_token_type=urn:ietf:params:oauth:token-type:access_token
    &audience=https://api.acme-travel.example
    &scope=booking/read+booking/write
    &client_id=<delegate-client-id>
    &client_secret=<delegate-client-secret>

    Fase 3 — Token OBO, emitido pelo servidor de autorização do tenant

    {
      "iss": "https://example.okta.com/oauth2/aus<acme-id>",
      "aud": "https://api.acme-travel.example",
      "sub": "alice@acme-travel.example",
      "cid": "0oa<delegate-client-id>",
      "scp": ["booking/read", "booking/write"],
      "authorized_scopes": "booking/read",
      "exp": 1748395800
    }
    Imagem original — fonte: Aws

    Escopos por usuário durante a troca de tokens

    Um objetivo natural em sistemas multi-tenant é conceder escopos diferentes a cada usuário por papel. Por exemplo, um grupo acme-readonly recebe booking/read, e um grupo acme-fullaccess recebe ambos booking/read e booking/write. O problema é que a troca OBO é processada como uma concessão máquina-a-máquina (M2M): o Okta não mapeia o usuário sujeito de volta para seus grupos para fins de filtragem de escopos. O claim scp do token OBO retorna contendo todos os escopos que o cliente solicitou, independentemente do grupo do usuário.

    A solução utiliza um claim em vez de um escopo. Embora o Okta não filtre scp por usuário durante a troca, ele avalia um claim do tipo Expression contra o usuário sujeito no momento da emissão. Adiciona-se um claim personalizado em cada servidor de autorização do tenant:

    Nome: authorized_scopes
    Tipo de token: Access Token
    Tipo de valor: Expression
    Valor (Acme): isMemberOfGroupName("acme-fullaccess") ? "booking/read booking/write" : (isMemberOfGroupName("acme-readonly") ? "booking/read" : "")
    Incluir em: Qualquer escopo

    O token OBO passa a carregar tanto um scp permissivo (informativo) quanto um claim authorized_scopes que reflete a permissão real do usuário. O servidor de recursos toma sua decisão com base em authorized_scopes.

    Imagem original — fonte: Aws

    A função Lambda trata authorized_scopes como fonte da verdade para operações de escrita:

    # Requisições GET consultam o DynamoDB particionado por tenant + sub.
    # Requisições POST exigem adicionalmente booking/write em authorized_scopes:
    if method == "POST":
        authorized = obo_claims.get("authorized_scopes") or []
        if isinstance(authorized, str):
            authorized = authorized.split()
        if "booking/write" not in authorized:
            return {
                "statusCode": 403,
                "headers": {"Content-Type": "application/json"},
                "body": json.dumps({
                    "error": "forbidden",
                    "message": f"User {username} is not permitted to create bookings.",
                }),
            }
        # ... proceed to write the booking

    Isolamento de dados por tenant com o claim sub

    A propagação de identidade só tem valor se os sistemas downstream agirem sobre ela. O TravelBot armazena reservas no DynamoDB particionado pela identidade do usuário: a chave de partição (pk) é "{tenant}#{sub}" — por exemplo, acme#alice@acme-travel.example — e a chave de ordenação é o ID da reserva. Em uma leitura, a Lambda emite uma Query com escopo para o pk do chamador. Em uma escrita, coloca um item sob o mesmo pk. O efeito é que um usuário não consegue recuperar as reservas de outro usuário — não por um filtro na camada de aplicação, mas porque a consulta é construída a partir do próprio claim sub do chamador, assinado pelo Okta e verificado pelo autorizador do API Gateway antes de a Lambda ser invocada.

    Imagem original — fonte: Aws

    Rejeição de tokens entre tenants

    Um token OBO emitido para um tenant não pode ser usado para acessar os recursos de outro tenant. No TravelBot, esse princípio é aplicado em três locais independentes: no target do Gateway (o valor customParameters.audience é definido por target); no servidor de autorização do tenant (o Okta valida se o parâmetro audience da requisição de troca está registrado no servidor antes de assinar o token OBO); e no autorizador JWT do API Gateway (cada rota está vinculada a um autorizador cuja JwtConfiguration.Audience é a audiência do tenant). Um token cujo claim aud não corresponde é rejeitado com HTTP 401 antes de a função Lambda ser invocada.

    Imagem original — fonte: Aws

    Passo a passo de implementação

    A implementação do OBO no AgentCore Gateway envolve três operações usando o SDK AWS para Python (Boto3) contra a API bedrock-agentcore-control.

    Passo 1: Criar o Gateway com autorizador JWT personalizado

    agentcore.create_gateway(
        name="travelbot-obo-gateway",
        roleArn=role_arn,
        protocolType="MCP",
        authorizerType="CUSTOM_JWT",
        authorizerConfiguration={
            "customJWTAuthorizer": {
                "discoveryUrl": f"{provider_issuer}/.well-known/openid-configuration",
                "allowedAudience": [provider_audience],  # "travelbot-provider"
            }
        },
    )

    Passo 2: Criar um provedor de credenciais OAuth2 por tenant

    agentcore.create_oauth2_credential_provider(
        name="travelbot-cred-acme",
        credentialProviderVendor="CustomOauth2",
        oauth2ProviderConfigInput={
            "customOauth2ProviderConfig": {
                "oauthDiscovery": {
                    "discoveryUrl": f"{acme_issuer}/.well-known/openid-configuration"
                },
                "clientId": delegate_client_id,
                "clientSecret": delegate_client_secret,
                "clientAuthenticationMethod": "CLIENT_SECRET_POST",
                "onBehalfOfTokenExchangeConfig": {
                    "grantType": "TOKEN_EXCHANGE",
                    "tokenExchangeGrantTypeConfig": {
                        "actorTokenContent": "NONE",
                    },
                },
            }
        },
    )

    Passo 3: Criar um target de Gateway por tenant

    agentcore.create_gateway_target(
        gatewayIdentifier=gateway_id,
        name="travelbot-acme-booking",
        targetConfiguration={
            "mcp": {"openApiSchema": {"inlinePayload": acme_openapi_spec}}
        },
        credentialProviderConfigurations=[{
            "credentialProviderType": "OAUTH",
            "credentialProvider": {
                "oauthCredentialProvider": {
                    "providerArn": acme_credential_provider_arn,
                    "scopes": ["booking/read", "booking/write"],
                    "grantType": "TOKEN_EXCHANGE",
                    "customParameters": {
                        "audience": "https://api.acme-travel.example",
                        "subject_token_type": "urn:ietf:params:oauth:token-type:access_token",
                    },
                }
            },
        }],
    )

    Após essas três operações, o código do agente não contém nenhuma lógica de troca de tokens. Ele adquire um token do provedor, abre uma sessão MCP contra o Gateway e invoca ferramentas. O Gateway e o Identity realizam a troca de forma transparente em cada chamada de ferramenta. A integração de um novo tenant requer apenas a criação de um provedor de credenciais e um target de Gateway — sem alterações no código do agente.

    Armadilhas comuns na integração com Okta

    A implementação do TravelBot revelou um conjunto de problemas que aparecem consistentemente em integrações OBO contra o Okta:

    • Filtragem de escopos por grupo é ignorada durante a troca de tokens. Como o Okta processa a concessão OBO como M2M, não mapeia o usuário do subject_token para seus grupos para filtragem de scp. Use um claim Expression (authorized_scopes) aplicado no servidor de recursos.
    • O DPoP (Demonstração de Prova de Posse) deve ser desabilitado. O DPoP vincula um token a uma chave privada que o cliente original possui. O AgentCore Identity é um relay de tokens e não possui essa chave, portanto deixar o DPoP obrigatório produz erros invalid_dpop_proof no momento da troca. Compense com tokens OBO de curta duração e TLS em todos os saltos.
    • O Okta usa o claim cid, não client_id. O mecanismo allowedClients do Gateway corresponde a client_id, que os tokens de acesso do Okta não carregam. Use allowedAudience.
    • O parâmetro subject_token_type deve ser access_token. Vários SDKs padronizam para jwt em trocas RFC 8693, e o Okta rejeita isso com invalid_request. Substitua o valor via customParameters no target do Gateway.
    • O servidor de autorização provedor deve ser registrado como emissor confiável em cada servidor de autorização do tenant. Isso é configurado em “Trusted Servers” no console de administração do Okta. Sem essa relação de confiança, mesmo uma requisição de troca corretamente construída falha.
    • O aplicativo delegado deve listar o grant type de troca de token em seus grant types permitidos. Tanto o controle no nível do aplicativo quanto a política de acesso do servidor de autorização são obrigatórios. A ausência de qualquer um produz um erro unauthorized_client.

    Boas práticas para produção

    • Um provedor de credenciais e um cliente delegado por tenant — evite compartilhar provedores entre tenants.
    • Vincule audiências explicitamente — defina customParameters.audience em cada target do Gateway e JwtConfiguration.Audience em cada autorizador do API Gateway.
    • Emita tokens OBO de curta duração — configure os servidores de autorização dos tenants para emitir tokens OBO com o menor tempo de vida (TTL) que a aplicação tolere.
    • Trate o client secret do AgentCore Delegate como a credencial mais sensível do sistema — um secret vazado permite que um usuário não autorizado emita tokens OBO para qualquer valor de sub em todos os servidores de autorização de tenant aos quais o delegado está atribuído. Armazene o secret no AWS Secrets Manager com rotação habilitada.
    • Tome decisões de autorização com base em sub e claims por usuário, não no claim do ator — o chamador original é o principal; o delegado que realizou a troca é o ator.
    • Nunca emita claims de nomes ou tokens brutos nos logs de aplicação — registre sub, o ator (cid no Okta), aud e o jti do token. Nunca registre o valor bruto do cabeçalho Authorization.
    • O AgentCore Identity suporta conectividade pública e privada (VPC) para servidores de autorização de tenants. Consulte Conectar a provedores de identidade privados no guia do desenvolvedor do AgentCore para padrões de configuração.

    Conclusão

    A troca de tokens On-Behalf-Of é o padrão de identidade correto para agentes de IA multi-tenant, e o Amazon Bedrock AgentCore Gateway o operacionaliza sem exigir que o agente implemente a RFC 8693. Ao combinar os provedores de credenciais com audiência vinculada do Gateway com os autorizadores JWT por tenant do API Gateway, preserva-se a identidade do usuário de ponta a ponta, aplica-se o menor privilégio na fronteira de audiência e produz-se uma trilha de auditoria que distingue o delegado do usuário. O claim sub torna-se um principal confiável que os serviços downstream podem passar para uma camada de autorização refinada, como o Amazon Verified Permissions.

    Fonte

    Implement on-behalf-of token exchange for multi-tenant agents with Amazon Bedrock AgentCore Gateway (https://aws.amazon.com/blogs/machine-learning/implement-on-behalf-of-token-exchange-for-multi-tenant-agents-with-amazon-bedrock-agentcore-gateway/)

  • CloudTroop Weekly #020 — 2026-w28





    CloudTroop Weekly #020 — 2026-w28

    12 de julho de 2026

    Resumo da Semana

    A semana foi dominada por segurança em IA agêntica: OAuth no MCP Server elimina credenciais avulsas para agentes, Cedar e OAuth 2.0 entregam menor privilégio em sistemas multi-agente, e o WAF agora protege o Bedrock AgentCore em produção. No Security Hub, duas novidades mudam a gestão de postura: varredura de rede para exposição real e suporte nativo ao Azure. Certificados TLS de 45 dias via ACME e retenção zero no Bedrock completam um cenário claro: governança automatizada deixou de ser diferencial e virou requisito operacional para quem roda IA em produção.

    O que muda na prática

    • Agentes de IA precisam de controle de acesso formal: OAuth no MCP Server e políticas Cedar viram referência de arquitetura, não opção — ambientes sem isso acumulam risco OWASP ASI03 silenciosamente.
    • Security Hub agora é painel único para AWS e Azure com varredura de rede real, mudando a priorização de remediação: exposição confirmada na internet pesa mais que configuração permissiva no papel.
    • Certificados TLS manuais têm prazo de validade: com ACM suportando ACME e o prazo de 47 dias chegando em 2029, automação de renovação precisa entrar no roadmap ainda este ano.

    Ações da semana

    • Habilite o Network Exposure Analysis no Security Hub (plano Essentials, sem custo extra) e revise os recursos marcados como realmente públicos — priorize remediação com base em exposição confirmada, não em findings teóricos.
    • Se você tem agentes de IA com MCP em produção ou em desenvolvimento, mapeie quais usam credenciais avulsas e planeje a migração para OAuth com IAM nativo — a implementação de referência da AWS já está disponível.

    Top 10 da Semana

    1

    Security Hub agora varre rede e expõe recursos realmente públicos

    Identifica exposição real na internet — não apenas configurações permissivas — sem custo extra no plano Essentials, mudando como equipes priorizam remediação.

    Para quem: Engenheiros de segurança e arquitetos cloud responsáveis por postura de segurança e compliance.

    Segurança, Compliance

    2

    Security Hub agora monitora recursos do Microsoft Azure

    Equipes multi-cloud podem gerenciar postura de segurança AWS e Azure em um único console com verificações CIS e resposta automatizada via EventBridge.

    Para quem: Times de segurança e operações que operam ambientes híbridos AWS + Azure.

    Segurança, Multi-cloud

    3

    Retenção zero de dados no Bedrock com Projects e SCPs

    Com novos modelos exigindo compartilhamento de dados com terceiros, entender a hierarquia de controles de retenção é crítico antes de adotar IA generativa com dados sensíveis.

    Para quem: Arquitetos de segurança, DPOs e times de compliance que usam ou planejam usar Amazon Bedrock.

    Segurança, IA, Compliance

    4

    Vazamento de system prompt em IA: design para o inevitável

    Aborda LLM07 do OWASP com seis controles técnicos concretos, partindo da premissa realista de que o vazamento é inevitável e que a defesa deve ser em profundidade.

    Para quem: Desenvolvedores e arquitetos que constroem aplicações de IA generativa em produção.

    Segurança, IA Generativa

    5

    Menor privilégio em agentes de IA com Cedar e OAuth 2.0

    Implementação de referência com três camadas de políticas que endereça diretamente o risco OWASP ASI03, essencial para sistemas multi-agente em produção.

    Para quem: Arquitetos e engenheiros de segurança que desenvolvem ou governam sistemas agênticos de IA.

    Segurança, Agentes IA

    6

    OAuth no AWS MCP Server: agentes de IA com governança nativa

    Elimina credenciais avulsas para agentes de IA, aproveitando IAM existente e adicionando revogação de tokens e auditoria no CloudTrail para ambientes MCP.

    Para quem: Engenheiros que constroem ou operam agentes de IA com MCP e precisam de controle de acesso robusto.

    Segurança, MCP, Agentes IA

    7

    ACM suporta ACME: certificados TLS de 45 dias com renovação automática

    Prepara organizações para a exigência obrigatória de certificados de 47 dias até 2029, tornando o gerenciamento manual inviável e a automação via ACME indispensável.

    Para quem: Engenheiros de plataforma, DevOps e times de segurança responsáveis por gestão de certificados TLS.

    Segurança, PKI

    8

    Protegendo o Bedrock AgentCore Runtime com AWS WAF

    Apresenta dois padrões arquiteturais testados para garantir que todo tráfego de agentes de IA passe obrigatoriamente pelo firewall, resolvendo o desafio do health check não autenticado do ALB.

    Para quem: Arquitetos de soluções e engenheiros de segurança que colocam agentes de IA generativa em produção.

    Segurança, Arquitetura IA

    9

    Design de ferramentas MCP: abordagens práticas e trade-offs

    Guia prático com seis estratégias para resolver os dois maiores problemas de MCP em produção — inchaço de contexto e confusão do modelo — com trade-offs explícitos.

    Para quem: Engenheiros que desenvolvem ou mantêm servidores e clientes MCP para agentes de IA.

    MCP, Agentes IA

    10

    Guia do CISO para migração pós-quântica: playbook de 5 etapas

    Com regulações globais avançando, CISOs precisam de um roadmap concreto para criptografia pós-quântica antes que janelas de conformidade se fechem.

    Para quem: CISOs, líderes de segurança e arquitetos responsáveis por estratégia criptográfica de longo prazo.

    Segurança, Criptografia


  • AWS é designada como Terceiro Crítico para o setor financeiro do Reino Unido

    AWS reconhecida como fornecedor estratégico para o sistema financeiro britânico

    A Amazon Web Services EMEA Sarl foi oficialmente designada como um Terceiro Crítico (CTP — Critical Third Party) para o setor financeiro do Reino Unido pelo HM Treasury, o Tesouro britânico. A designação marca um passo relevante na regulação de provedores de nuvem que sustentam infraestruturas financeiras de grande porte.

    O que é o regime CTP?

    O regime de Terceiros Críticos (CTP) entrou em vigor em 1º de janeiro de 2025. Ele cria um framework por meio do qual o Banco da Inglaterra, a PRA (Autoridade de Regulação Prudencial) e a FCA (Autoridade de Conduta Financeira) — coletivamente chamados de reguladores do Reino Unido — podem estabelecer requisitos e exercer supervisão direta sobre os fornecedores designados.

    Trata-se de um regime orientado a resultados, ou seja, o foco está nos desfechos práticos de resiliência, e não apenas no cumprimento formal de regras.

    Obrigações da AWS sob o regime

    Com a designação, a AWS passa a estar sujeita a requisitos relacionados aos seus Serviços Sistêmicos de Terceiros (STPS — Systemic Third-Party Services). O primeiro passo previsto é uma autoavaliação desses serviços frente aos critérios do regime CTP, que a AWS deverá conduzir dentro dos prazos estabelecidos pelos reguladores.

    A AWS já vinha participando ativamente das discussões com as autoridades britânicas durante o desenvolvimento do regime e sinalizou que manterá essa postura colaborativa ao longo do cumprimento de suas obrigações.

    O que muda para os clientes?

    Os reguladores do Reino Unido deixaram claro que o regime CTP não elimina, reduz nem substitui a responsabilidade das empresas, seus conselhos e gestores seniores pela resiliência operacional — inclusive quando dependem de serviços de terceiros. Em outras palavras, as obrigações dos clientes de serviços financeiros que utilizam a AWS permanecem as mesmas.

    À medida que a AWS avança no cumprimento de suas obrigações, está prevista a publicação de materiais que os clientes poderão usar para embasar seus próprios planos de resiliência operacional e gestão de riscos de terceiros.

    Compromisso com a resiliência operacional

    A AWS reforça seu comprometimento em apoiar clientes do setor financeiro no fortalecimento da resiliência operacional, disponibilizando serviços e orientações — incluindo o AWS Well-Architected Framework e recursos voltados ao gerenciamento de incidentes em nuvem — para ajudar organizações a alcançarem resultados efetivos de resiliência.

    A empresa conta com uma equipe de especialistas em regulação e tecnologia com foco em serviços financeiros, disponível para apoiar clientes com dúvidas sobre o regime CTP ou sobre resiliência operacional de forma mais ampla. Clientes interessados podem entrar em contato com o time de conta da AWS para obter mais informações.

    Fonte

    AWS designated as a critical third party to the UK financial sector (https://aws.amazon.com/blogs/security/aws-designated-as-a-critical-third-party-to-the-uk-financial-sector/)

  • Fine-tuning dos modelos NVIDIA Nemotron 3 com personalização serverless no Amazon SageMaker AI

    Por que personalizar modelos de IA é mais do que uma otimização

    Modelos de IA de propósito geral são um ponto de partida poderoso, mas empresas que dependem de terminologia específica, fluxos de trabalho próprios e padrões de decisão internos precisam de algo além do genérico. O processo de fine-tuning (ajuste fino) de modelos fundacionais (FMs — Foundation Models) com dados de domínio transforma esses modelos em ativos proprietários: eles aprendem a voz da marca, reduzem alucinações e incorporam as melhores práticas da organização diretamente na arquitetura.

    Do ponto de vista estratégico, um modelo ajustado representa propriedade intelectual difícil de replicar com modelos públicos de prateleira. E há um bônus prático: modelos menores, ajustados em tarefas específicas, frequentemente igualam ou superam modelos muito maiores — com custo operacional significativamente menor e dados sensíveis mantidos dentro de uma infraestrutura privada e segura.

    Com esse cenário em mente, a AWS anunciou suporte à personalização serverless de modelos para a família NVIDIA Nemotron 3 no Amazon SageMaker AI, começando pelos modelos Nemotron 3 Nano (30B parâmetros totais, 3B ativos) e Nemotron 3 Super (120B parâmetros totais, 12B ativos). Para a lista completa de modelos open-weight disponíveis para personalização serverless, a AWS disponibiliza a documentação de customização de modelos open-weight no Amazon SageMaker AI.

    Arquitetura dos modelos NVIDIA Nemotron 3

    A família Nemotron 3 é construída sobre uma arquitetura híbrida Mamba-Transformer Mixture-of-Experts (MoE), com suporte nativo a contextos de até 1 milhão de tokens. A arquitetura intercala três tipos de camadas complementares:

    • Camadas Mamba-2: processamento de sequências em tempo linear, com alta eficiência computacional.
    • Camadas de atenção Transformer: responsáveis pela recuperação associativa precisa.
    • Camadas LatentMoE (Latent Mixture-of-Experts): comprimem tokens antes de roteá-los para especialistas específicos.

    Essa combinação garante que apenas uma fração dos parâmetros totais seja ativada em cada passagem — por exemplo, 12B dos 120B parâmetros no modelo Super. O resultado é alto throughput e boa precisão com custo computacional substancialmente menor. Os modelos também passam por aprendizado por reforço em múltiplos ambientes via NeMo Gym, o que os alinha a tarefas agênticas reais em domínios como programação, raciocínio e análise de contextos longos.

    Nemotron 3 Nano (30B)

    O Nemotron 3 Nano é um modelo de linguagem compacto, otimizado para alta eficiência computacional sem abrir mão de precisão em tarefas especializadas. Ele se destaca em programação e raciocínio dentro da sua classe de tamanho, e alcança throughput 4x maior que seu antecessor, o Nemotron 2 Nano. Com apenas 3B parâmetros ativos, é ideal para cargas de trabalho multi-agente de alto volume onde custo e latência são críticos. Para mais detalhes técnicos sobre arquitetura e treinamento, a NVIDIA mantém um blog para desenvolvedores com informações aprofundadas.

    Nemotron 3 Super (120B)

    O Nemotron 3 Super é projetado para aplicações multi-agente complexas que exigem mais capacidade que o Nano, mas ainda com foco em eficiência de custo. Ele performa bem em raciocínio, programação e análise de contextos longos, sendo adequado para automação de tickets de TI, orquestração de fluxos corporativos e sistemas de agentes autônomos que exigem raciocínio sustentado em múltiplas etapas. Mais detalhes estão disponíveis no blog da NVIDIA sobre o Nemotron 3 Super.

    Personalização serverless no SageMaker AI: sem infraestrutura para gerenciar

    O grande diferencial da personalização serverless do SageMaker AI é remover a complexidade operacional do fine-tuning. Não é necessário provisionar clusters de GPU, configurar frameworks de treinamento distribuído nem gerenciar checkpoints e tolerância a falhas. O SageMaker AI cuida do provisionamento de infraestrutura e da orquestração do treinamento — o time foca nos dados, no caso de uso e na avaliação, pagando apenas pelo que usa. Mais detalhes estão na documentação oficial da AWS sobre personalização serverless no SageMaker AI.

    Para os modelos Nemotron 3, o SageMaker AI suporta três técnicas de fine-tuning:

    • Ajuste Fino Supervisionado — SFT (Supervised Fine-Tuning): fornece pares de entrada e saída rotulados para ensinar novos comportamentos ao modelo. Ideal quando há exemplos de alta qualidade do comportamento desejado: pares de perguntas e respostas de domínio, chamadas de ferramentas formatadas, respostas alinhadas ao estilo da marca ou conclusões de instruções específicas de tarefas.
    • Ajuste Fino por Reforço com Recompensas Verificáveis — RLVR (Reinforcement Learning with Verifiable Rewards): otimiza o comportamento do modelo com base em um sinal de recompensa. O modelo gera múltiplas respostas candidatas por prompt, uma função de recompensa as pontua, e o modelo atualiza sua política para favorecer o que funciona. Indicado para tarefas com objetivos naturalmente verificáveis, como precisão em chamadas de ferramentas, correção de código ou conformidade de formato.
    • Aprendizado por Reforço com Feedback de IA — RLAIF (Reinforcement Learning from AI Feedback): usa um modelo de IA separado para guiar a otimização. Um modelo de IA avalia as saídas e fornece sinais de feedback, permitindo melhoria iterativa de política sem dados de recompensa rotulados por humanos. Útil para alinhar tom, utilidade e segurança; melhorar a qualidade das respostas quando avaliação humana é cara ou subjetiva; e refinar tarefas de geração aberta.

    Casos de uso para personalização empresarial

    Embora os modelos Nemotron 3 base entreguem boa performance geral, casos de uso corporativos exigem comportamentos específicos de domínio. Com a personalização, é possível:

    • Adaptar os modelos para terminologia e padrões de decisão específicos do setor.
    • Treinar chamadas de ferramentas confiáveis com as APIs internas da organização.
    • Alinhar as saídas à voz e ao tom da marca.
    • Refinar o raciocínio agêntico em múltiplas etapas para arquiteturas próprias.
    • Reduzir custos especializando o modelo Nano menor para igualar a performance de modelos maiores em tarefas específicas.

    Como começar: pré-requisitos e preparação dos dados

    A personalização serverless pode ser iniciada pelo console do Amazon SageMaker Studio ou programaticamente via SageMaker Python SDK. Para quem já trabalha no SageMaker AI, é possível usar a funcionalidade agêntica com agent skills para acelerar o fluxo de personalização. Para um exemplo programático detalhado, a AWS disponibiliza o repositório de exemplos no GitHub.

    Antes de começar, é necessário ter:

    • Uma conta AWS com permissões IAM (Gerenciamento de Identidade e Acesso — Identity and Access Management) para o Amazon SageMaker AI.
    • Um domínio SageMaker AI com acesso ao Studio.
    • Dados de treinamento na estrutura e formato corretos.

    Os dados de treinamento devem estar no formato JSONL (JSON Lines), onde cada linha representa um exemplo de treinamento. O schema específico depende da técnica escolhida: o SFT exige exemplos no formato de conversa com pares de entrada e saída rotulados, enquanto o RLVR exige prompts combinados com valores de verdade para a função de recompensa. Para um guia prático de preparação dos dados, a AWS disponibiliza o módulo de Preparação de Dados no workshop de personalização serverless do SageMaker AI. Quem usa o SageMaker AI pode contar com o agente de codificação integrado com agent skills para preparar e validar automaticamente a formatação dos dados.

    Passo a passo: personalizando um modelo Nemotron 3 no SageMaker Studio

    O fluxo de personalização no console do SageMaker AI Studio segue estas etapas:

    1. Abra o Amazon SageMaker AI Studio e, no painel de navegação à esquerda, selecione Models.
    2. Busque por “NVIDIA” para localizar a família Nemotron 3 e selecione o modelo desejado (NVIDIA-Nemotron-3-Nano-30B-* ou NVIDIA-Nemotron-3-Super-120B-*).
    3. Escolha a técnica de personalização entre SFT, RLVR e RLAIF.
    4. Ao optar por RLVR, defina o tipo de função de recompensa. A função embutida (Correspondência Exata, Execução de Código, Respostas Matemáticas) funciona bem para tarefas com respostas únicas e objetivamente corretas. Já uma função de recompensa personalizada é indicada quando a tarefa exige lógica de pontuação mais rica — crédito parcial, verificações de formato, avaliação de qualidade de raciocínio ou regras específicas de domínio. Funções personalizadas permitem pontuar em múltiplos sinais, moldar recompensas e emitir métricas de observabilidade. Para orientações detalhadas sobre como criar e registrar uma função de recompensa personalizada, consulte a documentação do workshop de RLVR.
    5. Configure os dados de treinamento selecionando um dataset existente ou criando um novo.
    6. Defina os hiperparâmetros de customização ou use os valores padrão recomendados.
    7. Clique em Submit para iniciar o job de personalização.

    O SageMaker AI provisiona automaticamente o compute necessário, executa o job de treinamento e captura logs contínuos. As métricas de treinamento são registradas por padrão no SageMaker MLflow App.

    Monitoramento do treinamento

    O progresso do treinamento pode ser acompanhado na página inicial do modelo. Algumas métricas de alto nível merecem atenção especial:

    • Train Reward (para RLVR): deve aumentar progressivamente.
    • Training Loss e Validation Loss: devem diminuir, indicando generalização.
    • Policy Entropy (para RLVR): diminui à medida que o modelo ganha confiança.
    • Gradient Norm: deve estabilizar para indicar convergência.

    As métricas detalhadas de treinamento e validação também são registradas no SageMaker AI MLflow App. Na interface de rastreamento do MLflow, essas métricas são organizadas por componente (actor, critic, rollout, performance), facilitando o diagnóstico da saúde do treinamento.

    Avaliação do modelo personalizado

    Após o treinamento, o SageMaker AI oferece três métodos para avaliar a qualidade do modelo customizado:

    • LLM-as-a-Judge: utiliza um modelo frontier do Amazon Bedrock para avaliar respostas com base em métricas de qualidade, sem necessidade de rótulos de verdade.
    • Custom Scorer: aplica funções de recompensa próprias ou scorers embutidos para produzir métricas padrão de Processamento de Linguagem Natural — PLN (Natural Language Processing — NLP), como F1, ROUGE e BLEU.
    • Benchmarks: pontua o modelo em benchmarks acadêmicos padronizados (MMLU, BBH, GPQA, MATH, IFEval) para avaliação ampla de capacidades em raciocínio, conhecimento e seguimento de instruções.

    Também é possível ativar a comparação com o modelo base durante a avaliação, para medir diretamente o ganho do modelo pós-treinamento em relação ao original. Combinadas com as métricas de treinamento registradas no MLflow, essas avaliações oferecem uma visão completa da efetividade do fine-tuning.

    Deploy do modelo personalizado

    O modelo customizado pode ser implantado diretamente pela página de detalhes do modelo no console. Outras opções incluem deploy para endpoints de inferência do SageMaker ou download dos pesos do modelo de um bucket no Amazon S3 para implantação autogerenciada. As opções de deploy preenchem automaticamente os padrões, com flexibilidade total sobre compute e escalonamento conforme os requisitos de tráfego e throughput.

    O deploy do Nemotron Nano 30B ajustado utiliza uma instância ml.g6e com GPUs NVIDIA L40S Tensor Core. Por padrão, o SageMaker serve os pesos do modelo mesclado — onde o modelo base e o adaptador LoRA são combinados em um único conjunto de pesos para inferência otimizada. Por se tratar de um fine-tuning LoRA, também é possível hospedar e servir o adaptador LoRA não mesclado separadamente, já que tanto os pesos base quanto os pesos do adaptador ficam disponíveis no bucket S3. Após o deploy, o endpoint é invocado via método invoke com a AWS CLI ou SDK.

    Limpeza de recursos

    Para evitar cobranças desnecessárias, a AWS recomenda excluir o domínio do SageMaker AI Studio, os SageMaker Endpoints e quaisquer outros recursos criados após o uso. O custo específico da personalização serverless no SageMaker AI depende do modelo base escolhido e do estágio de customização — os detalhes estão na página de preços do Amazon SageMaker AI.

    Conclusão

    A personalização serverless dos modelos NVIDIA Nemotron 3 no Amazon SageMaker AI representa um avanço prático para equipes que precisam adaptar modelos de alto desempenho a domínios específicos sem a complexidade operacional do fine-tuning tradicional. Seja ajustando o Nemotron 3 Nano para execução eficiente de tarefas agênticas, seja customizando o Nemotron 3 Super para orquestração multi-agente complexa, o SageMaker AI cuida do provisionamento de compute, da orquestração do treinamento e do rastreamento de métricas — deixando o time livre para focar nos dados, na avaliação e no deploy.

    Para exemplos detalhados de customização de modelos open-source, acesse o repositório de exemplos da AWS no GitHub. Para saber mais, consulte a documentação de customização de modelos do Amazon SageMaker AI.

    Fonte

    Fine-tune NVIDIA Nemotron 3 models with Amazon SageMaker AI serverless model customization (https://aws.amazon.com/blogs/machine-learning/fine-tune-nvidia-nemotron-3-models-with-amazon-sagemaker-ai-serverless-model-customization/)

  • Como Implantar Modelos Quantizados no Amazon SageMaker AI com Unsloth

    Por que quantização importa na prática

    Manter modelos de linguagem em precisão total — 16 bits por parâmetro (BF16 ou FP16) — é caro. Instâncias grandes de GPU têm custo elevado, os ciclos de iteração ficam lentos e o armazenamento cresce rapidamente. A quantização resolve isso reduzindo a precisão numérica dos pesos do modelo: em vez de 16 bits por parâmetro, você passa a usar 4 ou 8 bits, encolhendo o consumo de memória de forma significativa.

    O problema clássico da quantização é a perda de qualidade. É aí que entra a quantização dinâmica, metodologia desenvolvida pela Unsloth Dynamic. Em vez de aplicar a mesma redução de bits em todas as camadas do modelo, a abordagem analisa camada por camada: as mais sensíveis à perda de precisão permanecem em maior resolução (por exemplo, 16 bits), enquanto as menos sensíveis são comprimidas de forma agressiva (4 bits ou menos). O resultado é um modelo muito menor com degradação de qualidade bem controlada.

    Para ter uma ideia prática: um modelo com 8 bilhões de parâmetros em BF16 ocupa cerca de 16 GB de memória. Com quantização para 4 bits, esse footprint cai para aproximadamente 5 GB — o que frequentemente significa a diferença entre precisar de uma instância multi-GPU e caber confortavelmente em uma GPU única.

    A Unsloth é a ferramenta que viabiliza esse fluxo de ponta a ponta: ajuste fino, quantização, exportação e implantação em um único workflow unificado.

    Qual formato de modelo usar

    Antes de escolher o serviço AWS, a AWS orienta a escolher o artefato de saída correto — a infraestrutura vem depois. O Unsloth suporta dois tipos principais de exportação voltados para implantação:

    • Arquivos GGUF — formato de arquivo único que empacota pesos, tokenizador e metadados juntos. É autocontido e pronto para ser carregado sem arquivos adicionais. Ideal para runtimes leves como llama.cpp, Ollama e Unsloth. No ambiente AWS, mapeia para Amazon EC2 ou container customizado no Amazon SageMaker AI.
    • Pesos safetensors mesclados — (16 bits, 8 bits, FP8, 4 bits, NVFP4) para engines de maior throughput como vLLM e SGLang. No AWS, mapeia para containers de Inferência de Modelos Grandes (LMI) do SageMaker AI, Amazon EKS ou Amazon ECS.

    A tabela abaixo, presente no artigo original, resume o mapeamento entre artefato, runtime e destino AWS:

    • GGUF + llama.cpp/Unsloth → Amazon EC2: validação rápida com acesso direto à instância
    • GGUF + container customizado → Amazon SageMaker AI: endpoints gerenciados com autoscaling e runtime leve
    • Pesos mesclados 16 bits ou 4 bits + vLLM/SGLang/LMI → Amazon SageMaker AI: alto throughput, batching, autoscaling, GPU em produção
    • Qualquer stack containerizado → Amazon EKS ou Amazon ECS: quando a inferência precisa se integrar a um framework de containers já existente

    Os quatro padrões de implantação

    Padrão 1: GGUF no Amazon EC2 com llama.cpp

    O ponto de partida recomendado é o Amazon EC2, pela transparência e controle máximo. Nele é possível comparar diferentes níveis de quantização, testar formatação de prompts, avaliar comportamento em CPU versus GPU e medir o consumo real de memória antes de se comprometer com um endpoint gerenciado.

    Uma exportação típica no Unsloth se parece com isso:

    model.save_pretrained_gguf("gguf_model", tokenizer, quantization_method="q4_k_xl")

    Para iniciar o servidor, o comando mínimo do llama-server é:

    llama-server \
      --model /models/my-model.gguf \
      --alias my-model \
      --ctx-size 8192 \
      --host 0.0.0.0 \
      --port 8080

    Ou usando o Unsloth diretamente:

    unsloth run \
      --model /models/my-model.gguf \
      --alias my-model \
      --ctx-size 8192 \
      --host 0.0.0.0 \
      --port 8080

    A partir daí, a aplicação se comunica com o modelo via interface compatível com OpenAI:

    from openai import OpenAI
    client = OpenAI(
        base_url="http://<ec2-private-ip>:8080/v1",
        api_key="not-required",
    )
    response = client.chat.completions.create(
        model="my-model",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Explain AWS Graviton in two sentences."},
        ],
        max_tokens=128,
    )
    print(response.choices[0].message.content)

    Atenção: essa configuração é adequada para testes isolados. Em produção, é necessário restringir o grupo de segurança a blocos de Roteamento entre Domínios sem Classe (CIDR) conhecidos, vincular a uma interface privada e colocar o endpoint atrás de um gateway de API autenticado ou balanceador de carga.

    Consulte a documentação GGUF do Unsloth para a lista completa de métodos de quantização e suas características.

    Padrão 2: GGUF no Amazon SageMaker AI com container customizado

    Quando é necessário um endpoint de produção com autoscaling, monitoramento, integração com Gerenciamento de Identidade e Acesso (IAM) e uma superfície de API estável, os endpoints de inferência do Amazon SageMaker AI são a escolha mais adequada.

    Para implantações GGUF, o design mais prático é um container de inferência customizado que empacota o arquivo GGUF junto com o llama.cpp. O container precisa escutar na porta 8080, implementar /ping para verificações de saúde e /invocations para requisições de inferência.

    O repositório GitHub de exemplo inclui uma demonstração completa desse padrão. Ele implanta uma comparação lado a lado entre o Qwen3-VL-8B-Instruct quantizado dinamicamente pelo Unsloth (GGUF Q4_K_XL servido com llama.cpp em ml.g5.xlarge, aproximadamente US$ 1,41/hora) e a variante BF16 em precisão total (servida com vLLM em ml.g5.12xlarge, aproximadamente US$ 7,09/hora). Preços referentes a junho de 2026; consulte a página de preços do Amazon SageMaker AI para valores atualizados.

    O script de entrada inicia o llama-server em uma porta interna e usa o nginx como proxy reverso para satisfazer a interface do SageMaker AI:

    # Start llama-server with the GGUF model and vision projector
    /app/llama-server \
      --model /models/Qwen3-VL-8B-Instruct-UD-Q4_K_XL.gguf \
      --mmproj /models/mmproj-F16.gguf \
      --host 0.0.0.0 \
      --port 8081 \
      --ctx-size 4096

    O nginx então mapeia /ping para o health check do llama-server e /invocations para o endpoint de chat completions:

    # SageMaker health check endpoint
    location /ping {
        proxy_pass http://llama_backend/health;
    }
    # SageMaker inference endpoint -> llama.cpp chat completions
    location /invocations {
        proxy_pass http://llama_backend/v1/chat/completions;
        proxy_read_timeout 120s;
    }

    A arquitetura típica funciona assim: o arquivo GGUF finalizado fica armazenado no Amazon Simple Storage Service (Amazon S3); ao iniciar, o container do SageMaker AI carrega o modelo de /opt/ml/model e expõe uma camada de API que traduz as requisições do SageMaker AI em chamadas de inferência locais.

    Padrão 3: Pesos mesclados no Amazon SageMaker AI com engines otimizadas para GPU

    GGUF é excelente quando o tamanho do arquivo e o runtime leve são as prioridades. Mas quando throughput e eficiência de GPU são o foco, os pesos mesclados se tornam mais atrativos.

    Pesos mesclados são o modelo salvo como um conjunto unificado de pesos em safetensors — frequentemente o resultado da combinação de um adaptador ajustado (como um adaptador de Adaptação de Baixo Rank, LoRA) com o modelo base. O Unsloth suporta exportações de saída mesclada em 16 bits e 4 bits, mais adequadas para runtimes como vLLM e SGLang, construídos para padrões de serving em GPU de produção: batching, alto throughput de tokens e escalonamento multi-GPU.

    Uma exportação representativa:

    model.save_pretrained_merged(
        "finetuned_model",
        tokenizer,
        save_method="merged_16bit",
    )

    O caminho de serving é simplesmente:

    vllm serve finetuned_model

    No AWS, os containers LMI disponíveis para o Amazon SageMaker AI são especialmente relevantes aqui. Para o endpoint de precisão total no exemplo de referência, o container LMI é configurado inteiramente por variáveis de ambiente no recurso Terraform:

    HF_MODEL_ID             = "Qwen/Qwen3-VL-8B-Instruct"
    OPTION_DTYPE            = "bf16"
    OPTION_ROLLING_BATCH    = "vllm"
    OPTION_TENSOR_PARALLEL_DEGREE = "4"
    OPTION_MAX_MODEL_LEN    = "4096"

    Nenhum container customizado é necessário. O container LMI baixa o modelo do Hugging Face na inicialização e o serve via vLLM com paralelismo tensorial em 4 GPUs A10G. O paralelismo tensorial divide o modelo entre múltiplas GPUs para que cada uma processe uma parte da computação em paralelo.

    A regra prática sugerida no artigo: use GGUF e llama.cpp quando quiser o caminho de implantação mais leve. Use pesos mesclados com vLLM, SGLang ou backend LMI quando throughput, batching, concorrência ou topologia de hardware se tornarem as restrições dominantes.

    Padrão 4: Amazon EKS ou Amazon ECS quando a inferência precisa se encaixar no ambiente existente

    Para equipes que já padronizaram em Kubernetes ou Amazon ECS, faz mais sentido empacotar o runtime do Unsloth nesse ambiente do que introduzir uma superfície de serving separada apenas para modelos. Esse padrão é especialmente útil quando a inferência precisa conviver com outros serviços de aplicação, quando já existe tooling robusto em torno do Amazon EKS ou Amazon ECS, ou quando deployment, rede, observabilidade e segurança já estão padronizados na camada de infraestrutura.

    Para equipes que precisam de infraestrutura de cluster gerenciada para treinamento e inferência em larga escala, o Amazon SageMaker HyperPod também vale ser avaliado, embora o artigo original foque em padrões de implantação apenas de inferência.

    Práticas operacionais que fazem diferença em produção

    Mantenha a formatação de prompts consistente de ponta a ponta

    Formatação inconsistente de prompts é uma das formas mais comuns de diagnosticar erroneamente um bom modelo como uma implantação ruim. Quando um modelo exportado se comporta pior fora do Unsloth, o problema geralmente não é o método de quantização — é uma incompatibilidade no template de chat, no tratamento do token de fim de sequência (EOS) ou na estrutura do prompt entre treino e inferência. Consulte a documentação de templates de chat do Unsloth para detalhes sobre configuração de template no momento da exportação.

    Avalie o formato completo de implantação, não apenas o nível de quantização

    Um benchmark de quantização isolado não é suficiente. O comportamento real depende do tamanho do contexto, concorrência, mix de requisições, comportamento de streaming, caminho de inicialização e o próprio runtime. O Amazon SageMaker AI também oferece recomendações de inferência que podem ajudar a identificar tipos de instância e configurações otimizadas.

    Use entrega estável de artefatos

    Após finalizar o modelo, promova-o por um caminho de armazenamento previsível. No AWS, isso geralmente significa armazenar o arquivo de modelo escolhido no Amazon S3 e carregá-lo a partir daí, em vez de depender de downloads em tempo de execução de fontes externas durante a inicialização.

    Monitore o serviço, não apenas o modelo

    Performance em produção não é só sobre qualidade dos tokens — é também sobre tempo de inicialização, latência de cauda, concorrência, comportamento de escalonamento e características de carregamento do modelo. Endpoints gerenciados tornam isso mais visível porque é possível acompanhar métricas de invocação e sinais de escalonamento diretamente pelo Amazon CloudWatch.

    Valide o contrato do container com antecedência

    Se estiver implantando no Amazon SageMaker AI com um container customizado, valide o container localmente antes de fazer o deploy. Certifique-se de que /ping e /invocations se comportam corretamente e que o runtime sobrevive a tamanhos de prompt realistas. Consulte o guia de containers customizados do Amazon SageMaker para a especificação completa da interface.

    Projete segurança e rede desde o início

    Serving de modelos frequentemente se torna parte de um ambiente de aplicação maior, o que significa que rede, escopo de papéis IAM, acesso à internet, criptografia com o Serviço de Gerenciamento de Chaves AWS (AWS KMS) e posicionamento na Nuvem Privada Virtual (VPC) importam tanto quanto a performance do runtime. Tome essas decisões desde o início. Habilite o AWS CloudTrail para registro de auditoria em nível de API. Consulte a documentação de segurança de infraestrutura do Amazon SageMaker para orientações sobre configuração de VPC e criptografia.

    Próximos passos

    Para ver esses padrões em ação, o artigo original recomenda clonar o repositório GitHub de exemplo e executar terraform apply para implantar tanto um endpoint GGUF quantizado quanto um endpoint vLLM de precisão total no Amazon SageMaker AI. O Terraform provisiona toda a infraestrutura e uma instância de Notebook do Amazon SageMaker com o repositório pré-clonado, permitindo executar o notebook de comparação imediatamente.

    O notebook envia prompts de imagem idênticos para ambos os endpoints, demonstrando inferência multimodal de visão-linguagem com o Qwen3-VL, e produz comparações lado a lado de qualidade de saída, latência, throughput e custo. Ele também inclui um framework de benchmarking que avalia ambos os modelos com métricas objetivas de qualidade (correspondência exata, BLEU, ROUGE-L), permitindo quantificar a degradação causada pela quantização em vez de depender de julgamento subjetivo.

    Para evitar cobranças contínuas ao terminar, basta executar terraform destroy para remover os recursos provisionados.

    Para aprofundamento, o artigo original indica:

    Fonte

    Deploying quantized models on Amazon SageMaker AI with Unsloth (https://aws.amazon.com/blogs/machine-learning/deploying-quantized-models-on-amazon-sagemaker-ai-with-unsloth/)

  • Camada Semântica para IA Agêntica na AWS com Stardog e Amazon Bedrock AgentCore

    O problema que a IA agêntica ainda não resolveu sozinha

    A promessa dos agentes de IA para análise de dados é clara: em vez de esperar na fila por um relatório, o usuário faz a pergunta e o agente busca a resposta diretamente nos sistemas da empresa. Mas há um obstáculo que os modelos de linguagem, por mais capazes que sejam, não conseguem superar sozinhos: os dados corporativos são fragmentados, inconsistentes e cheios de definições conflitantes.

    O “cliente” no sistema de CRM não é o mesmo registro que o “cliente” no sistema de faturamento. A “receita” calculada pelo time da América do Norte pode ser um número diferente do que o time europeu produziria. Um agente com acesso direto a esses dados fragmentados vai gerar respostas tecnicamente válidas, mas erradas ou contraditórias. A confiança no sistema se desfaz na primeira vez que dois agentes retornam números diferentes para a mesma pergunta.

    É exatamente esse gap que a AWS endereça em um post técnico recente, mostrando como construir uma camada semântica sobre Amazon Aurora e Amazon Redshift usando o Stardog, e como executar um agente baseado em Strands Agents no Amazon Bedrock AgentCore para consultar essa camada.

    RAG não é suficiente para análise de dados

    A abordagem mais conhecida para conectar modelos de linguagem a dados corporativos é a Geração Aumentada por Recuperação (RAG): documentos são indexados no Amazon Bedrock Knowledge Bases e trechos relevantes são injetados no contexto do modelo na hora da consulta. RAG funciona bem quando a resposta está em um texto que a busca consegue encontrar.

    O problema aparece nas perguntas analíticas: quando a resposta depende de cruzar registros ao vivo entre sistemas diferentes, aplicar uma regra de negócio de forma consistente e respeitar políticas de acesso por linha ou coluna. Nesses casos, o que está faltando não é texto — é contexto de negócio e definição de métricas.

    Uma camada semântica não substitui o RAG. Ela o complementa. A maioria dos sistemas em produção precisa dos dois, acessíveis pelo mesmo agente.

    O que é uma camada semântica baseada em grafo de conhecimento

    Uma camada semântica é uma visão orientada a ontologia dos dados corporativos. A ontologia captura os conceitos, relacionamentos, atributos e regras que importam para o negócio. Mapeamentos declaram como esses conceitos correspondem a linhas nas fontes de dados reais. O agente consulta a camada; a camada traduz cada consulta em SQL contra os sistemas subjacentes em tempo de execução. Os dados permanecem onde estão. O significado é capturado uma vez e reutilizado.

    Quando essa camada semântica é implementada como o Stardog faz — com uma ontologia, identificadores estáveis para cada entidade, regras que derivam novos fatos e restrições que validam os dados — o resultado é um grafo de conhecimento. Os dados são conectados como um grafo de entidades de negócio em vez de linhas em tabelas. Cada entidade recebe um identificador único no estilo URL chamado IRI, e as consultas percorrem essas conexões em uma linguagem padronizada pelo W3C chamada SPARQL.

    Dois conceitos são centrais na arquitetura descrita:

    • Grafo nomeado: um subconjunto rotulado do grafo, identificado por seu próprio IRI. O Stardog usa grafos nomeados como unidade de controle de acesso — a mesma consulta retorna resultados diferentes para papéis diferentes, dependendo de quais grafos cada papel pode ler.
    • Grafo virtual: um grafo nomeado cujo conteúdo não fica armazenado no Stardog. Ele vive em um sistema externo (Aurora, Redshift, Athena) e o Stardog busca as linhas sob demanda usando os mapeamentos.

    Para quem quiser se aprofundar, o glossário do Stardog define cada um desses termos, e a série de introdução ao Stardog coloca tudo em contexto.

    As três camadas que um agente confiável precisa

    O post descreve três camadas que precisam funcionar juntas para que um agente de IA entregue respostas confiáveis e com contexto de negócio:

    • Camada de modelo: um modelo de fundação capaz de planejar e escrever consultas. O Amazon Bedrock oferece acesso a múltiplas famílias de modelos via API única. No exemplo, é usado o Anthropic Claude Sonnet 4.6. O modelo conhece linguagem — não conhece o negócio da empresa.
    • Camada de significado: a camada semântica, que dá ao modelo acesso confiável e governado aos dados por trás das perguntas de negócio. A ontologia declara os conceitos e as regras que derivam novos fatos. A federação puxa linhas ao vivo de cada fonte na hora da consulta. É aqui que fica o Stardog federado sobre Aurora e Redshift.
    • Camada de runtime do agente: o ambiente que hospeda o agente, termina requisições de entrada, gerencia credenciais de ferramentas e fornece a superfície operacional para segurança e governança. O Amazon Bedrock AgentCore é usado neste exemplo por empacotar autenticação de entrada, hospedagem e credenciais de ferramentas em um único serviço gerenciado.

    Caso de uso: agente Customer 360 sobre Aurora e Redshift

    O exemplo escolhido é um agente de Customer 360 (C360) para uma equipe de analytics de varejo. O agente aceita perguntas em linguagem natural de analistas de vendas, marketing ou fraude, executa as consultas nos dados da empresa e responde com uma narrativa curta mais os números de suporte. O usuário não vê SQL nem SPARQL, e o agente não acessa dados que não está autorizado a ver.

    No cenário descrito, perfil de cliente, endereço, cartão de crédito e programa de recompensas ficam em um banco operacional no Amazon Aurora PostgreSQL. Pedidos, produtos, categorias e fornecedores ficam no Amazon Redshift para análise. Para responder “quem são nossos maiores compradores no Wisconsin?”, o agente precisa cruzar as duas fontes — e é exatamente isso que a camada semântica resolve.

    O kit de partida utilizado é o C360 Knowledge Kit do Stardog, adaptado para federar sobre Aurora PostgreSQL (lado do cliente) e Amazon Redshift (lado de compras). O kit inclui ontologia, dados de exemplo e consultas prontas.

    O que a camada semântica resolve nesse cenário

    Três problemas concretos são resolvidos pela camada semântica nesse exemplo:

    • Joins entre sistemas por significado compartilhado: a camada mapeia registros de clientes do Aurora e do Redshift para uma identidade comum usando chaves de negócio compartilhadas. O join é expresso pelo modelo semântico, não por um pipeline de integração física que precisaria ser mantido sincronizado.
    • Fatos derivados como regras, não como queries: uma definição como “grande comprador” vive na ontologia como regra, não precisa ser reescrita em cada consulta. Quando o critério muda, muda em um lugar só. Sem isso, a definição se duplica em dashboards, notebooks e relatórios, e começa a divergir.
    • Controle de acesso no nível do grafo: a segurança por grafo nomeado controla o acesso em nível de grafo, de modo que papéis diferentes veem subconjuntos diferentes do grafo de conhecimento. Para proteção mais granular, propriedades sensíveis como :ssn e :cardNumber podem ser marcadas como protegidas — usuários com permissão veem os valores reais; os demais recebem valores mascarados por padrão.

    Construindo a camada semântica: ontologia, mapeamentos e raciocínio

    A ontologia

    A ontologia C360 é criada no Stardog Designer, uma ferramenta visual de modelagem e mapeamento sem código. O modelador cria conceitos (:Customer, :Order, :Product), os conecta com relacionamentos e declara campos como :ssn e :cardNumber como propriedades sensíveis. Nenhum OWL ou RDF é escrito manualmente. O modelo C360 completo define aproximadamente dez classes e trinta propriedades.

    O Designer também pode gerar um modelo inicial a partir de metadados de fontes existentes — como esquemas de tabelas, definições FHIR ou perguntas de competência — o que é um caminho mais rápido do que escrever o modelo do zero.

    Uma vantagem de portabilidade do Designer é o uso do Turtle, a serialização padrão W3C para RDF (Framework de Descrição de Recursos) para persistir modelos. Isso evita aprisionamento tecnológico e suporta interoperabilidade: é possível importar ontologias de ferramentas como Protégé, exportar dados para serviços como Amazon Neptune e realizar fluxos de trabalho de ida e volta com outros utilitários compatíveis com RDF.

    O trecho central da ontologia que sustenta a federação é simples:

    :Customer a owl:Class .
    :purchasedBy a owl:ObjectProperty ;
      so:domainIncludes :Order ;
      so:rangeIncludes :Customer .
    :ssn a owl:DatatypeProperty, m:SensitiveProperty ;
      so:domainIncludes :Customer .

    A ontologia completa está disponível no C360 Knowledge Kit.

    Os mapeamentos: o bloco de construção da federação

    No Designer, os mapeamentos são criados visualmente. O modelador mapeia a tabela customer do Aurora para o conceito :Customer e indica que id é a chave da entidade. O mesmo processo é feito no lado do Redshift: mapeia a tabela purchase e marca cid como chave do cliente.

    A propriedade arquitetural fundamental é o template de IRI. Ambos os mapeamentos produzem o mesmo identificador para o mesmo cliente. Um cliente com cid=42 se torna urn:stardog:demos:c360:customer:42 independentemente de a linha ter vindo da tabela customer no Aurora ou da tabela purchase no Redshift. O agente vê uma entidade única. Os bancos permanecem inalterados. Nenhum SQL JOIN cruza os dois bancos — o “join” é o acordo de IRI.

    Quando o Designer salva um mapeamento, ele emite o Stardog Mapping Syntax (SMS), um superconjunto do padrão W3C R2RML que usa sintaxe similar ao SPARQL. Os dois trechos que carregam o bloco de construção da federação são:

    # Mapeamento Aurora (customer)
    BIND(TEMPLATE("urn:stardog:demos:c360:customer:{cid}") AS ?iri)
    
    # Mapeamento Redshift (order)
    BIND(TEMPLATE("urn:stardog:demos:c360:customer:{cid}") AS ?cust_iri)

    Os arquivos de mapeamento completos para todas as tabelas C360 estão no kit.

    Raciocínio sobre o grafo

    O Stardog suporta raciocínio OWL e regras definidas pelo usuário escritas em Stardog Rule Syntax (SRS) ou SWRL. Raciocínio é o processo de inferir novos fatos a partir de dados existentes usando o esquema.

    O kit define classes derivadas como Big_Spender (um cliente que fez pelo menos um pedido acima de um limite) e Large_Order. Com o raciocínio habilitado em tempo de consulta, perguntar “quantos grandes compradores há por estado?” funciona sem precisar pré-computar ou materializar esses fatos. As regras são definidas uma vez no modelo semântico e avaliadas sobre dados ao vivo quando a consulta é executada.

    Governança de acesso com segurança por grafo nomeado

    Dados de Customer 360 são regulados. Dois requisitos aparecem cedo: alguns usuários (RH, fraude) precisam ver informações de identificação pessoal (PII) como CPF e número completo de cartão; a maioria dos usuários (marketing, analytics) não pode. E o controle não deve exigir mudanças nos bancos subjacentes.

    O mecanismo do Stardog para isso é a segurança por grafo nomeado. No exemplo, o mapeamento do Aurora é dividido em dois grafos virtuais:

    • aurora_c360_safe: perfil do cliente sem PII (tudo exceto :ssn e :cardNumber).
    • aurora_c360_pii: apenas os triplos de PII, vinculados ao mesmo IRI de cliente.

    O mapeamento do Redshift é um único grafo: redshift_c360. Dois papéis são criados: hr_user com leitura nos três grafos virtuais, e marketing_user com leitura apenas em aurora_c360_safe e redshift_c360.

    Quando o marketing_user executa uma consulta SPARQL pedindo ?c :ssn ?ssn, o planejador do Stardog trata aurora_c360_pii como se não existisse para aquele usuário. O pushdown JDBC para a coluna SSN simplesmente não acontece. Mesma consulta SPARQL, dois papéis, dois conjuntos de resultados diferentes — sem filtro no nível da aplicação, sem mudança no banco, sem risco de vazamento por uma ferramenta de BI mal configurada.

    Para casos em que campos sensíveis estão espalhados por muitas entidades, o Stardog também suporta marcar propriedades individuais como sensíveis na ontologia, com a marcação acionando mascaramento em nível de coluna em tempo de consulta. Veja a documentação de segurança granular do Stardog para os passos de configuração.

    Executando o agente e os dois caminhos de integração com o Stardog

    O agente é construído com o Strands Agents: um script Python curto conecta o Claude Sonnet 4.6 (no Amazon Bedrock) a uma ferramenta que executa SPARQL contra o Stardog. Um resumo da ontologia é carregado no prompt de sistema do agente. O modelo escreve SPARQL, a ferramenta retorna linhas, o modelo resume os resultados.

    Para produção, a recomendação é implantar no Amazon Bedrock AgentCore, que empacota o scaffolding operacional em um serviço gerenciado: o AgentCore Runtime hospeda o agente e gerencia concorrência e estado de sessão; o AgentCore Gateway é a superfície de entrada que valida o Token Web JSON (JWT) do provedor de identidade e roteia a chamada para o Runtime; o AgentCore Identity mantém o token do Stardog como provedor de credencial, de modo que a credencial não fica no código do agente.

    Dois caminhos de integração são descritos:

    • Caminho A — ferramenta SPARQL direta: uma pequena ferramenta Python envolve o cliente pystardog e é exposta ao agente via decorator de ferramenta do Strands. O agente escreve SPARQL, a ferramenta executa, a ferramenta retorna linhas. Funciona em instâncias Stardog acessíveis via HTTPS, incluindo o nível gratuito do Stardog Cloud. Este foi o caminho usado no POC porque não exige habilitação especial na conta Stardog.
    • Caminho B — servidor MCP do Stardog Cloud como alvo de ferramenta no Gateway: o Stardog publica um servidor MCP oficial, stardog-union/stardog-cloud-mcp, que expõe o Voicebox (camada de consulta em linguagem natural do Stardog) como três ferramentas: voicebox_ask, voicebox_generate_query e voicebox_settings. O AgentCore Gateway pode registrar esse servidor MCP como alvo de ferramenta, o que significa que o agente dentro do Runtime enxerga o Voicebox como uma ferramenta sem código de cola, e o AgentCore Identity injeta o token no salto do Gateway. O modo local do servidor MCP é estável; o modo remoto está em beta. O Caminho B também exige um token de API do Voicebox, que é restrito a contas específicas.

    A recomendação é usar o Caminho A quando não há acesso à API ou quando se quer controle total sobre a geração de SPARQL. Usar o Caminho B quando há acesso à API e se quer a cadeia de raciocínio e proveniência do Voicebox.

    Para implantações em produção, também é recomendado habilitar o cache de prompts do Amazon Bedrock. O agente reutiliza o mesmo prompt de sistema extenso — o resumo da ontologia C360 — em cada chamada. O cache de prompts mantém essa porção aquecida entre chamadas, reduzindo o custo de tokens de entrada em invocações repetidas.

    Consultas de verificação e extensibilidade

    Para confirmar que a federação funcionou como projetado, três categorias de perguntas foram executadas contra a implantação ao vivo:

    • Somente Aurora: “Liste dez clientes e seus estados.” O Stardog emite uma consulta SQL contra as tabelas do Aurora e retorna as linhas. O grafo virtual do Redshift não é tocado.
    • Somente Redshift: “Top dez produtos por unidades vendidas.” O Stardog emite uma agregação contra a tabela de compras do Redshift. O Aurora não é tocado.
    • Federado: “Top dez maiores compradores, com seus estados.” Essa consulta precisa cruzar clientes do Aurora com pedidos do Redshift pelo IRI compartilhado de cliente. O Stardog emite uma consulta SQL para cada fonte, recebe os dois conjuntos de resultados e os une pela variável ?cust — o IRI mapeado a partir do cid em cada lado.

    O caso de raciocínio também foi verificado: “quantos grandes compradores há por estado?” com raciocínio habilitado. O Stardog aplicou a regra Big_Spender sobre o grafo federado em tempo de consulta e retornou contagens por estado sem pré-computar ou materializar a classe derivada.

    Para governança, a mesma consulta SPARQL foi executada duas vezes — uma como hr_user e outra como marketing_user. O papel de RH viu o valor do SSN vinculado. O papel de marketing recebeu a mesma estrutura de linha com o binding ?ssn vazio, sem mudança no texto da consulta e sem filtro no lado do banco.

    Extensibilidade: além do Aurora e Redshift

    O mecanismo de grafo virtual do Stardog não é específico para Aurora ou Redshift. Para adicionar uma nova fonte, o modelador trabalha no Stardog Designer e gera o mapeamento SMS. Enquanto os novos mapeamentos produzirem IRIs que correspondam aos existentes para a mesma entidade lógica, a nova fonte passa a participar do grafo federado sem alterar a ontologia ou as consultas existentes.

    Na AWS, isso inclui Amazon Athena (data lake no Amazon S3) e engines do Amazon RDS que fornecem driver JDBC. Fora da AWS, inclui Snowflake, Google BigQuery, MongoDB e SAP HANA. A lista completa está na página de fontes de dados suportadas pelo Stardog.

    Quanto à implantação do próprio Stardog, há dois formatos: Stardog Cloud (SaaS), operado pela Stardog com SLAs de 99,9% e conformidade SOC 2, indicado para quem quer pular a operação; e autogerenciado no Amazon EKS, com imagens de container e Helm charts fornecidos pelo Stardog, indicado para quem precisa manter o tráfego do plano de dados dentro da VPC ou controlar o ciclo de atualizações. Em ambos os casos, os grupos de segurança das fontes de dados precisam permitir conexões de entrada a partir do intervalo de IPs de saída do Stardog Cloud. A documentação de allowlist de chamadas de grafo virtual do Stardog Cloud traz os valores atuais e os passos de configuração.

    Por onde começar

    A maioria das equipes que consegue colocar essa arquitetura em produção começa com um único fluxo de trabalho, não com uma implantação ampla. A sequência prática sugerida é:

    • Escolher um fluxo de trabalho que hoje é respondido lentamente porque os dados estão em dois ou três sistemas. Quanto mais estreito, melhor.
    • Escrever de três a cinco perguntas de competência que o fluxo precisa responder. Essas são as consultas que a camada semântica precisa suportar no primeiro dia.
    • Inicializar a ontologia a partir dos esquemas de fonte no Designer e refiná-la contra as perguntas de competência até que cada uma retorne uma resposta coerente.
    • Configurar a federação como grafos virtuais sobre as fontes ao vivo. Sem ETL, sem terceira cópia dos dados.
    • Conectar o agente à camada pelo Caminho A ou B, dependendo do acesso à API do Voicebox.

    O Stardog C360 Knowledge Kit é um ponto de partida útil — é o mesmo kit adaptado no post original.

    Fonte

    Build a semantic layer for agentic AI on AWS with Stardog and Amazon Bedrock AgentCore (https://aws.amazon.com/blogs/machine-learning/build-a-semantic-layer-for-agentic-ai-on-aws-with-stardog-and-amazon-bedrock-agentcore/)