Blog

  • Relatórios SOC 1, 2 e 3 da Primavera de 2026 já estão disponíveis com 188 serviços no escopo

    AWS divulga relatórios SOC 1, 2 e 3 com 188 serviços no escopo

    A Amazon Web Services (AWS) anunciou a disponibilidade dos relatórios de Controles de Sistema e Organização (SOC) 1, 2 e 3 referentes ao ciclo da primavera de 2026. Esta é uma atualização relevante para equipes de conformidade, auditoria e segurança que utilizam serviços AWS e precisam comprovar aderência a padrões regulatórios.

    O que está coberto nos relatórios

    Os relatórios abrangem 188 serviços AWS ao longo de um período de 12 meses, de 1º de abril de 2025 a 31 de março de 2026. Isso significa que clientes têm à disposição um ano completo de evidências de conformidade, o que facilita muito processos de auditoria e due diligence.

    Esse tipo de cobertura contínua é especialmente valioso para empresas que precisam demonstrar controles robustos a reguladores, parceiros de negócio ou clientes corporativos — cenário cada vez mais comum no mercado brasileiro.

    Como acessar os relatórios

    Os relatórios SOC 1 e SOC 2 podem ser baixados diretamente pelo AWS Artifact no Console de Gerenciamento da AWS, que funciona como um portal de autoatendimento para acesso sob demanda a documentos de conformidade da AWS. Caso ainda não conheça a ferramenta, a AWS disponibiliza um guia de introdução em Primeiros Passos com o AWS Artifact.

    Já o relatório SOC 3 — a versão de uso geral, voltada para divulgação pública — pode ser encontrado tanto na Página de Conformidade SOC da AWS quanto no próprio AWS Artifact.

    Expansão contínua do escopo de conformidade

    A AWS mantém uma política de ampliar progressivamente o número de serviços cobertos por seus programas de conformidade. O objetivo é garantir que clientes consigam atender às suas necessidades arquiteturais e regulatórias sem precisar abrir mão de serviços mais recentes da plataforma. A lista atualizada de serviços no escopo pode ser consultada na página de Serviços no Escopo.

    Dúvidas e próximos passos

    Clientes AWS que tiverem dúvidas sobre conformidade SOC podem entrar em contato com o time de conta da AWS. Para uma visão geral de todos os programas de conformidade disponíveis, a AWS mantém uma página dedicada em Programas de Conformidade da AWS.

    Para equipes brasileiras que trabalham com setores regulados — como financeiro, saúde ou governo — manter esses relatórios atualizados é parte essencial da estratégia de governança em nuvem. Vale garantir que os documentos mais recentes já estejam em mãos antes da próxima rodada de auditorias.

    Fonte

    Spring 2026 SOC 1, 2, and 3 reports are now available with 188 services in scope (https://aws.amazon.com/blogs/security/spring-2026-soc-1-2-and-3-reports-are-now-available-with-188-services-in-scope/)

  • AWS HealthOmics passa a suportar o Nextflow versão 26.04

    O que mudou no AWS HealthOmics

    A AWS anunciou que o AWS HealthOmics passou a suportar o Nextflow na versão 26.04. A atualização traz um conjunto de novos recursos e melhorias que beneficiam diretamente equipes que desenvolvem e executam pipelines bioinformáticos na plataforma.

    Para quem não conhece, o AWS HealthOmics é um serviço elegível ao HIPAA (Health Insurance Portability and Accountability Act — Lei de Portabilidade e Responsabilidade de Seguros de Saúde) voltado para clientes das áreas de saúde e ciências da vida, com foco em acelerar descobertas científicas em larga escala por meio de workflows bioinformáticos totalmente gerenciados.

    Novidades do Nextflow v26.04

    Parser de sintaxe estrita

    Um dos destaques da versão é o parser de sintaxe estrita, que agora vem ativado por padrão no Nextflow v26.04. Esse recurso aplica validações rigorosas de linting, estruturas de bloco consistentes e escopo sem ambiguidades — e faz isso durante a inicialização do pipeline, e não horas depois da execução já em andamento. Na prática, isso significa menos tempo de computação desperdiçado e, consequentemente, redução de custos operacionais.

    Tipos de registro (Record Types)

    Os tipos de registro permitem que desenvolvedores de workflows utilizem nomes de dados significativos em vez de depender da ordem dos elementos dentro de tuplas. O resultado é um código mais legível e menos sujeito a erros, especialmente em pipelines complexos com muitos campos de dados.

    Resumo de saída do workflow em formato JSON

    O novo resumo de saída do workflow é gerado em formato JSON (JavaScript Object Notation — Notação de Objetos JavaScript), o que facilita a integração com ferramentas downstream que consomem os resultados dos pipelines. Equipes que automatizam etapas pós-processamento se beneficiam diretamente dessa padronização.

    Modo de logging para agentes (Agent Logging Mode)

    O modo de logging para agentes oferece uma saída estruturada e minimalista, otimizada especificamente para depuração e desenvolvimento de workflows com auxílio de inteligência artificial. Essa funcionalidade é especialmente relevante para times que já utilizam ferramentas de IA para apoiar o desenvolvimento de pipelines.

    Disponibilidade

    O Nextflow v26.04 já está disponível em todas as regiões onde o AWS HealthOmics opera:

    • US East (N. Virginia)
    • US West (Oregon)
    • Europe (Frankfurt, Ireland, London)
    • Israel (Tel Aviv)
    • Asia Pacific (Singapore, Seoul)

    Para aprofundar os detalhes técnicos da integração, a AWS disponibiliza a documentação de especificidades da definição de workflows Nextflow com as notas completas desta versão.

    Fonte

    AWS HealthOmics now supports Nextflow version 26.04 (https://aws.amazon.com/about-aws/whats-new/2026/06/aws-healthomics-nextflow-version-26-04/)

  • Amazon Quick passa a suportar conectividade VPC para conexões MCP

    O que mudou no Amazon Quick

    A AWS anunciou uma expansão importante para o Amazon Quick: o assistente de inteligência artificial agora suporta conectividade via Nuvem Privada Virtual (VPC) para conexões com servidores do Protocolo de Contexto de Modelo (MCP). A novidade é voltada especialmente para clientes corporativos que hospedam seus próprios servidores MCP em redes privadas.

    Para quem ainda não conhece, o Amazon Quick é um assistente de IA que transforma perguntas em respostas, respostas em ações e ações em resultados concretos — tanto para uso individual quanto para equipes inteiras.

    Qual era a limitação anterior

    Até então, o suporte a MCP no Amazon Quick estava restrito a servidores hospedados por terceiros e acessíveis pela internet pública. Isso deixava de fora um cenário muito comum em empresas: servidores MCP rodando em redes privadas, conectados a aplicações proprietárias, fontes de dados customizadas e ferramentas internas.

    O que a conectividade VPC resolve

    Com o suporte a VPC, organizações que hospedam servidores MCP em redes privadas agora conseguem estender essas capacidades com segurança para os fluxos de trabalho de IA dentro do Quick — sem precisar expor nada à internet pública.

    Na prática, é possível conectar o Quick a servidores MCP rodando em:

    • Amazon EC2
    • AWS Fargate
    • AWS Agentcore
    • Outros recursos de computação dentro da rede privada

    Todo o tráfego é roteado com segurança pela VPC, sem nenhuma exposição externa.

    Como configurar a conexão

    O processo é direto: durante a criação de um conector MCP no Quick, basta selecionar a conexão VPC desejada e informar a URL do servidor MCP. Após a configuração, toda a equipe pode interagir com os servidores MCP privados por meio de linguagem natural dentro do Quick.

    Disponibilidade

    O suporte a VPC para servidores MCP está disponível em todas as Regiões da AWS onde o Amazon Quick já está presente.

    Para saber mais sobre como conectar servidores MCP privados, a AWS disponibiliza a documentação sobre MCP e o guia de conectividade VPC.

    Fonte

    Amazon Quick now supports VPC connectivity for MCP connections (https://aws.amazon.com/about-aws/whats-new/2026/06/amazon-quick-vpc-mcp/)

  • Referencie seus próprios segredos do AWS Secrets Manager no Amazon Bedrock AgentCore Identity

    O desafio de credenciais em agentes de IA em produção

    Agentes de IA são tão poderosos quanto as ferramentas que conseguem acessar. Para buscar dados em um CRM, publicar atualizações no Slack ou consultar um repositório no GitHub, esses agentes precisam chamar APIs externas — e isso significa passar credenciais com segurança em tempo de execução. Fazer isso corretamente, sem hardcodar segredos no código ou expô-los nos prompts do agente, é um dos grandes desafios de quem constrói sistemas agênticos prontos para produção.

    O Amazon Bedrock AgentCore Identity já endereçava esse problema por meio de provedores de credenciais e um cofre de tokens que criavam e gerenciavam automaticamente um segredo no AWS Secrets Manager para cada recurso de provedor de credencial de saída (Outbound credential provider). Esse segredo armazenava a chave de API ou o client secret junto com outros metadados do provedor de identidade externo.

    No entanto, havia uma limitação importante: os clientes não podiam configurar tags personalizadas, políticas de rotação ou criptografia com chaves gerenciadas pelo cliente via Serviço de Gerenciamento de Chaves da AWS (AWS KMS) no momento da criação desses segredos.

    O que a AWS anunciou

    A AWS anunciou a possibilidade de referenciar um segredo já existente no AWS Secrets Manager dentro do AgentCore Identity. Com isso, as equipes podem apontar para um segredo pré-configurado e manter controle total sobre como ele é gerenciado — sem precisar criar um novo segredo do zero gerenciado pelo serviço.

    Na prática, isso significa que é possível fornecer um segredo existente no Secrets Manager para uso com seus recursos de provedor de credenciais. A equipe retém controle completo sobre a configuração de criptografia, rotação, replicação, tags e políticas de recurso — exatamente como gerencia qualquer outro segredo no Secrets Manager.

    Outro ponto relevante: é possível referenciar um segredo de outra conta AWS dentro da mesma Região AWS, embora o compartilhamento entre Regiões diferentes não seja suportado. A funcionalidade também é compatível com segredos trazidos por meio de conectores externos do AWS Secrets Manager, permitindo integração com gerenciadores de segredos de terceiros.

    Casos de uso práticos

    A AWS apresentou alguns cenários concretos onde essa capacidade faz diferença:

    • Reutilização de segredos existentes: Se o agente acessa uma API externa para a qual a equipe já tem um segredo configurado, basta fornecer o Nome de Recurso da Amazon (ARN) desse segredo ao recurso de provedor de credenciais, em vez de criar um novo. Segredos de outras contas AWS na mesma Região e segredos trazidos via conectores externos também são suportados.
    • Rotação sem interrupção: Quando o valor do segredo é rotacionado seguindo boas práticas de segurança, o AgentCore Identity recupera automaticamente o valor atualizado na próxima leitura. Não é necessário atualizar ou recriar os recursos de provedor de credenciais.
    • Controle granular de acesso: É possível configurar a política de recurso diretamente no AWS Secrets Manager, controlando quais entidades principais do Gerenciamento de Identidade e Acesso da AWS (IAM) podem acessar o segredo e definindo condições de acesso específicas.
    • Ambientes regulados com criptografia própria: Para agentes que operam em ambientes regulados onde toda credencial precisa ser criptografada com chave gerenciada pelo cliente, basta criar o segredo com essa chave antes de fornecê-lo ao AgentCore Identity. Isso é especialmente útil para organizações que aplicam Políticas de Controle de Serviço (SCPs) e Políticas de Controle de Recursos (RCPs) para garantir que todos os dados sejam criptografados com chaves gerenciadas pelo cliente. Ao referenciar um segredo existente, a configuração de criptografia é preservada integralmente.
    • Governança e rastreabilidade por tags: Organizações que exigem tags de recurso em segredos para alocação de custos, rastreamento de conformidade ou auditoria de governança podem criar e tagear o segredo conforme seus padrões antes de fornecê-lo ao AgentCore Identity.

    Para saber mais sobre as opções de configuração de segredos disponíveis, a AWS disponibiliza o Guia do Usuário do AWS Secrets Manager.

    Pré-requisitos

    Para utilizar essa funcionalidade, são necessários:

    • Um segredo existente no AWS Secrets Manager contendo a chave de API ou o client secret OAuth.
    • Permissões de IAM para conceder ao service principal do AgentCore Identity acesso de secretsmanager:GetSecretValue ao segredo.
    • Se estiver usando uma chave AWS KMS gerenciada pelo cliente, permissão de kms:Decrypt nessa chave para o service principal.
    • Acesso ao console do Amazon Bedrock AgentCore Identity ou à Interface de Linha de Comando da AWS (AWS CLI).

    Como configurar na prática

    Para referenciar um segredo no AWS Secrets Manager, basta fornecer o ARN do segredo e a chave JSON ao criar os recursos de provedor de credenciais pela API do AgentCore Identity. O serviço recupera o valor da credencial a partir da chave JSON especificada no segredo em tempo de execução.

    Pelo console

    É possível configurar um segredo referenciado ao criar novos recursos de provedor de credenciais diretamente pelo console do Amazon Bedrock AgentCore. A funcionalidade suporta tanto chaves de API quanto credenciais de cliente OAuth.

    Para adicionar uma chave de API com segredo referenciado:

    • Abra o console do Amazon Bedrock AgentCore.
    • No painel de navegação esquerdo, escolha Identity.
    • Na seção Outbound Auth, escolha Add Outbound Auth.
    • Escolha Add API key.
    • Insira um nome para o recurso Outbound Auth.
    • Em API key selection method, escolha Provide API key via Secrets Manager.
    • No campo Secrets Manager ARN, insira ou selecione o ARN do segredo existente. A lista exibe os segredos disponíveis na conta. Por exemplo: arn:aws:secretsmanager:us-east-1:123456789012:secret:myApiKeySecret-AbCdEf.
    • No campo JSON key, especifique a chave dentro do segredo que contém o valor da chave de API.
    • Escolha Add e verifique se o provedor de credenciais aparece na lista de Outbound Auth.

    Para adicionar um client secret OAuth com segredo referenciado:

    • Na página Identity, escolha Add Outbound Auth.
    • Escolha Add OAuth client.
    • Insira um nome para o cliente OAuth (por exemplo, google-oauth-client-v5fz5).
    • Em Provider, escolha o provedor desejado (incluído ou personalizado).
    • Insira o Client ID fornecido pelo provedor de identidade.
    • Em Client secret, escolha Provide Client secret via Secrets Manager.
    • No campo Secrets Manager ARN, insira o ARN do segredo que contém o client secret OAuth.
    • No campo JSON key, especifique a chave dentro do segredo que contém o valor do client secret.
    • Escolha Add OAuth Client e verifique se o provedor aparece na lista.

    Pela AWS CLI

    Também é possível configurar um segredo referenciado ao criar um novo recurso Outbound Auth para um client secret OAuth diretamente pela AWS CLI:

    aws bedrock-agentcore-control create-oauth2-credential-provider \
    --name "google-oauth-client-v5fz5" \
    --credential-provider-vendor "GoogleOauth2" \
    --oauth2-provider-config-input '{
      "googleOauth2ProviderConfig": {
        "clientId": "",
        "clientSecretSource": "EXTERNAL",
        "clientSecretConfig": {
          "secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myGoogleKeySecret-AbCdEf",
          "jsonKey": "key"
        }
      }
    }'

    Por meio de um agente de IA

    Se a equipe utiliza um agente de codificação por IA (como o Kiro ou similar), é possível instruí-lo a configurar um segredo referenciado diretamente com um prompt como:

    “I have an existing secret in AWS Secrets Manager at ARN arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-key. Create an OAuth2 credential provider in Amazon Bedrock AgentCore Identity named <client-name>, using GoogleOauth2 as the vendor. The client ID is <clientId>, the client secret source is EXTERNAL, and the secret JSON key is key.”

    Substitua <client-name> e <clientId> pelos valores correspondentes.

    Atenção: É necessário conceder ao AgentCore Identity permissão para ler o segredo, adicionando uma política de recurso ao segredo que permita ao service principal chamar secretsmanager:GetSecretValue. Se o segredo estiver criptografado com uma chave KMS gerenciada pelo cliente, também é necessário conceder ao service principal a permissão kms:Decrypt nessa chave.

    Conclusão

    Com a capacidade de referenciar segredos existentes no AWS Secrets Manager, o AgentCore Identity passa a oferecer maior flexibilidade para equipes que já possuem processos de gestão de segredos consolidados. É possível manter controle total sobre como as credenciais são criptografadas, rotacionadas e acessadas, enquanto o AgentCore Identity cuida de recuperá-las em tempo de execução.

    Para começar, a AWS disponibiliza a documentação do Amazon Bedrock AgentCore Identity. Para mais informações sobre gestão de segredos, consulte o Guia do Usuário do AWS Secrets Manager.

    Fonte

    Reference your own AWS Secrets Manager secrets in Amazon Bedrock AgentCore Identity (https://aws.amazon.com/blogs/machine-learning/reference-your-own-aws-secrets-manager-secrets-in-amazon-bedrock-agentcore-identity/)

  • Autenticação segura com OAuth no AgentCore Gateway para clientes MCP

    O problema: assistentes de IA precisam de acesso seguro a ferramentas corporativas

    No dia a dia de desenvolvimento moderno, assistentes de codificação baseados em IA — como o Kiro IDE — precisam se comunicar com ferramentas e serviços remotos para serem úteis. Mas essa comunicação levanta uma questão crítica de segurança: como garantir que apenas usuários e agentes autorizados consigam acessar essas ferramentas?

    O Protocolo de Contexto de Modelo (MCP) é o padrão que define como esses assistentes se conectam a servidores de ferramentas. E para que essa conexão seja segura em ambientes corporativos, é preciso um mecanismo robusto de autenticação — de preferência integrado ao provedor de identidade (IdP) já utilizado pela organização, como Okta, Microsoft Entra ID ou Amazon Cognito.

    A AWS publicou um guia técnico detalhando como implementar exatamente isso: o fluxo de código de autorização OAuth (Authorization Code Flow) como mecanismo de autenticação de entrada para servidores MCP hospedados no Amazon Bedrock AgentCore Gateway.

    O que é o AgentCore Gateway e qual é o seu papel aqui

    O Amazon Bedrock AgentCore é um serviço totalmente gerenciado para implantação, gerenciamento e escalonamento de agentes de IA em produção. Um de seus componentes principais, o AgentCore Gateway, funciona como ponto central de entrada para rotear e proteger as comunicações entre agentes e ferramentas.

    Nessa arquitetura, o Gateway atua como um servidor de recurso OAuth: ele intercepta cada requisição do assistente de IA, valida o token de identidade apresentado e só então encaminha a requisição ao servidor MCP de destino. Esse processo é chamado de autenticação de entrada (inbound authentication).

    Como o fluxo de autorização funciona na prática

    O fluxo envolve cinco componentes principais trabalhando em conjunto:

    • Provedor de Identidade (IdP): gerencia a autenticação dos usuários e emite tokens. Pode ser Amazon Cognito, Okta, Auth0 ou qualquer IdP corporativo compatível com OpenID Connect (OIDC).
    • Usuário: a pessoa real que se autentica no IdP e cuja identidade é verificada em cada requisição.
    • Amazon Bedrock AgentCore Gateway: valida os tokens e encaminha as requisições autenticadas ao servidor MCP.
    • Assistente de codificação (Kiro IDE): atua como cliente OAuth, gerenciando todo o fluxo de autenticação automaticamente.
    • Servidor MCP: as ferramentas e serviços de back-end que o assistente precisa acessar.

    Opcionalmente, um proxy OAuth para MCP pode ser utilizado para padronizar a interface entre o cliente, o IdP e o servidor MCP — especialmente útil quando há diferenças de implementação entre esses componentes.

    O fluxo completo segue estas etapas:

    • O Kiro IDE tenta se conectar ao endpoint MCP do Gateway.
    • O Gateway detecta a ausência de token válido e responde com HTTP 401, apontando para o endpoint de metadados de recurso protegido (.well-known/oauth-protected-resource). Isso segue o padrão de Metadados de Recurso Protegido (PRM) da especificação MCP.
    • O cliente busca os metadados e obtém a URL de descoberta do IdP.
    • O Kiro IDE abre o navegador do sistema e redireciona o usuário para a página de login do IdP, com um desafio PKCE (Prova de Chave para Troca de Código).
    • O usuário se autentica e concede autorização.
    • O IdP redireciona o navegador para o callback local do cliente com um código de autorização.
    • O cliente troca esse código (junto com o verificador PKCE) por um token de acesso junto ao IdP.
    • A partir daí, o Kiro IDE inclui o token em todas as requisições ao Gateway, que valida assinatura, expiração, emissor e claims antes de encaminhar ao servidor MCP.

    Implementação técnica passo a passo

    Pré-requisitos

    • Conta AWS com o AgentCore Gateway implantado.
    • Um IdP com permissão para configurar um aplicativo (Amazon Cognito, Okta, Auth0 ou similar).
    • Proxy OAuth para MCP (mcp-remote).
    • Kiro IDE instalado localmente.
    • Conhecimento básico de fluxos OAuth 2.0.

    Passo 1: Configurar o provedor de identidade

    O primeiro passo é registrar um aplicativo OIDC no IdP da organização, configurando-o para suportar o fluxo de código de autorização com PKCE.

    1.1 Criar o aplicativo OIDC — No console do IdP, crie uma nova integração de aplicativo OIDC/OAuth 2.0 com método de login OIDC e tipo de aplicação Web.

    1.2 Habilitar os tipos de concessão — Ative Authorization Code e Refresh Token.

    1.3 Definir as URIs de redirecionamento — Adicione o callback que o cliente utilizará:

    http://localhost:PORT/callback

    Substitua PORT pela porta que o cliente utiliza.

    1.4 Configurar tempos de vida dos tokens — Recomendações do guia original:

    • Token de acesso: 1 hora
    • Token de atualização: 90 dias (ajustar conforme requisitos de segurança)
    • Token de ID: 1 hora

    1.5 Salvar as configurações — Guarde o Client ID e a URL de descoberta do IdP (por exemplo: https://{yourIdPDomain}/oauth2/default/.well-known/openid-configuration). Importante: nenhum client secret é necessário, pois o PKCE foi projetado justamente para clientes públicos como aplicações desktop.

    Passo 2: Configurar o AgentCore Gateway

    2.1 Definir o modo de autenticação de entrada — Configure o Gateway para usar autenticação baseada em JWT (Token Web JSON) apontando para o endpoint de descoberta do IdP:

    aws agentcore update-gateway \
      --gateway-id <your-gateway-id> \
      --inbound-auth-type JWT \
      --jwt-discovery-url "https://{yourIdPDomain}/oauth2/default/.well-known/openid-configuration" \
      --region <your-region>

    2.2 Validação de claims personalizados — O Gateway valida tokens com base em claims padrão do OAuth 2.0 (iss, aud, exp, iat, client_id, scopes), mas também suporta validação de claims personalizados para acomodar diferentes implementações de IdP. Por exemplo, IdPs como o Okta podem usar cid em vez de client_id. Nesse caso, a configuração seria:

    Custom claim: <claim-name> EQUALS <expected-value>

    Consulte a documentação AgentCore Gateway: configuração de JWT para detalhes completos.

    2.3 Como o Gateway valida tokens — Um ponto importante destacado no guia: o Gateway é agnóstico em relação à forma como o token foi obtido. Não importa se o token veio de um fluxo de credenciais de cliente ou de um fluxo de código de autorização — o que conta é que o token passe nas validações configuradas: assinatura, expiração, emissor e claims de audiência ou personalizados.

    2.4 Verificar a configuração — Para confirmar que a autenticação está ativa, faça uma requisição sem token:

    curl -i -X POST https://<your-gateway-url>/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}'

    A resposta esperada é um HTTP 401 com o cabeçalho www-authenticate apontando para o endpoint de metadados:

    HTTP/2 401
    www-authenticate: Bearer resource_metadata="https://<your-gateway-url>/.well-known/oauth-protected-resource"
    {"jsonrpc":"2.0","id":0,"error":{"code":-32001,"message":"Missing Bearer token"}}

    Passo 3: Instalar o proxy OAuth para MCP

    Para padronizar a interface entre o Kiro IDE e o endpoint protegido do Gateway, o guia recomenda o uso do mcp-remote. Vale notar que essa ferramenta é descrita como uma prova de conceito funcional e deve ser tratada como experimental:

    npm install -g mcp-remote

    Passo 4: Configurar o Kiro IDE

    Com o Gateway e o proxy configurados, o último passo é conectar o cliente ao endpoint do Gateway. O Kiro IDE gerencia o fluxo OAuth automaticamente ao receber um desafio 401.

    Adicione a configuração no arquivo ~/.kiro/settings/mcp.json:

    {
      "mcpServers": {
        "gateway-tools": {
          "command": "mcp-remote",
          "args": [
            "https://<your-gateway-url>/mcp",
            "<PORT>",
            "--static-oauth-client-info",
            "{\"client_id\": \"<your-idp-client-id>\", \"redirect_uris\": [\"http://localhost:<PORT>/oauth/callback\"], \"scope\": \"openid profile email offline_access\"}"
          ]
        }
      }
    }

    Parâmetros da configuração:

    • command: usa o mcp-remote para se conectar a servidores MCP remotos.
    • Primeiro argumento: URL do Gateway com o caminho /mcp.
    • Segundo argumento: porta local para o callback OAuth (ex: 3334).
    • --static-oauth-client-info: JSON com client_id do IdP, redirect_uris (deve bater com a porta do segundo argumento) e scope com os escopos necessários.

    Passo 5: Verificar o fluxo completo

    Após reiniciar o cliente e tentar usar uma ferramenta do Gateway, o usuário é redirecionado ao navegador para login no IdP. Após autenticação bem-sucedida, a ferramenta é executada normalmente. Nos logs do Gateway, uma validação bem-sucedida aparece como:

    [INFO] Token validated successfully for user: user@example.com
    [INFO] Executing tool: list_files

    Para um passo a passo completo usando o Okta como IdP, a AWS disponibilizou um repositório no GitHub com exemplos práticos.

    Limpeza dos recursos

    Para desfazer o ambiente criado durante os testes, o guia recomenda seguir a ordem inversa de criação:

    1. Revogar tokens OAuth ativos — Consulte o endpoint de revogação do seu IdP. Em geral, a chamada segue este padrão:
      curl -X POST "<your-idp-revocation-endpoint>" \
        -H "Content-Type: application/x-www-form-urlencoded" \
        -d "token=<your-refresh-token>&client_id=<your-client-id>"

      Para limpar o cache local de tokens do mcp-remote (macOS/Linux):

      rm -rf ~/.mcp-auth
    2. Remover a configuração do Kiro IDE — Apague o bloco gateway-tools do arquivo ~/.kiro/settings/mcp.json.
    3. Desinstalar o mcp-remote:
      npm uninstall -g mcp-remote
    4. Remover a configuração do Gateway — Duas opções:
      # Opção A: remover apenas a autenticação de entrada
      aws agentcore update-gateway \
        --gateway-id <your-gateway-id> \
        --inbound-auth-type NONE \
        --region <your-region>
      
      # Opção B: deletar o Gateway completamente
      aws agentcore delete-gateway \
        --gateway-id <your-gateway-id> \
        --region <your-region>
    5. Remover o aplicativo OIDC do IdP — Acesse o console do IdP, navegue até o aplicativo criado (ex: “AgentCore Gateway client”), desative-o e exclua.

    Principais conclusões

    O guia publicado pela AWS demonstra uma arquitetura sólida para garantir acesso seguro e verificado por identidade a servidores MCP em ambientes corporativos. Os pontos mais relevantes:

    • O fluxo de código de autorização garante autenticação forte, com consentimento explícito do usuário e verificação de identidade.
    • O AgentCore Gateway atua como servidor de recurso OAuth, validando tokens antes de permitir qualquer execução de ferramentas.
    • O fluxo é transparente para o usuário final: a autenticação ocorre uma vez, e os tokens são renovados automaticamente.
    • A arquitetura escala para múltiplos clientes de IA e diferentes provedores de identidade.

    Recursos adicionais

    Fonte

    Building a secure auth code flow setup using AgentCore Gateway with MCP clients (https://aws.amazon.com/blogs/machine-learning/building-a-secure-auth-code-flow-setup-using-agentcore-gateway-with-mcp-clients/)

  • CloudTroop Weekly #014 — 2026-w22





    CloudTroop Weekly #014 — 2026-w22

    31 de maio de 2026

    Resumo da Semana

    A semana foi dominada por dois eixos: segurança em profundidade e IA agêntica saindo do laboratório para produção. No lado da segurança, a AWS entregou visibilidade inédita em ataques DDoS via Shield Advanced, rastreabilidade automática de mudanças organizacionais no CloudTrail e proteção contra ransomware nos backups do S3 com GuardDuty. Na frente de IA, observabilidade unificada para LLMs no SageMaker e pagamentos autônomos para agentes sinalizam maturidade operacional real. Quem ainda trata segurança e IA como projetos isolados vai sentir o custo dessa separação em breve.

    O que muda na prática

    • Shield Advanced agora gera logs de fluxo durante ataques DDoS ativos — análise forense e evidências de conformidade deixam de depender de reconstrução manual após o incidente.
    • GuardDuty Malware Protection escaneia backups contínuos do S3, permitindo identificar o ponto exato de contaminação antes de restaurar dados em estratégias de recuperação pós-ransomware.
    • AWS Organizations passa a emitir eventos CloudTrail para entrada e saída de contas — movimentos laterais entre contas agora podem ser detectados automaticamente em ambientes multi-conta.

    Ações da semana

    • Se você usa Shield Advanced, habilite os logs de fluxo de ataques DDoS e configure um destino no S3 ou CloudWatch Logs esta semana — o recurso já está disponível e não requer mudança de arquitetura.
    • Revise sua estratégia de backup no AWS Backup: ative o GuardDuty Malware Protection para os cofres do S3 e valide se os alertas de detecção estão roteados para o seu canal de resposta a incidentes.

    Top 10 da Semana

    1

    Well-Architected: segurança da cadeia de suprimentos de software

    Ataques a pipelines CI/CD e registros de pacotes são crescentes; este guia oferece camadas concretas de defesa com serviços AWS nativos.

    Para quem: Engenheiros de plataforma, DevSecOps e arquitetos responsáveis por pipelines de entrega de software.

    Segurança, DevSecOps

    2

    AWS Shield Advanced agora oferece logs de fluxo de ataques DDoS

    Visibilidade em nível de pacote durante ataques ativos muda o jogo para análise forense, inteligência de ameaças e evidências de conformidade.

    Para quem: Equipes de segurança e operações que protegem aplicações expostas à internet com Shield Advanced.

    Segurança, DDoS

    3

    Migre o Network Firewall para o Transit Gateway e simplifique sua rede

    Eliminar a VPC de inspeção dedicada reduz custos operacionais e simplifica arquiteturas hub-and-spoke em ambientes multi-conta.

    Para quem: Arquitetos de rede e engenheiros de infraestrutura que gerenciam ambientes AWS com múltiplas VPCs.

    Rede, Segurança

    4

    AWS Organizations emite eventos CloudTrail para mudanças de membros

    Rastrear automaticamente quando contas entram ou saem da organização é essencial para governança, auditoria e detecção de movimentos laterais.

    Para quem: Administradores de nuvem, equipes de segurança e auditores responsáveis por ambientes multi-conta.

    Governança, Segurança

    5

    GuardDuty Malware Protection agora escaneia backups contínuos do S3

    Identificar pontos limpos na linha do tempo de backups contaminados é crítico para recuperação segura após incidentes de ransomware.

    Para quem: Equipes de segurança e operações que dependem do AWS Backup para estratégias de recuperação de desastres.

    Segurança, Backup

    6

    Network Firewall ganha filtragem por categoria de URL e domínio

    Controlar acesso à internet por categorias gerenciadas automaticamente elimina manutenção de listas e habilita governança de uso de IA generativa.

    Para quem: Engenheiros de segurança e compliance que precisam controlar o tráfego de saída em ambientes corporativos.

    Segurança, Rede

    7

    Observabilidade completa para LLMs no SageMaker: GPU à qualidade

    Unificar métricas de infraestrutura e qualidade de respostas em um único dashboard é o que separa LLMs em experimento de LLMs em produção confiável.

    Para quem: Engenheiros de ML e times de plataforma que operam modelos de linguagem em produção no SageMaker.

    IA, Observabilidade

    8

    AgentCore Payments: micropagamentos autônomos para agentes de IA

    Resolver pagamentos em fluxos agênticos com controle de orçamento e observabilidade nativa é um habilitador crítico para agentes de IA em produção.

    Para quem: Arquitetos e desenvolvedores construindo sistemas de agentes de IA que precisam consumir APIs pagas ou conteúdo externo.

    IA Agêntica

    9

    Nova geração do AWS Resilience Hub com IA generativa e análise de falhas

    Descoberta automática de dependências e análise de modos de falha com GenAI acelera a identificação de gaps de resiliência em arquiteturas complexas.

    Para quem: Arquitetos de soluções e engenheiros de confiabilidade responsáveis por SLAs e estratégias de DR.

    Resiliência, Arquitetura

    10

    Amazon EMR suporta Apache Spark 4.0.2 com Iceberg v3 e FGAC

    ANSI SQL padrão, controle de acesso por linha e coluna e suporte ao Iceberg v3 são mudanças que afetam diretamente pipelines de dados em produção.

    Para quem: Engenheiros de dados e arquitetos de data lake que operam workloads Spark no Amazon EMR.

    Dados, Analytics


  • Observabilidade Completa para Inferência de LLMs no Amazon SageMaker AI: Do Uso de GPU à Qualidade das Respostas

    Por que observabilidade de LLMs é diferente do monitoramento tradicional

    Colocar modelos de linguagem grande (LLMs) em produção no Amazon SageMaker AI Inference traz um desafio que vai além do monitoramento convencional de software. Aplicações tradicionais retornam saídas determinísticas — você sabe exatamente o que esperar. LLMs, por outro lado, geram respostas livres e variáveis que não se encaixam em alertas do tipo “erro 500” ou “latência acima de X ms”.

    A qualidade das respostas pode degradar silenciosamente ao longo do tempo, à medida que a distribuição dos prompts muda ou o contexto de uso evolui. Ao mesmo tempo, a infraestrutura de serving tem suas próprias complexidades: consumo imprevisível de tokens, pressão na memória da GPU e picos de latência tornam o planejamento de capacidade e o controle de custos um alvo em constante movimento.

    Diante desse cenário, a AWS publicou uma abordagem de observabilidade abrangente para inferência de LLMs, estruturada em duas dimensões complementares: quantidade (saúde operacional da infraestrutura) e qualidade (desempenho dos próprios modelos). Neste artigo, a CloudTroop explica como essa solução funciona e o que ela oferece para times de ML em produção.

    As duas dimensões da observabilidade de LLMs

    A AWS organiza a observabilidade de LLMs em dois eixos que, embora distintos, precisam ser monitorados juntos:

    • Monitoramento de quantidade: foca na saúde operacional da infraestrutura de inferência — throughput de requisições, utilização de recursos, latência, erros e custos. Ajuda a detectar gargalos, dimensionar corretamente os recursos e controlar gastos.
    • Monitoramento de qualidade: avalia o desempenho dos próprios LLMs — precisão das respostas, conformidade, segurança e consistência ao longo do tempo. Detecta drift de modelo, degradação ou comportamentos inesperados nas respostas geradas.

    Os dois eixos são interdependentes: um endpoint pode estar operacionalmente saudável enquanto produz respostas ruins ou inseguras. Da mesma forma, um modelo pode entregar respostas de alta qualidade enquanto roda em infraestrutura superdimensionada e cara. A observabilidade de produção só é completa quando as duas dimensões são monitoradas, correlacionadas e otimizadas juntas.

    Arquitetura da solução

    A solução descrita pela AWS combina três serviços principais, cada um com um papel específico:

    • Amazon SageMaker AI Inference Components: camada de hospedagem dos modelos. Um único endpoint SageMaker AI pode hospedar múltiplos componentes de inferência, cada um rodando um LLM diferente (como gpt-oss-20b e Qwen2.5-7B-Instruct). Cada componente mantém isolamento próprio para roteamento de tráfego, políticas de escalabilidade e atribuição de métricas.
    • Amazon CloudWatch: repositório centralizado de métricas. Recebe dois fluxos distintos de dados de cada componente de inferência: métricas aprimoradas (enhanced metrics) e métricas customizadas de qualidade.
    • Amazon Managed Grafana: camada de visualização, usando o CloudWatch como fonte de dados nativa. Dois dashboards dedicados expõem as métricas de quantidade e qualidade dos LLMs servidos nos endpoints SageMaker AI.

    Os dois namespaces no CloudWatch

    O CloudWatch organiza os dados em dois namespaces separados, mantendo os sinais operacionais e de qualidade bem distintos:

    • /aws/sagemaker/InferenceComponents/<nome-do-modelo> — métricas aprimoradas publicadas automaticamente pelo SageMaker AI quando habilitadas na configuração do endpoint. Incluem dimensões por instância, por contêiner e por GPU, oferecendo visibilidade granular sobre contagens de invocação, latência, taxas de erro e utilização de GPU/CPU por modelo. Para mais detalhes, consulte a documentação oficial de métricas aprimoradas do SageMaker AI e o post de aprofundamento sobre enhanced metrics.
    • /aws/sagemaker/inference-quality/<nome-do-modelo> — métricas customizadas de qualidade, como scores compostos de qualidade, scores de segurança e latência de avaliação. São publicadas em um namespace separado configurado pelo usuário, mantendo os sinais de qualidade isolados das métricas operacionais.

    Monitoramento de quantidade: visibilidade operacional

    O monitoramento de quantidade responde às perguntas operacionais críticas para quem opera endpoints multi-modelo: quantas requisições cada modelo está servindo? As GPUs estão bem dimensionadas ou superprovisionadas? Qual modelo está gerando mais custo?

    O dashboard de quantidade no Amazon Managed Grafana — que usa o CloudWatch como fonte de dados nativa — cobre três áreas principais:

    1. Invocações e latência dos LLMs

    Painéis exibem a latência do modelo como série temporal, o total de invocações comparando os modelos (por exemplo, gpt-oss versus Qwen) e as invocações por cópia de cada modelo. Esses painéis ajudam operadores a entender padrões de throughput de requisições, identificar picos de latência e comparar a distribuição de invocações entre as cópias dos modelos.

    2. Utilização de GPU: compute e memória

    Painéis dedicados mostram o percentual de uso de GPU Compute e GPU Memory para cada modelo. Essa comparação entre modelos permite que engenheiros de ML e equipes de Engenharia de Confiabilidade de Site (SRE) determinem rapidamente se um problema de desempenho é limitado por compute de GPU ou por memória, e se um modelo está consumindo recursos desproporcionais na infraestrutura compartilhada.

    3. Uso do endpoint e custos

    Uma visão de cluster exibe GPUs em uso versus GPUs livres e o total de instâncias, ao lado de painéis de custo por hora para cada modelo. Essa visão mostra qual modelo está gerando mais custo, se as GPUs estão superprovisionadas ou saturadas, e se as políticas de auto scaling estão respondendo à demanda.

    Para configurar esses dashboards no seu ambiente, a AWS disponibilizou um notebook de exemplo no repositório GitHub, que pode ser estendido para criar dashboards adaptados às necessidades da sua organização.

    Monitoramento de qualidade: os LLMs ainda estão performando bem?

    Enquanto as métricas de quantidade dizem se a infraestrutura está saudável, as métricas de qualidade respondem se os LLMs ainda estão se comportando como esperado. A degradação de qualidade raramente dispara alertas tradicionais — ela acontece silenciosamente, causada por mudanças na distribuição dos prompts, drift de conceito ou alterações nas condições do mundo real.

    O monitoramento de qualidade avalia as saídas dos modelos em dimensões que importam para o negócio:

    • Qualidade das respostas: relevância para as perguntas dos usuários, precisão factual, completude e consistência.
    • Segurança e conformidade: detecção de conteúdo prejudicial, monitoramento de viés, conformidade com privacidade e regulatórios.
    • Qualidade da experiência do usuário: utilidade, clareza, tom adequado e coerência em conversas multi-turno.
    • Qualidade específica do domínio: precisão técnica em domínios especializados, qualidade de citações em aplicações de Geração Aumentada por Recuperação (RAG) e correção de código em assistentes de programação.

    Os quatro scores de qualidade no dashboard

    O dashboard de qualidade no Grafana acompanha quatro scores para cada modelo (como gpt-oss-20b e Qwen2.5-7B-Instruct), cada um exibido como gráfico de linha temporal com thresholds de alerta configuráveis:

    • Score Composto de Qualidade: indicador agregado que combina múltiplas dimensões de qualidade. Facilita identificar degradação sustentada versus quedas pontuais que podem estar correlacionadas com tipos específicos de prompt.
    • Score de Segurança: monitora detecção de conteúdo prejudicial ou não conforme. Tende a ser o mais estável dos quatro, indicando guardrails de segurança confiáveis.
    • Score de Relevância: mede o quanto as respostas do LLM atendem à intenção do usuário, ajudando a identificar categorias de prompts que podem desafiar a compreensão do modelo.
    • Score de Tom Profissional: avalia se as respostas mantêm um tom adequado para o contexto de uso.

    Esses scores são calculados usando o padrão LLM-as-judge (LLM como avaliador), com rubricas de avaliação configuráveis. Na solução de exemplo da AWS, o modelo Anthropic Claude Sonnet 4.6, servido via Amazon Bedrock, é utilizado como avaliador — uso permitido pelos termos de serviço padrão do Amazon Bedrock para casos de LLM-as-judge. É possível substituir por outro sistema de avaliação, desde que os termos do modelo escolhido permitam avaliar saídas de outros modelos, os requisitos de residência de dados sejam atendidos e o modelo avaliador seja fixado em uma versão específica para manter a comparabilidade dos scores ao longo do tempo.

    Alertas automáticos por componente de inferência

    Além da visualização, regras de alerta baseadas em thresholds são implantadas automaticamente via Grafana Alerting, dimensionadas por componente de inferência — ou seja, os alertas disparam separadamente para cada modelo. Quando um score de qualidade ultrapassa o threshold configurado, notificações são enviadas via Amazon Simple Notification Service (SNS), permitindo triagem rápida pelas equipes de SRE.

    Esses alertas podem ser integrados a ferramentas como Slack, PagerDuty ou OpsGenie, correlacionando logs automaticamente, classificando a severidade do alerta e priorizando incidentes para mitigação.

    Para configurar o dashboard de qualidade e entender melhor as métricas disponíveis, a AWS disponibilizou um notebook dedicado no repositório GitHub.

    Conclusão

    Observabilidade de stacks de inferência de LLMs em produção exige muito mais do que monitorar uptime e taxas de erro. A abordagem publicada pela AWS demonstra que uma estratégia completa precisa endereçar duas dimensões complementares: quantidade, que cobre a saúde operacional da infraestrutura (utilização de GPU, atribuição de custos, comportamento de escalabilidade e throughput de requisições), e qualidade, que cobre o desempenho contínuo dos modelos (relevância das respostas, conformidade de segurança, precisão factual e tom).

    Ao combinar as métricas aprimoradas dos endpoints SageMaker AI, o Amazon CloudWatch e o Amazon Managed Grafana, é possível construir uma camada de observabilidade unificada sem instrumentação customizada. As métricas aprimoradas oferecem granularidade por modelo e por GPU em infraestrutura compartilhada. O CloudWatch centraliza tanto os sinais operacionais quanto os de qualidade. O Grafana une tudo em dashboards que atendem diferentes stakeholders: equipes de SRE monitorando saturação de recursos, times de governança acompanhando thresholds de segurança e conformidade, e donos de produto comparando qualidade entre modelos.

    Para começar, o repositório de exemplos no GitHub da AWS inclui notebooks para configurar métricas aprimoradas, publicar métricas customizadas de qualidade e alertas, e configurar os dashboards Grafana apresentados neste post.

    Fonte

    Comprehensive observability for Amazon SageMaker AI LLM inference: From GPU utilization to LLM quality (https://aws.amazon.com/blogs/machine-learning/comprehensive-observability-for-amazon-sagemaker-ai-llm-inference-from-gpu-utilization-to-llm-quality/)

  • AWS Shield Advanced agora oferece logs de fluxo de ataques DDoS

    Visibilidade em nível de pacote durante ataques DDoS

    A AWS anunciou uma novidade importante para quem utiliza o Shield Advanced: a chegada dos logs de fluxo de ataques de Negação de Serviço Distribuído (DDoS). Com esse recurso, equipes de segurança passam a ter visibilidade em nível de pacote sobre o tráfego que atinge os recursos protegidos pelo Shield Advanced durante um ataque ativo — algo que antes não estava disponível de forma nativa na plataforma.

    O que é capturado nos logs

    Os logs de fluxo de ataques DDoS registram detalhes críticos em nível de pacote. Entre as informações capturadas estão:

    • Endereços IP de origem e destino
    • Portas de origem e destino
    • Protocolos utilizados
    • Contagem de pacotes e bytes
    • País de origem do tráfego
    • Outros dados relevantes para análise

    Esses dados são publicados automaticamente no destino escolhido pela equipe em intervalos de 5 minutos enquanto o ataque estiver ativo.

    Onde os logs são armazenados

    A AWS permite que os dados sejam entregues em três destinos diferentes, conforme a preferência e a arquitetura de cada organização:

    • Amazon S3 — para armazenamento de longo prazo e análise posterior
    • Amazon CloudWatch Logs — para monitoramento e alertas em tempo real
    • Amazon Data Firehose — para ingestão e encaminhamento a outros sistemas de análise

    Após a publicação, os dados podem ser consultados com as ferramentas de análise que a equipe já utiliza, o que facilita bastante a integração com fluxos de trabalho existentes.

    Para que serve na prática

    A funcionalidade foi pensada para atender três grandes necessidades de segurança:

    • Investigação pós-incidente: entender exatamente o que aconteceu durante um ataque, com dados precisos em nível de pacote
    • Inteligência de ameaças: identificar padrões, origens e comportamentos recorrentes em ataques DDoS
    • Conformidade e auditoria: manter registros detalhados para fins regulatórios e de compliance

    Como habilitar

    Para utilizar os logs de fluxo de ataques DDoS, é necessário que os recursos estejam protegidos pelo Shield Advanced e que a entrega de logs esteja configurada para um dos destinos suportados. O recurso está disponível em todas as regiões onde o AWS Shield Advanced opera.

    Para mais detalhes sobre como configurar e utilizar os logs de fluxo de ataques DDoS, a AWS disponibiliza a documentação oficial do AWS Shield Advanced.

    Fonte

    AWS Shield Advanced introduces DDoS attack flow logs (https://aws.amazon.com/about-aws/whats-new/2026/05/aws-shield-ddos/)

  • Como criar um portal personalizado com o Amazon SageMaker AI MLflow Apps incorporado

    O problema de acesso ao MLflow em equipes que crescem

    Conforme as equipes de Machine Learning (ML) crescem dentro das organizações, gerenciar o acesso ao Amazon SageMaker AI MLflow Apps começa a se tornar um gargalo operacional. Distribuir URLs pré-assinadas não escala para times com dezenas de cientistas de dados, e conceder acesso individual ao Console de Gerenciamento da AWS gera sobrecarga administrativa considerável.

    Para equipes que já utilizam portais internos integrados com Autenticação Única (SSO), o ideal é que o rastreamento de experimentos do MLflow esteja acessível pelo mesmo ambiente, com uma URL fixa e navegável. A AWS publicou um guia que mostra exatamente como construir essa solução: um portal customizado com o MLflow Apps incorporado, sem URLs pré-assinadas e sem precisar abrir o console AWS para cada usuário.

    Visão geral da solução

    A arquitetura proposta combina quatro componentes principais que trabalham em conjunto para oferecer acesso autenticado ao MLflow diretamente pelo navegador.

    Application Load Balancer (ALB)

    O Application Load Balancer funciona como o ponto de entrada único para os usuários. Ele gerencia o encerramento HTTPS, roteia o tráfego para os alvos corretos no backend e oferece uma URL estável que pode se integrar à infraestrutura de DNS e SSO já existente na organização. Ele distribui o tráfego tanto para o painel React quanto para as chamadas de API do MLflow. Para ambientes de produção, a recomendação é adicionar HTTPS com certificado SSL/TLS via AWS Certificate Manager (ACM).

    Front-end React

    O front-end em React oferece um ponto de entrada com a identidade visual da organização. Ele incorpora a interface do MLflow dentro de um iframe e serve como ponto de integração para ferramentas e branding internos. Os arquivos estáticos são entregues pelo proxy Flask a partir do caminho /app.

    Serviço de proxy reverso Flask

    O proxy Flask fica entre o front-end e o backend do MLflow, cuidando da autenticação para que os usuários nunca precisem lidar com credenciais AWS diretamente. A aplicação Python com Flask é responsável por:

    • Interceptar requisições de entrada, incluindo caminhos de interface e chamadas à API REST;
    • Assinar cada requisição com AWS Signature Version 4 (SigV4) usando credenciais temporárias obtidas ao assumir uma role dedicada do AWS Identity and Access Management (IAM);
    • Encaminhar as requisições assinadas para o endpoint do Amazon SageMaker AI MLflow Apps;
    • Reescrever URLs absolutas do MLflow para caminhos relativos e remover cabeçalhos X-Frame-Options para que a interface renderize corretamente dentro do iframe.

    Amazon SageMaker AI MLflow Apps

    O SageMaker AI gerencia o MLflow Apps de forma totalmente gerenciada — sem servidores para provisionar ou atualizar. Ele oferece rastreamento de experimentos com execuções, métricas, parâmetros e artefatos, além de um registro de modelos para versionamento e gerenciamento de ciclo de vida.

    Fluxo de requisições na arquitetura

    O fluxo completo de uma requisição do usuário funciona assim:

    • O usuário acessa a URL do ALB no navegador, diretamente ou por um link no portal interno da organização;
    • O ALB roteia a requisição para a instância do Amazon Elastic Compute Cloud (Amazon EC2) que executa o proxy Flask;
    • O proxy Flask serve o painel React (a partir do caminho /app);
    • O app React renderiza a página e carrega a interface do MLflow dentro de um iframe apontando para /mlflow-ui/;
    • A partir desse ponto, cada requisição do iframe passa pelo proxy Flask — seja para carregar páginas da interface ou para chamar endpoints como /api/2.0/mlflow/experiments/search;
    • O proxy assina cada requisição com SigV4 usando credenciais temporárias e a encaminha para o endpoint serverless do MLflow App;
    • Quando o MLflow App responde, o proxy reescreve URLs absolutas para caminhos relativos e remove os cabeçalhos X-Frame-Options antes de devolver a resposta ao navegador.

    O resultado é que os usuários veem a interface completa do MLflow — experimentos, execuções, métricas e registro de modelos — diretamente no navegador, com toda a autenticação AWS sendo tratada nos bastidores.

    Pré-requisitos para o deploy

    Antes de iniciar o processo de implantação, é necessário ter em mãos:

    • Uma conta AWS;
    • AWS Command Line Interface (AWS CLI) v2.34.5 ou posterior (necessário para os comandos create-mlflow-app, list-mlflow-apps e describe-mlflow-app);
    • Python 3.13 ou posterior instalado localmente;
    • AWS CDK v2 (aws-cdk-lib 2.243.0 ou posterior) instalado e com bootstrap feito na conta e região alvo. Para instruções, consulte Primeiros passos com o AWS CDK;
    • Node.js 18.x ou posterior instalado localmente para o deploy com CDK;
    • Permissões IAM suficientes para criar VPCs, instâncias EC2, ALBs, domínios SageMaker AI, MLflow Apps e roles IAM;
    • Uma AMI Ubuntu 24.04 LTS disponível na região AWS alvo (resolvida automaticamente via SSM Parameter Store).

    Em relação aos custos, a solução cria recursos AWS que podem gerar cobranças — principalmente instâncias EC2, Application Load Balancer, recursos do SageMaker AI e armazenamento no Amazon Simple Storage Service (Amazon S3). Use a Calculadora de Preços da AWS para estimar os valores antes do deploy.

    Realizando o deploy da solução

    Passo 1: Clonar o repositório e implantar a infraestrutura

    Faça o download do código da solução e instale as dependências:

    # Clone the repository
    git clone https://github.com/aws-samples/sample-sagemaker-mlflow-embedded-ui.git
    
    # Navigate to project directory and install dependencies
    cd sample-sagemaker-mlflow-embedded-ui
    npm install

    Defina o ID da conta AWS e a região como variáveis de ambiente:

    export CDK_DEFAULT_ACCOUNT=<your-account-id>
    export CDK_DEFAULT_REGION=<your-region>
    export AWS_DEFAULT_REGION=<your-region>
    export AWS_REGION=<your-region>

    Se você já fez deploy em uma região diferente anteriormente, delete o arquivo de contexto em cache:

    rm -f cdk.context.json

    Faça o bootstrap do ambiente para o AWS CDK (pule este passo se a conta e região já estiverem com bootstrap feito):

    cdk bootstrap aws://<ACCOUNT_ID>/<REGION>

    Execute o script de deploy para implantar as stacks:

    bash deploy.sh

    Anote o nome DNS do ALB e o ID da instância EC2 gerados na saída do deploy — você precisará deles nos próximos passos.

    Passo 2: Configurar o serviço de proxy Flask na instância EC2

    Acesse a instância EC2 usando o ID obtido no Passo 1, via AWS Systems Manager Session Manager. Consulte o guia de conexão do Session Manager para instruções detalhadas.

    Instale o Python 3.13 e as dependências:

    # Switch to root user
    sudo su -
    cd /root
    
    # Install Python and dependencies
    chmod +x install_python13.sh
    ./install_python13.sh

    Instale e inicie o serviço de proxy MLflow:

    chmod +x setup_mlflow_proxy_app.sh
    ./setup_mlflow_proxy_app.sh

    Verifique o status do serviço de proxy Flask:

    systemctl status mlflowproxy

    Se o serviço não estiver em execução, verifique os logs com:

    journalctl -u mlflowproxy

    Passo 3: Validar o deploy

    Para recuperar a URL do ALB via AWS CloudFormation:

    aws cloudformation describe-stacks --stack-name sagemaker-infra-flaskapp --query 'Stacks[0].Outputs[?OutputKey==`ALBUrl`].OutputValue' --output text

    Acesse a URL do ALB no navegador em http://<ALB-URL>/. Você será redirecionado automaticamente para /app, onde o painel React exibirá a interface do MLflow incorporada em um iframe.

    Verifique o endpoint de saúde do serviço:

    curl http://<ALB-URL>/health

    A resposta esperada é {"status": "healthy"}.

    Para testar o rastreamento de experimentos via API REST do MLflow, crie um experimento e anote o ID retornado na resposta:

    curl -X POST http://<ALB-URL>/api/2.0/mlflow/experiments/create \
      -H "Content-Type: application/json" \
      -d '{"name": "my-first-experiment"}'

    Crie uma execução (run) e registre métricas e parâmetros:

    curl -X POST http://<ALB-URL>/api/2.0/mlflow/runs/create \
      -H "Content-Type: application/json" \
      -d '{"experiment_id": "<ID>", "run_name": "training-run-1"}'
    
    curl -X POST http://<ALB-URL>/api/2.0/mlflow/runs/log-parameter \
      -H "Content-Type: application/json" \
      -d '{"run_id": "<RUN_ID>", "key": "learning_rate", "value": "0.01"}'
    
    curl -X POST http://<ALB-URL>/api/2.0/mlflow/runs/log-metric \
      -H "Content-Type: application/json" \
      -d '{"run_id": "<RUN_ID>", "key": "accuracy", "value": 0.95, "timestamp": 1700000000000, "step": 1}'

    Atualize o painel React em http://<ALB-URL>/app para visualizar o experimento, as execuções, as métricas e os parâmetros que acabaram de ser criados.

    Limpeza dos recursos

    Para evitar cobranças contínuas e remover os recursos criados pela solução, execute o script de limpeza a partir da raiz do projeto:

    bash cleanup.sh

    O script destrói os recursos na ordem inversa de dependência: primeiro a stack do app Flask, depois deleta o MLflow App serverless via AWS CLI e aguarda a conclusão da exclusão. Em seguida, remove os recursos MLflow, o domínio SageMaker e as stacks de rede. A stack de rede inclui um recurso customizado baseado em AWS Lambda que limpa automaticamente sistemas de arquivos Amazon Elastic File System (Amazon EFS) criados pelo SageMaker AI, interfaces de rede órfãs e grupos de segurança antes de deletar a VPC.

    Limpeza manual: o bucket Amazon S3 de artefatos do MLflow tem uma política de remoção RETAIN e precisa ser deletado manualmente, caso não seja mais necessário. Consulte como deletar um bucket de uso geral no Guia do Usuário do Amazon S3.

    Detalhes das stacks CDK

    A solução implanta quatro stacks CDK, cada uma responsável por uma camada distinta da arquitetura:

    • Stack de rede: cria a VPC e os componentes de rede associados, incluindo sub-redes públicas e privadas, tabelas de rotas e grupos de segurança;
    • Stack do domínio SageMaker AI: configura o domínio Amazon SageMaker AI, que serve como contêiner organizacional para os recursos SageMaker e fornece o contexto de identidade e acesso necessário para o MLflow App;
    • Stack do SageMaker MLflow: implanta o MLflow App serverless dentro do domínio SageMaker AI, armazenando experimentos, execuções, métricas e dados do registro de modelos;
    • Stack da aplicação Flask: implanta o serviço de proxy reverso Flask em uma instância EC2 atrás de um ALB, gerenciando a autenticação SigV4 e servindo o portal front-end React.

    Próximos passos recomendados

    Após o deploy do portal, a AWS sugere as seguintes extensões para ambientes de produção:

    Conclusão

    A solução descrita pela AWS mostra como construir um painel React com a interface do Amazon SageMaker AI MLflow Apps incorporada via iframe, sustentado por um proxy Flask que cuida da autenticação SigV4. O resultado é uma URL persistente e navegável para o rastreamento de experimentos MLflow, sem necessidade de URLs pré-assinadas, com integração direta a portais internos protegidos por SSO e toda a infraestrutura implantada como código com provisionamento e limpeza automatizados.

    Para começar, clone o repositório de exemplo e implante a stack na sua conta AWS.

    Fonte

    Build a custom portal with embedded Amazon SageMaker AI MLflow Apps (https://aws.amazon.com/blogs/machine-learning/build-a-custom-portal-with-embedded-amazon-sagemaker-ai-mlflow-apps/)

  • Filtragem por Categoria de URL e Domínio no AWS Network Firewall: simplifique o gerenciamento de políticas

    O problema que esse recurso resolve

    Manter listas de domínios bloqueados e permitidos é um trabalho sem fim. Novos sites e serviços surgem todos os dias, e qualquer lacuna na atualização manual dessas listas representa uma brecha de segurança. O desafio se intensifica quando o assunto é controlar o acesso a categorias em rápida evolução — como serviços de Inteligência Artificial (IA), onde novas ferramentas aparecem com frequência.

    Para endereçar esse problema, a AWS expandiu as capacidades do AWS Network Firewall com suporte a filtragem por categoria de URL e domínio. Em vez de gerenciar domínios individualmente, as equipes de segurança passam a trabalhar com categorias predefinidas e mantidas automaticamente pela própria AWS. Quando um novo domínio é registrado e se enquadra em uma categoria, ele já entra automaticamente no escopo das regras — sem nenhuma intervenção manual.

    Como funciona a filtragem por categoria

    O AWS Network Firewall é um serviço gerenciado de firewall de rede com estado (stateful) e detecção e prevenção de intrusões para controle granular do tráfego da sua Nuvem Privada Virtual (VPC). Com a filtragem por categoria, você escolhe de uma lista de categorias gerenciadas pela AWS — como Redes Sociais, Jogos de Azar ou Inteligência Artificial e Aprendizado de Máquina — e aplica políticas de acesso a elas de forma centralizada.

    O serviço oferece dois modos de filtragem por categoria:

    • Domain category (categoria de domínio): filtra pelo nome do domínio usando o campo Indicação de Nome do Servidor (SNI) do TLS, sem necessidade de descriptografia.
    • URL category (categoria de URL): filtra pelo caminho completo da URL, o que exige inspeção TLS para tráfego HTTPS. Para configurar esse modo, consulte a documentação sobre criação de configuração de inspeção TLS no Network Firewall.

    O foco deste guia é a filtragem por categoria de domínio, por ser mais direta de configurar.

    Pré-requisitos

    Antes de começar, é necessário ter um deployment do Network Firewall já em funcionamento para filtrar o tráfego de saída da sua Amazon VPC. Caso ainda não use o serviço, a AWS disponibiliza um guia de introdução ao AWS Network Firewall.

    Outro ponto importante é configurar corretamente a variável $HOME_NET no nível da política do firewall. As regras usam essa variável para delimitar o escopo do tráfego à sua rede interna. A recomendação da AWS é definir $HOME_NET com os intervalos de endereços IP privados RFC 1918: 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16. O Network Firewall mapeia automaticamente a variável $EXTERNAL_NET como o inverso de $HOME_NET, então configurar uma resolve as duas.

    Criando uma regra de categoria pelo console

    Para começar rapidamente, é possível usar o construtor de regras do Console de Gerenciamento da AWS. O exemplo abaixo cria uma regra de alerta para a categoria de Inteligência Artificial e Aprendizado de Máquina:

    1. Acesse o console do Amazon VPC, navegue até Network Firewall > Rule groups e clique em Create rule group.
    2. Selecione Stateful rule group, formato Standard stateful rules e ordem de avaliação Strict order.
    3. Defina o nome como Domain-Category-Rules, a descrição como Domain Category Rules e a capacidade como 50.
    4. No editor de regras, selecione o botão Category Matching e escolha Match all selected categories.
    5. Em AWS category type, selecione Domain Category. Em Categories, escolha Artificial Intelligence and Machine Learning.
    6. Defina o protocolo como TLS, a origem como Custom com o valor $HOME_NET, o destino como Any e a ação como Alert.
    7. Clique em Add rule e, em seguida, em Create rule group.

    Essa regra gera uma entrada de log de alerta sempre que uma conexão corresponder a um domínio da categoria de IA e ML. Ela não bloqueia o tráfego — para isso, basta alterar a ação para Drop ou Reject.

    Criando a mesma regra com strings Suricata

    O construtor de regras do console é prático para começar, mas a AWS recomenda o uso de strings de regras compatíveis com Suricata em ambientes de produção. As regras Suricata oferecem controle total sobre as opções de regra, são fáceis de copiar, editar, compartilhar e fazer backup, e suportam a maioria das capacidades do motor Suricata. Para mais detalhes, consulte as limitações e ressalvas para regras stateful no AWS Network Firewall.

    Para criar o mesmo grupo de regras usando Suricata:

    1. Acesse Network Firewall > Network Firewall rule groups e clique em Create rule group.
    2. Selecione Stateful rule group, formato Suricata compatible rule string e ordem Strict order.
    3. Defina o nome como Suricata-Domain-Category-Rules, a descrição como Suricata Domain Category Rules e a capacidade como 50.
    4. Deixe as seções de variáveis de regra e referências de conjunto de IPs vazias — a variável $HOME_NET é herdada da política do firewall.
    5. Cole a seguinte regra no editor:
    alert tls $HOME_NET any -> $EXTERNAL_NET any (msg:"Artificial Intelligence and Machine Learning Category"; aws_domain_category:Artificial Intelligence and Machine Learning; sid:1000001;)

    A tabela abaixo explica cada componente dessa regra:

    • alert: ação — gera uma entrada de alerta no log quando a regra corresponder. Outras ações possíveis: pass, drop e reject.
    • tls: protocolo — inspeciona tráfego TLS, correspondendo ao campo SNI no TLS Client Hello.
    • $HOME_NET any -> $EXTERNAL_NET any: origem e destino — corresponde ao tráfego de qualquer IP interno para qualquer IP externo, em qualquer porta.
    • msg:"...": mensagem gravada no log de alerta quando a regra é acionada.
    • aws_domain_category:...: categoria de domínio gerenciada pela AWS a ser verificada. O firewall consulta o banco de dados de categorias e corresponde se o domínio de destino pertencer à categoria.
    • sid:1000001: identificador único da assinatura. Cada regra em um grupo deve ter um SID único.

    Após criar o grupo de regras, retorne à política do firewall e associe-o em Stateful rule groups. A recomendação é sempre associar novos grupos de regras primeiro em um ambiente de desenvolvimento ou teste antes de levar para produção.

    Gerenciando exceções para serviços aprovados

    É possível criar exceções para manter sites críticos para o negócio acessíveis. Por exemplo, para permitir o acesso ao OpenAI enquanto bloqueia todo o restante do tráfego de IA e ML, basta substituir a regra básica pelo seguinte conjunto de regras no grupo Suricata-Domain-Category-Rules:

    # Allow OpenAI (TLS)
    pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".openai.com"; nocase; endswith; flow:to_server; alert; msg:"Allow OpenAI over TLS"; sid:1000001;)
    
    # Allow OpenAI (HTTP)
    pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".openai.com"; nocase; endswith; flow:to_server; alert; msg:"Allow OpenAI over HTTP"; sid:1000002;)
    
    # Block all other AI/ML category traffic (TLS)
    reject tls $HOME_NET any -> $EXTERNAL_NET any (msg:"Block non-approved AI/ML sites over TLS"; aws_domain_category:Artificial Intelligence and Machine Learning; flow:to_server; alert; sid:1000003;)
    
    # Block all other AI/ML category traffic (HTTP)
    reject http $HOME_NET any -> $EXTERNAL_NET any (msg:"Block non-approved AI/ML sites over HTTP"; aws_url_category:Artificial Intelligence and Machine Learning; flow:to_server; alert; sid:1000004;)

    Com a avaliação em ordem estrita (strict order), o firewall processa as regras na sequência em que foram definidas. As regras de pass para o OpenAI aparecem primeiro, então o tráfego correspondente é permitido antes que as regras de bloqueio da categoria mais ampla sejam avaliadas.

    Para verificar se as regras estão funcionando como esperado, é possível testar a partir de um host que roteia o tráfego pelo firewall. Os comandos abaixo suprimem o corpo da resposta e verificam o código de saída da requisição curl. Se o curl completar uma conexão TCP, exibe CONNECTION ALLOWED; se o firewall resetar a conexão, exibe CONNECTION BLOCKED:

    curl -s -o /dev/null https://openai.com && echo "CONNECTION ALLOWED" || echo "CONNECTION BLOCKED"

    Resultado esperado: CONNECTION ALLOWED

    curl -s -o /dev/null https://chat.mistral.ai && echo "CONNECTION ALLOWED" || echo "CONNECTION BLOCKED"

    Resultado esperado: CONNECTION BLOCKED

    Monitorando o uso por categoria

    Quando uma regra de categoria de domínio é adicionada à política do firewall, o Network Firewall realiza uma consulta de categoria para cada conexão que corresponde ao protocolo e às especificações de IP da regra. As regras deste guia correspondem a $HOME_NET any -> $EXTERNAL_NET any, o que significa que o firewall consulta a categoria de todo o tráfego de saída originado da rede interna.

    Cada entrada de log inclui um campo aws_category com um array JSON contendo todas as categorias às quais o domínio de destino pertence. Um único domínio pode pertencer a múltiplas categorias. Por exemplo, uma requisição para chat.mistral.ai gera uma entrada com "aws_category": "[\"Social Networking\",\"Artificial Intelligence and Machine Learning\"]".

    Os logs do firewall podem ser acessados pelo Amazon CloudWatch, pelo Amazon S3 e pelo Amazon Data Firehose.

    Abaixo está um exemplo de entrada de log para uma requisição bloqueada ao chat.mistral.ai:

    {
      "firewall_name": "egress-and-east-west-firewall",
      "availability_zone": "us-east-1a",
      "event_timestamp": "1775599146",
      "event": {
        "aws_category": "[\"Social Networking\",\"Artificial Intelligence and Machine Learning\"]",
        "tx_id": 0,
        "app_proto": "tls",
        "src_ip": "10.1.1.100",
        "src_port": 58664,
        "event_type": "alert",
        "alert": {
          "severity": 3,
          "signature_id": 1000003,
          "rev": 1,
          "signature": "Block non-approved AI/ML sites over TLS",
          "action": "blocked",
          "category": ""
        },
        "flow_id": 763153567844057,
        "dest_ip": "172.66.2.203",
        "proto": "TCP",
        "verdict": {
          "action": "drop",
          "reject-target": "to_client",
          "reject": [
            "tcp-reset"
          ]
        },
        "tls": {
          "sni": "chat.mistral.ai",
          "version": "UNDETERMINED"
        },
        "dest_port": 443,
        "pkt_src": "geneve encapsulation",
        "timestamp": "2026-04-07T21:59:06.906761+0000",
        "direction": "to_server"
      }
    }

    O campo aws_category mostra que o domínio pertence às categorias “Social Networking” e “Artificial Intelligence and Machine Learning”. O campo verdict confirma que a conexão foi descartada com um reset TCP enviado ao cliente.

    Consultando logs com o CloudWatch Logs Insights

    Se os logs do firewall forem enviados para o Amazon CloudWatch Logs, é possível usar o CloudWatch Logs Insights para analisar padrões de tráfego por categoria. Como uma única conexão pode gerar múltiplas entradas de log, as queries abaixo deduplicam por flow_id para contar cada conexão apenas uma vez. Atenção: as consultas no CloudWatch Logs Insights geram cobranças com base na quantidade de dados varridos — consulte a página de preços do Amazon CloudWatch para detalhes.

    Categorias mais acessadas

    fields @timestamp, event.aws_category, event.flow_id
    | filter ispresent(event.aws_category) and event.aws_category != "[]"
    | stats latest(event.aws_category) as categories by event.flow_id
    | stats count(*) as connections by categories
    | sort connections desc
    | limit 20

    Categorias menos acessadas

    fields @timestamp, event.aws_category, event.flow_id
    | filter ispresent(event.aws_category) and event.aws_category != "[]"
    | stats latest(event.aws_category) as categories by event.flow_id
    | stats count(*) as connections by categories
    | sort connections asc
    | limit 20

    Categorias mais acessadas — apenas tráfego permitido

    fields @timestamp, event.aws_category, event.flow_id, event.verdict.action
    | filter ispresent(event.aws_category) and event.aws_category != "[]"
    | stats latest(event.aws_category) as categories, latest(event.verdict.action) as verdict by event.flow_id
    | filter verdict = "alert"
    | stats count(*) as connections by categories
    | sort connections desc
    | limit 20

    Categorias mais acessadas — apenas tráfego bloqueado

    fields @timestamp, event.aws_category, event.flow_id, event.verdict.action
    | filter ispresent(event.aws_category) and event.aws_category != "[]"
    | stats latest(event.aws_category) as categories, latest(event.verdict.action) as verdict by event.flow_id
    | filter verdict = "drop"
    | stats count(*) as connections by categories
    | sort connections desc
    | limit 20

    Detalhamento por categoria específica

    Esta query usa um filtro like para encontrar todo o tráfego onde o campo aws_category contém uma categoria específica, independentemente de quais outras categorias o domínio também pertença. Substitua o nome da categoria no filtro like para investigar qualquer outra categoria:

    fields @timestamp, event.tls.sni, event.aws_category, event.verdict.action, event.flow_id
    | filter ispresent(event.aws_category) and event.aws_category like /Artificial Intelligence and Machine Learning/
    | stats latest(event.tls.sni) as sni, latest(event.verdict.action) as verdict by event.flow_id
    | stats count(*) as connections by sni, verdict
    | sort connections desc
    | limit 20

    Consumo de banda por categoria

    Esta query mostra quais combinações de categorias consomem mais banda de saída. Ela correlaciona os logs de fluxo (que contêm contagens de bytes) com os logs de alerta (que contêm dados de categoria) usando o campo flow_id compartilhado. Para executar esta query, selecione tanto o grupo de logs de alerta quanto o de logs de fluxo no CloudWatch Logs Insights:

    fields @timestamp
    | filter ispresent(event.netflow.bytes) or ispresent(event.aws_category)
    | stats sum(event.netflow.bytes) as flowBytes, latest(event.aws_category) as categories by event.flow_id
    | filter ispresent(categories) and categories != "[]"
    | stats sum(flowBytes) as totalBytes by categories
    | sort totalBytes desc
    | limit 20

    Disponibilidade

    O recurso de filtragem por categoria de URL e domínio está disponível em todas as regiões comerciais da AWS onde o AWS Network Firewall é suportado. Para saber mais, consulte a documentação do recurso.

    Fonte

    Simplifying policy management with URL and Domain Category filtering on AWS Network Firewall (https://aws.amazon.com/blogs/security/simplifying-policy-management-with-url-and-domain-category-filtering-on-aws-network-firewall/)