Blog

  • De dados isolados a insights unificados: acesso cross-account ao Athena pelo Amazon QuickSight

    O problema dos dados em silos

    Grandes empresas raramente concentram todos os seus dados em uma única conta AWS. O cenário mais comum é justamente o oposto: uma instituição financeira, por exemplo, pode manter dados de banco de varejo em uma conta, investimentos em outra e gestão de riscos em uma terceira. Ao mesmo tempo, a área de BI (Business Intelligence) costuma operar de forma centralizada.

    Até agora, quem usava o Amazon Quick nesse tipo de ambiente tinha duas opções ruins: gerenciar múltiplas assinaturas do serviço — uma por conta de dados — ou absorver todos os custos de consulta na conta central, perdendo a visibilidade de gastos por unidade de negócio. A AWS acaba de resolver esse impasse com o lançamento do acesso cross-account ao Amazon Athena para o Amazon Quick.

    O que é o Amazon Quick e o papel do Athena

    O Amazon Quick é um serviço unificado de inteligência com IA que reúne dados estruturados e conteúdo corporativo não estruturado — documentos, e-mails, bases de conhecimento — em um único ambiente onde qualquer pessoa pode explorar, analisar e agir sobre as informações. Ele conta com mais de 40 integrações com aplicações e inclui o Amazon QuickSight, sua camada de BI com dashboards interativos, consultas em linguagem natural, relatórios e insights com ML (Machine Learning).

    O Amazon Athena, por sua vez, é um serviço de consulta interativa e serverless que analisa dados diretamente no Amazon Simple Storage Service (Amazon S3) usando SQL padrão, sem necessidade de gerenciar infraestrutura ou carregar dados previamente. Basta apontar o Athena para os dados no S3, definir o esquema via AWS Glue Data Catalog e começar a consultar.

    O novo recurso: acesso cross-account ao Athena

    Com o novo recurso anunciado pela AWS, é possível consultar dados do Athena em outras contas AWS diretamente a partir de uma implantação centralizada do Amazon Quick, usando encadeamento de funções IAM (Identity and Access Management). Os custos de consulta são cobrados na conta onde os dados residem — não na conta central.

    O mecanismo central é o role chaining (encadeamento de funções): o Amazon Quick, operando na conta central, assume uma primeira função IAM (Função A), que por sua vez assume uma segunda função IAM (Função B) na conta consumidora. É a Função B que executa as consultas no Athena e no AWS Glue Data Catalog, sem que credenciais de longo prazo sejam compartilhadas entre contas.

    Definições importantes

    • Conta Central do Quick (Source Account): conta AWS onde o Amazon Quick está implantado.
    • Conta Consumidora (Consumer Account): conta AWS onde residem os dados do Athena (bancos de dados, tabelas, dados no S3).
    • RunAsRole (Função A): função IAM na conta central que o Quick assume primeiro; não tem permissões de dados, apenas permissão para encadear na Função B.
    • Consumer Account Role (Função B): função IAM em cada conta consumidora que concede acesso ao Athena, AWS Glue e S3; confia na Função A.
    • Role Chaining: processo de credenciais em dois passos — o Quick assume a Função A, depois usa essas credenciais para assumir a Função B.
    • ExternalId: condição de segurança (definida como o ARN do DataSource) usada nas trust policies para prevenir ataques do tipo confused deputy.
    • Scope-Down Policy: política IAM inline aplicada em tempo de execução para restringir as credenciais encadeadas a assumir apenas a função consumidora específica.
    • Athena Workgroup: ambiente de execução do Athena na conta consumidora onde as consultas são executadas e os custos são rastreados.

    Arquitetura e padrões de implantação

    A AWS descreve três padrões arquiteturais que evoluem conforme a maturidade da organização.

    Padrão 1: Configuração básica com duas contas

    A configuração mais simples conecta uma conta central do Quick a uma única conta consumidora. É o ponto de partida ideal para validar o encadeamento de funções de ponta a ponta. A Função A, na conta central, encadeia na Função B via sts:AssumeRole, e o Athena executa a consulta com as credenciais da Função B.

    Padrão 2: Hub and Spoke

    A maioria das empresas centraliza o Quick em uma única conta (o hub) enquanto os dados ficam distribuídos por múltiplas contas de unidades de negócio (os spokes). Nesse modelo, a política de permissões da Função A lista os ARNs de múltiplas funções consumidoras, e uma fonte de dados separada é criada no Quick para cada conta.

    A grande vantagem desse padrão é a independência entre os spokes. Adicionar uma nova unidade de negócio exige apenas criar uma nova Função B na conta dessa unidade e registrar uma nova fonte de dados no Quick — sem alterar os spokes existentes. Cada spoke controla suas próprias permissões, definindo quais tabelas e prefixos S3 ficam visíveis para a conta central de BI. Os custos de consulta são atribuídos automaticamente a cada conta consumidora.

    Para escalar além de alguns poucos spokes, a AWS recomenda usar templates de AWS CloudFormation ou CDK para a configuração do lado consumidor, permitindo que equipes de unidades de negócio façam o onboarding de forma autônoma.

    Padrão 3: Data Mesh

    Em uma arquitetura de data mesh, produtores e consumidores são contas distintas. Uma conta produtora gerencia seus dados brutos e os disponibiliza para contas consumidoras — por exemplo, usando AWS Lake Formation com AWS RAM (Resource Access Manager) para compartilhar tabelas entre contas. A conta consumidora, contendo a Função B, o AWS Glue Data Catalog e o Athena workgroup, é o ponto ao qual o Amazon Quick se conecta via encadeamento de funções.

    Nesse modelo, um autor de BI no Quick pode consultar múltiplas contas consumidoras em um único dashboard, com custos atribuídos por conta consumidora. Em escala enterprise, uma única implantação do Amazon Quick pode se conectar a centenas de contas consumidoras.

    Como escolher o padrão certo

    A AWS recomenda começar com a configuração básica de duas contas para validar o encadeamento. A maioria das empresas evoluirá para o hub-and-spoke ao integrar novas unidades de negócio, pela simplicidade na atribuição de custos e na gestão de trust policies. Organizações com fortes limites de propriedade de dados e equipes de domínio dedicadas naturalmente migrarão para o data mesh.

    Passo a passo: configuração técnica

    Pré-requisitos

    • Amazon Quick Enterprise Edition ativo na conta central.
    • Acesso administrativo IAM em ambas as contas.
    • AWS CLI instalada e configurada com credenciais para ambas as contas, ou acesso ao Console de Gerenciamento AWS.
    • Familiaridade com conceitos IAM: trust policies, permission policies e assunção de funções (sts:AssumeRole).
    • Athena workgroup configurado na conta consumidora.
    • Bucket S3 na conta consumidora para resultados de consultas do Athena (geralmente com prefixo aws-athena-query-results-*).

    Etapa 1: Criar a Função A (RunAsRole) na conta central

    A Função A vive na conta central. O Amazon Quick a assume quando um usuário inicia uma consulta. Ela não tem permissões de dados — sua única função é encadear na conta consumidora. São necessários dois elementos: uma trust policy que permite ao serviço Quick assumi-la, e uma permission policy que permite assumir a Função B.

    Crie o arquivo role-a-trust-policy.json:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "quicksight.amazonaws.com"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringLike": {
              "aws:SourceAccount": "<Quick-account-id>",
              "aws:SourceArn": "arn:aws:quicksight:*:<Quick-account-id>:datasource/*"
            }
          }
        }
      ]
    }

    Crie a função via AWS CLI:

    aws iam create-role \
      --role-name qs-athena-cross-account-role-a \
      --assume-role-policy-document file://role-a-trust-policy.json" \
      --description "Quick Athena Cross Account - RunAsRole"

    Crie o arquivo role-a-permission-policy.json:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "sts:AssumeRole",
          "Resource": "arn:aws:iam::<consumer-account-id>:role/<consumer-role-name>",
          "Condition": {
            "StringLike": {
              "sts:ExternalId": "arn:aws:quicksight:*:<Quick-account-id>:datasource/*"
            }
          }
        }
      ]
    }

    Anexe a política inline via AWS CLI:

    aws iam put-role-policy \
      --role-name qs-athena-cross-account-role-a \
      --policy-name AssumeConsumerRolePolicy \
      --policy-document file://role-a-permission-policy.json

    O principal IAM que criar a fonte de dados no Quick também precisa da permissão iam:PassRole sobre a Função A.

    Etapa 2: Criar a Função B na conta consumidora

    A Função B vive na conta consumidora, onde estão as tabelas do Athena, o AWS Glue Data Catalog e os dados no S3. A Função A a assume para executar as consultas.

    Crie o arquivo role-b-trust-policy.json:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<Quick-account-id>:root"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringLike": {
              "sts:ExternalId": "arn:aws:quicksight:*:<Quick-account-id>:datasource/*"
            }
          }
        }
      ]
    }

    Crie a função via AWS CLI:

    aws iam create-role \
      --role-name qs-athena-consumer-role \
      --assume-role-policy-document file://role-b-trust-policy.json \
      --description "Quick Athena Cross Account - Consumer Account Role"

    Crie o arquivo role-b-permission-policy.json com permissões para Athena, AWS Glue e S3. A AWS recomenda escopo para recursos específicos, não wildcards genéricos:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "athena:BatchGetQueryExecution",
            "athena:CancelQueryExecution",
            "athena:GetCatalogs",
            "athena:GetExecutionEngine",
            "athena:GetExecutionEngines",
            "athena:GetNamespace",
            "athena:GetNamespaces",
            "athena:GetQueryExecution",
            "athena:GetQueryExecutions",
            "athena:GetQueryResults",
            "athena:GetQueryResultsStream",
            "athena:GetTable",
            "athena:GetTables",
            "athena:ListQueryExecutions",
            "athena:RunQuery",
            "athena:StartQueryExecution",
            "athena:StopQueryExecution",
            "athena:ListWorkGroups",
            "athena:ListEngineVersions",
            "athena:GetWorkGroup",
            "athena:GetDataCatalog",
            "athena:GetDatabase",
            "athena:GetTableMetadata",
            "athena:ListDataCatalogs",
            "athena:ListDatabases",
            "athena:ListTableMetadata"
          ],
          "Resource": [
            "arn:aws:athena:<region>:<account-id>:workgroup/<your-workgroup>",
            "arn:aws:athena:<region>:<account-id>:datacatalog/<your-catalog>"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "glue:GetCatalog",
            "glue:GetCatalogs",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetTable",
            "glue:GetTables",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition"
          ],
          "Resource": [
            "arn:aws:glue:<region>:<account-id>:catalog",
            "arn:aws:glue:<region>:<account-id>:database/<your-database>",
            "arn:aws:glue:<region>:<account-id>:table/<your-database>/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:PutObject",
            "s3:AbortMultipartUpload",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts"
          ],
          "Resource": [
            "arn:aws:s3:::<your-data-bucket>",
            "arn:aws:s3:::<your-data-bucket>/*",
            "arn:aws:s3:::aws-athena-query-results-*",
            "arn:aws:s3:::aws-athena-query-results-*/*"
          ]
        }
      ]
    }

    Anexe a política inline via AWS CLI:

    aws iam put-role-policy \
      --role-name qs-athena-consumer-role \
      --policy-name AthenaGlueS3Access \
      --policy-document file://role-b-permission-policy.json

    Etapa 3: Criar a fonte de dados cross-account no Quick

    Com as funções configuradas, o próximo passo é criar a fonte de dados no Amazon Quick, na conta central. Isso pode ser feito via AWS CLI:

    aws quicksight create-data-source \
      --aws-account-id <Quick-account-id> \
      --data-source-id "athena-cross-account" \
      --name "Athena Cross Account - Consumer Data" \
      --type ATHENA \
      --data-source-parameters '{
        "AthenaParameters": {
          "WorkGroup": "primary",
          "RoleArn": "arn:aws:iam::<Quick-account-id>:role/qs-athena-cross-account-role-a",
          "ConsumerAccountRoleArn": "arn:aws:iam::<consumer-account-id>:role/qs-athena-consumer-role"
        }
      }' \
      --permissions '[{
        "Principal": "arn:aws:quicksight:<region>:<Quick-account-id>:user/default/<your-user>",
        "Actions": [
          "quicksight:DescribeDataSource",
          "quicksight:DescribeDataSourcePermissions",
          "quicksight:PassDataSource",
          "quicksight:UpdateDataSource",
          "quicksight:DeleteDataSource",
          "quicksight:UpdateDataSourcePermissions"
        ]
      }]' \
      --region <region>

    Ou via Python (Boto3):

    import boto3
    
    client = boto3.client('quicksight', region_name='us-east-1')
    
    response = client.create_data_source(
        AwsAccountId='<Quick-account-id>',
        DataSourceId='athena-cross-account',
        Name='Athena Cross Account - Consumer Data',
        Type='ATHENA',
        DataSourceParameters={
            'AthenaParameters': {
                'WorkGroup': 'primary',
                'RoleArn': 'arn:aws:iam::<Quick-account-id>:role/qs-athena-cross-account-role-a',
                'ConsumerAccountRoleArn': 'arn:aws:iam::<consumer-account-id>:role/qs-athena-consumer-role'
            }
        }
    )
    
    print(response['CreationStatus'])

    Para verificar se a fonte de dados foi criada com sucesso:

    aws quicksight describe-data-source \
      --aws-account-id <Quick-account-id> \
      --data-source-id "athena-cross-account" \
      --region <region> \
      --query 'DataSource.{Name:Name,Status:Status,Type:Type}'

    A saída esperada é:

    {
      "Name": "Athena Cross Account - Consumer Data",
      "Status": "CREATION_SUCCESSFUL",
      "Type": "ATHENA"
    }

    Etapa 4: Compartilhar a fonte de dados e criar datasets

    Com a fonte de dados ativa, ela pode ser compartilhada com autores do Quick usando o seguinte comando:

    aws quicksight update-data-source-permissions \
      --aws-account-id <Quick-account-id> \
      --data-source-id "athena-cross-account" \
      --grant-permissions '{
        "Principal": "arn:aws:quicksight:<region>:<Quick-account-id>:user/default/<author-user>",
        "Actions": [
          "quicksight:DescribeDataSource",
          "quicksight:DescribeDataSourcePermissions",
          "quicksight:PassDataSource"
        ]
      }' \
      --region <region>

    A partir daí, os autores podem acessar o Quick, navegar até Datasets, criar um novo dataset selecionando a fonte de dados cross-account e navegar pelos bancos de dados e tabelas AWS Glue da conta consumidora — tudo a partir da conta central, com os custos de consulta cobrados na conta consumidora.

    Conectando múltiplas contas consumidoras

    Para conectar contas consumidoras adicionais, basta repetir o processo de criação de funções para cada conta, atualizar a política de permissões da Função A para incluir o ARN da nova função consumidora, criar a Função B na nova conta com as políticas de trust e acesso a dados apropriadas, e criar uma nova fonte de dados no Quick com o novo ConsumerAccountRoleArn. Cada fonte de dados mapeia para uma conta consumidora.

    Segurança e atribuição de custos

    O modelo de segurança é construído em camadas. A condição ExternalId na trust policy da Função B previne ataques do tipo confused deputy — somente fontes de dados Quick da conta central autorizada conseguem completar o encadeamento. Além disso, o Quick aplica uma scope-down policy inline cada vez que assume a Função A, restringindo cada sessão a uma única função consumidora, mesmo quando a Função A tem permissões para múltiplas contas.

    A cadeia completa de funções é registrada no AWS CloudTrail em ambas as contas — desde o AssumeRole inicial na conta central até as consultas no Athena na conta consumidora. Isso fornece uma trilha de auditoria completa e suporta alertas sobre padrões anômalos.

    Quanto à atribuição de custos: como as consultas do Athena são executadas sob as credenciais da Função B na conta consumidora, todos os custos associados aparecem na fatura dessa conta. A conta central do Quick incorre apenas nos custos de sessão do Quick e armazenamento SPICE. Antes desse recurso, as organizações precisavam absorver todos os custos centralmente ou operar assinaturas separadas do Quick por unidade de negócio — o novo recurso elimina esse trade-off.

    O que isso significa para o futuro com IA agêntica

    À medida que capacidades de IA agêntica amadurecem, a habilidade de acessar dados onde eles residem — com governança, atribuição de custos e auditabilidade — se torna fundamental. O acesso cross-account ao Athena é um bloco de construção para esse futuro. O mesmo mecanismo de encadeamento de funções IAM pode ser estendido para agentes de IA que consultam o Athena em nome de usuários de negócio, aplicam regras de governança em tempo real e roteiam custos de computação para o proprietário dos dados — sem centralizar dados em uma única conta.

    Conclusão

    O acesso cross-account ao Athena para o Amazon Quick permite que empresas mantenham uma conta central de BI enquanto respeitam os limites de governança de dados e custos em ambientes multi-account. A abordagem de role chaining garante atribuição correta de custos, mantém a soberania de dados por unidade de negócio e se integra aos controles de segurança IAM existentes.

    Para começar, basta criar as funções IAM nas contas do Quick e consumidoras conforme descrito neste guia, e então criar a fonte de dados usando o parâmetro ConsumerAccountRoleArn. Mais detalhes estão disponíveis no Guia do Usuário do Amazon Quick.

    Fonte

    From siloed data to unified insights: Cross-account Athena Access for Amazon Quick (https://aws.amazon.com/blogs/machine-learning/from-siloed-data-to-unified-insights-cross-account-athena-access-for-amazon-quick/)

  • Roteamento regional para portais de acesso AWS: como implementar domínios personalizados no IAM Identity Center

    O problema: múltiplas URLs para um único portal

    O AWS IAM Identity Center oferece um portal de acesso web que centraliza o acesso dos colaboradores às contas AWS e aplicações corporativas. Com o lançamento da replicação multi-região do IAM Identity Center, as organizações passaram a ter instâncias do serviço em múltiplas regiões AWS — o que é ótimo para resiliência e latência, mas cria um desafio prático: cada região gera sua própria URL de acesso ao portal.

    Gerenciar uma lista crescente de URLs regionais, comunicar aos usuários qual delas usar e ainda garantir failover em caso de incidente regional é uma dor de cabeça operacional real. A AWS publicou um guia técnico que resolve exatamente isso: criar um domínio personalizado único (por exemplo, aws.minhaempresa.com) que funciona como ponto de entrada consistente, redirecionando automaticamente cada usuário para o endpoint regional mais saudável e de menor latência.

    Formatos de URL suportados pelo IAM Identity Center

    Antes de entender a solução, vale conhecer os formatos de URL disponíveis na partição padrão da AWS. O formato recomendado pela AWS é https://{idcInstanceId}.portal.{region}.app.aws — ele suporta dual-stack (IPv4 e IPv6) e é compatível com replicação multi-região. Os formatos baseados em awsapps.com não estão sempre disponíveis em regiões mais novas e não suportam as capacidades multi-região. Em regiões replicadas adicionais, o alias personalizado não é suportado e o domínio pai awsapps.com não está disponível.

    Um ponto importante: cada URL regional resolve apenas para a instância daquela região específica — não há failover automático entre regiões pelo próprio serviço. Para rotear usuários entre regiões de forma dinâmica, é necessário implementar a abordagem de domínio personalizado descrita no guia.

    A solução: uma camada de roteamento e redirecionamento

    A arquitetura proposta constrói uma camada leve de roteamento na frente dos endpoints regionais do IAM Identity Center. Os componentes envolvidos são:

    O fluxo de funcionamento é direto: quando um usuário acessa aws.minhaempresa.com, o Route 53 avalia os registros de latência e encaminha o tráfego para o ALB na região saudável de menor latência. O ALB encerra o TLS usando um certificado gerenciado pelo ACM e emite um redirecionamento 302 para a URL do portal do Identity Center naquela região. O navegador do usuário segue o redirecionamento e carrega o portal diretamente — o ALB não fica no caminho do tráfego de autenticação subsequente.

    Vale destacar: o domínio personalizado em si não aparece na barra de endereços do navegador após o redirecionamento. A solução opera fora do Identity Center — na camada de DNS e balanceador de carga.

    Três fases progressivas de implementação

    O guia é estruturado em três fases independentes, que podem ser adotadas de acordo com a maturidade e necessidade de cada organização.

    Fase 1: Redirecionamento para um único endpoint regional

    A primeira fase estabelece a infraestrutura base: uma zona hospedada no Route 53, um certificado TLS gerenciado pelo ACM e um ALB voltado para a internet que emite redirecionamentos 302 para a URL do portal regional do Identity Center.

    Os passos principais são: criar uma zona hospedada pública no Route 53 para o domínio personalizado (ex: aws.minhaempresa.com); delegar o subdomínio a partir do domínio pai adicionando um registro NS; solicitar um certificado ACM para o domínio na região primária do IAM Identity Center; criar um grupo de segurança para o ALB permitindo tráfego HTTP e HTTPS de entrada em IPv4 e IPv6; criar o ALB com listeners nas portas 80 e 443, configurando redirecionamentos 302 — sendo o listener HTTPS apontando para a URL do portal regional do Identity Center; e por fim criar registros DNS no Route 53 apontando para o ALB com política de roteamento por latência.

    Um detalhe técnico importante destacado no guia: é obrigatório usar o código de status 302 – Found (e não 301). Usar 301 faz com que o navegador armazene em cache a URL de redirecionamento, o que impediria que failovers funcionassem corretamente até o cache expirar.

    Para validar a configuração, basta executar:

    curl -I https://aws.minhaempresa.com

    A resposta esperada é um HTTP/2 302 com o cabeçalho location apontando para a URL do portal do Identity Center na região configurada.

    Fase 2: Roteamento automático para o endpoint regional mais próximo

    A segunda fase estende a solução para suportar a replicação multi-região do IAM Identity Center. O objetivo é que usuários em diferentes partes do mundo sejam automaticamente direcionados ao portal da região com menor latência de rede a partir de sua localização.

    Para isso, é necessário repetir os passos da Fase 1 em cada região adicional onde o IAM Identity Center foi replicado: solicitar um certificado ACM na nova região, criar o grupo de segurança e o ALB (com a regra de redirecionamento apontando para o endpoint daquela região específica) e criar os registros DNS regionais e de roteamento por latência no Route 53 para cada região adicional.

    Com isso, o Route 53 passa a ter registros de latência para todas as regiões ativas, e cada usuário é automaticamente direcionado ao ALB mais próximo, que por sua vez redireciona para o portal do Identity Center correspondente.

    Fase 3: Failover regional gerenciado com ARC Region switch

    A terceira fase introduz o Controlador de Recuperação de Aplicações da Amazon (ARC) para orquestrar failovers regionais de forma gerenciada, ensaiável e controlada. Sem essa fase, uma impairment regional exigiria atualizações manuais de DNS para redirecionar o tráfego.

    O ARC Region switch fornece health checks do Route 53 diretamente como parte de um plano de Region switch. Esses health checks gerados são associados aos registros de latência do Route 53, e o ARC controla o estado (saudável ou não saudável) deles durante a execução do plano.

    O processo envolve: criar um plano de Region switch no console do ARC com abordagem de recuperação ativa-ativa, selecionando as regiões onde o IAM Identity Center está replicado; configurar os workflows de Ativação e Desativação para cada região, associando os registros DNS do Route 53 com seus respectivos identificadores; e por fim associar os health checks gerados pelo ARC aos registros de latência A e AAAA no Route 53.

    Para validar o setup, o guia orienta a executar um failover controlado: desativar a região primária via ARC e confirmar via curl que o redirecionamento passou a apontar para a região secundária. Para o failback, basta ativar novamente a região primária no plano do ARC.

    Deploy automatizado com CloudFormation

    Como alternativa aos passos manuais, a AWS disponibiliza templates do CloudFormation para cada fase, além de um script bash (deploy.sh) que automatiza o deploy das três fases em sequência. Os templates estão disponíveis para download:

    Para usar o script de deploy unificado, o pacote de deployment deve ser baixado e descompactado. Antes de executar, é necessário configurar os parâmetros do ambiente no arquivo deploy.sh: domínio de nível superior (TLD), ID da zona hospedada do TLD, subdomínio do Identity Center, ID da instância do IAM Identity Center, região primária e regiões adicionais.

    wget https://aws-security-blog-content.s3.us-east-1.amazonaws.com/public/sample/3536-regional-routing-for-aws-access-portals/Vanity-domains-cfn.zip
    unzip Vanity-domains-cfn.zip
    cd Vanity-domains-cfn
    ./deploy.sh

    Integração com provedores de identidade externos

    Após a configuração, o domínio personalizado pode ser integrado diretamente ao provedor de identidade da organização — como Okta ou Microsoft Entra ID — como uma aplicação de bookmark ou URL de chiclet. Dessa forma, usuários que acessam o painel do provedor de identidade são sempre redirecionados ao endpoint do IAM Identity Center mais próximo via roteamento por latência. Em caso de impairment regional, administradores executam um Region switch no ARC e os usuários são automaticamente redirecionados ao endpoint ativo, sem nenhuma alteração na URL do bookmark ou na experiência do usuário final.

    Pré-requisitos para implementação

    Antes de iniciar, a AWS lista os seguintes requisitos: um domínio de nível superior existente (ex: minhaempresa.com); uma instância organizacional do AWS IAM Identity Center configurada; para as Fases 2 e 3, a replicação multi-região do IAM Identity Center configurada com pelo menos duas regiões; e permissões de Gerenciamento de Identidade e Acesso da AWS (IAM) em uma conta de rede dedicada ou de serviços compartilhados para gerenciar Route 53, ACM, Amazon EC2, ALB e ARC.

    Recursos adicionais

    Fonte

    Regional routing for AWS access portals: Implementing custom vanity domains for IAM Identity Center (https://aws.amazon.com/blogs/security/regional-routing-for-aws-access-portals-implementing-custom-vanity-domains-for-iam-identity-center/)

  • Detectando e prevenindo crypto mining no seu ambiente AWS

    O problema do crypto mining não autorizado na nuvem

    Quando alguém obtém acesso indevido a recursos de nuvem para minerar criptomoedas, o impacto vai muito além do desperdício de processamento. A Amazon Web Services (AWS) detalha em um guia recente que organizações afetadas podem enfrentar aumentos de custo que vão de centenas a milhares de dólares, degradação de performance em workloads legítimas e, em casos mais graves, incidentes de segurança como exposição de dados ou implantação de ransomware.

    O que torna esse problema ainda mais preocupante é que as técnicas usadas pelos atacantes evoluem constantemente, dificultando a detecção. Muitas organizações só descobrem a invasão depois de receberem uma fatura inesperada ou quando a degradação de recursos começa a afetar as operações. E quando um atacante entra pela porta do crypto mining, ele pode instalar backdoors, comprometer credenciais e se mover lateralmente pela infraestrutura AWS.

    Sinais que indicam atividade de mineração

    A AWS aponta alguns indicadores que as equipes de segurança devem monitorar ativamente:

    • Conexões com endereços IP desconhecidos ou uso de portas associadas a pools de mineração, como a porta 3333
    • Uso elevado e sustentado de CPU ou GPU sem justificativa nas operações normais do negócio
    • Padrões de tráfego de rede incomuns, especialmente picos de saída para IPs não reconhecidos
    • Processos ou aplicações não autorizadas rodando nos recursos

    Como o Amazon GuardDuty detecta mineração de criptomoedas

    O Amazon GuardDuty é o serviço central para detecção desse tipo de ameaça. Ele usa algoritmos de aprendizado de máquina (Machine Learning) alimentados por dados globais de ameaças coletados pela AWS, detecção de anomalias baseada em linhas de base comportamentais e inteligência de ameaças integrada com parceiros de segurança.

    Tipos de alertas específicos para crypto mining

    As capacidades de detecção de crypto mining do GuardDuty incluem os seguintes tipos de findings:

    O GuardDuty também monitora os Flow Logs da Amazon Virtual Private Cloud (Amazon VPC) em busca de padrões suspeitos de rede, analisa consultas DNS para domínios relacionados à mineração e examina eventos do AWS CloudTrail para identificar chamadas de API suspeitas.

    Quando o recurso de Runtime Monitoring está ativado, o GuardDuty implanta agentes leves que oferecem visibilidade mais profunda sobre processos em execução e comportamento do sistema. Isso habilita findings como CryptoCurrency:Runtime/BitcoinTool.B e Impact:Runtime/CryptoMinerExecuted, que detectam software de mineração operando dentro dos workloads.

    A cobertura se estende a instâncias Amazon EC2, clusters do Amazon Elastic Container Service (Amazon ECS), ambientes Kubernetes e containers standalone. Para ambientes containerizados, findings do Amazon Elastic Kubernetes Service (Amazon EKS) podem indicar quando acessos não autorizados estão sendo usados para operações de mineração.

    Construindo uma proteção em múltiplas camadas

    A AWS reforça que a proteção contra crypto mining se beneficia de várias camadas de segurança — o GuardDuty é um componente importante, mas não o único. Veja o que a AWS recomenda para complementar as capacidades de detecção:

    • Ative o GuardDuty em todas as contas e regiões via AWS Organizations, habilitando também o Runtime Monitoring e a proteção para Amazon EKS.
    • Amazon CloudWatch: configure métricas de uso de recursos e alarmes para picos incomuns de CPU, rede ou GPU que possam indicar mineração.
    • AWS Config: implemente regras para verificar conformidade de configurações de segurança, garantindo que grupos de segurança não permitam acesso amplo à internet e que o IMDSv2 esteja aplicado.
    • AWS Network Firewall: habilite filtragem granular de tráfego de saída, permitindo apenas conectividade necessária e bloqueando acesso à infraestrutura de mineração.
    • AWS Systems Manager: mantenha visibilidade sobre configurações de instâncias. O recurso Inventory rastreia aplicações instaladas para detectar software de mineração; Run Command e State Manager aplicam políticas de segurança em toda a frota.
    • Automação de resposta: crie workflows automáticos usando Amazon EventBridge e Lambda para reagir imediatamente quando o GuardDuty detectar atividades de mineração.

    Boas práticas para proteção abrangente

    Gestão de acesso e autenticação

    A AWS recomenda implementar o princípio do menor privilégio com o Gerenciamento de Identidade e Acesso da AWS (IAM). Para casos de uso de software, use IAM roles dentro da AWS e IAM Roles Anywhere fora da AWS, em vez de chaves de acesso de longa duração. Para identidades humanas, centralize o gerenciamento de usuários pelo AWS IAM Identity Center com Autenticação Multifator (MFA) e controle de acesso baseado em atributos.

    Se não for possível eliminar o uso de chaves de acesso de longa duração, implemente políticas de rotação regular e aplique o menor privilégio em todas as políticas do IAM. Audite permissões regularmente para identificar e remover acessos excessivos.

    Manutenção de sistemas e configurações

    Use o Patch Manager, recurso do Systems Manager, para automatizar a aplicação de patches e manter as Imagens de Máquina da Amazon (AMIs) sempre atualizadas. Estabeleça um ciclo regular de patching, testando em ambientes de não-produção antes de implantar.

    Implemente regras rígidas de entrada em grupos de segurança, permitindo apenas o tráfego necessário. Use filtragem de saída para impedir conexões não autorizadas com pools de mineração e audite regularmente as configurações de grupos de segurança.

    Proteção de dados

    Use o Serviço de Gerenciamento de Chaves da AWS (AWS KMS) para habilitar criptografia de todos os dados em repouso e implemente TLS para dados em trânsito. O AWS KMS utiliza criptografia em envelope por padrão, protegendo as chaves de dados com chaves mestras. Rotacione as chaves de criptografia regularmente.

    Benefícios de uma proteção abrangente

    A AWS descreve os ganhos concretos que organizações podem obter ao implementar esse conjunto de medidas:

    • Redução do tempo de detecção: de dias ou semanas para minutos, permitindo contenção rápida antes que danos significativos ocorram.
    • Respostas automatizadas: workflows automáticos reduzem a necessidade de intervenção manual, liberando as equipes de segurança para iniciativas estratégicas.
    • Controle de custos: identificação e encerramento de consumo não autorizado de recursos, prevenindo aumentos inesperados na fatura.
    • Estabilidade de performance: processos de mineração deixam de monopolizar CPU, memória e rede, mantendo a performance das aplicações legítimas.
    • Visibilidade ampliada: a abordagem de monitoramento ajuda a identificar não só crypto mining, mas outras ameaças de segurança que poderiam passar despercebidas.
    • Confiança da equipe: monitoramento contínuo e alertas automatizados garantem que tentativas de mineração sejam detectadas e tratadas prontamente.

    Mineração de criptomoedas autorizada na AWS

    Um ponto importante destacado pela AWS: mineração de criptomoedas na plataforma requer aprovação prévia por escrito, conforme os Termos de Serviço da AWS (Seção 1.25). Essa exigência existe para proteger tanto os recursos dos clientes quanto a infraestrutura geral da AWS.

    Para solicitar aprovação, o AWS Trust & Safety avalia os pedidos para evitar que atividades de mineração afetem negativamente a performance ou a segurança dos serviços. A solicitação deve incluir:

    • Descrição do propósito da mineração e do caso de negócio
    • Planejamento de infraestrutura e abordagem de gestão de custos
    • Detalhamento das medidas de segurança para prevenir acessos não autorizados
    • Contatos de emergência para comunicação rápida em caso de problemas
    • Número de instâncias e tipo de mineração pretendida

    Operações aprovadas devem seguir diretrizes específicas. A AWS monitora as atividades para verificar que não geram relatórios de abuso, não afetam a performance dos serviços e não desviam da arquitetura e das práticas de segurança definidas. Vale lembrar: créditos AWS e recursos do Free Tier não podem ser usados para mineração.

    Conclusão

    A AWS recomenda uma abordagem abrangente que combine detecção avançada de ameaças com medidas preventivas proativas. O GuardDuty fornece a base de detecção, enquanto os serviços complementares formam um ecossistema robusto de segurança. A segurança é uma responsabilidade compartilhada: a AWS fornece as ferramentas, mas a implementação das práticas e controles de segurança por parte da organização é o que determina o nível real de proteção. Revisão regular das medidas de segurança e treinamento das equipes são essenciais para manter uma defesa eficaz contra crypto mining e outras ameaças no ambiente AWS.

    Fonte

    Detecting and preventing crypto mining in your AWS environment (https://aws.amazon.com/blogs/security/detecting-and-preventing-crypto-mining-in-your-aws-environment/)

  • AWS Atualiza Guia de Governança, Risco e Conformidade para Adoção Responsável de IA no Setor Financeiro

    IA no Setor Financeiro: Oportunidades e Novos Desafios de Governança

    O setor de serviços financeiros (FSI, do inglês Financial Services Industry) está usando IA para transformar a forma como instituições atendem seus clientes. As aplicações são variadas: gerenciamento proativo de portfólios, refinanciamento automático de hipotecas quando as taxas caem, e até negociação de prêmios de seguros em nome dos clientes.

    Mas essa adoção acelerada traz consigo um conjunto de preocupações que não podem ser ignoradas — especialmente no que diz respeito à Governança, Risco e Conformidade (GRC). Para ajudar organizações do setor financeiro a navegarem esses desafios, a AWS acaba de anunciar a versão atualizada do Guia do Usuário AWS para Governança, Risco e Conformidade na Adoção Responsável de IA em Serviços Financeiros.

    O Que o Guia Cobre

    O documento é abrangente e foi estruturado para oferecer considerações práticas em dimensões-chave da adoção responsável de IA:

    • Governança
    • Gestão de riscos
    • Conformidade regulatória
    • Gestão de dados
    • Gestão de modelos
    • Gestão de agentes de IA

    Para cada uma dessas dimensões, o guia mapeia capacidades específicas de serviços AWS que podem ser utilizados pelas organizações. Entre os serviços destacados estão:

    Como Acessar e Recursos Complementares

    O guia está disponível gratuitamente no portal de whitepapers da AWS e é complementar a outros materiais já publicados pela empresa, como:

    À medida que o ambiente regulatório e as boas práticas continuarem evoluindo, a AWS promete publicar atualizações no AWS Security Blog e no AWS Compliance Center.

    Por Que Isso Importa para Equipes Brasileiras

    Para times de tecnologia, conformidade e segurança que atuam no mercado financeiro brasileiro, esse guia é um ponto de partida relevante. O setor financeiro no Brasil está sujeito a regulações rigorosas — e a pressão para adotar IA de forma responsável só tende a crescer. Ter um framework estruturado, com mapeamento direto para serviços de nuvem, facilita tanto o planejamento quanto as conversas com áreas de risco e auditoria.

    Fonte

    Introducing the updated AWS User Guide to Governance, Risk, and Compliance for Responsible AI Adoption (https://aws.amazon.com/blogs/security/introducing-the-updated-aws-user-guide-to-governance-risk-and-compliance-for-responsible-ai-adoption/)

  • Pacotes de Conformidade PCI PIN e P2PE já estão disponíveis para o AWS Payment Cryptography

    A AWS expande conformidade de pagamentos com PCI PIN e PCI P2PE

    A Amazon Web Services (AWS) anunciou a conclusão bem-sucedida das avaliações de conformidade com os padrões Número de Identificação Pessoal da Indústria de Cartões de Pagamento (PCI PIN) e Criptografia Ponto a Ponto da Indústria de Cartões de Pagamento (PCI P2PE) para o serviço AWS Payment Cryptography. Essa conquista representa um avanço significativo no portfólio de conformidade do serviço e traz implicações diretas para empresas brasileiras que processam pagamentos eletrônicos na nuvem.

    O que mudou no portfólio de conformidade

    Com essa nova validação, a AWS passa a ser reconhecida como provedora de componentes em três categorias distintas dentro do ecossistema PCI:

    • Gerenciamento de Chaves (KMCP — Key Management Component Provider)
    • Carregamento de Chaves (KLCP — Key Loading Component Provider)
    • Gerenciamento de Descriptografia (DMCP — Decryption Management Component Provider) — já existente anteriormente

    Além do escopo ampliado de categorias, a cobertura PCI PIN e PCI P2PE foi estendida para duas novas regiões: América do Sul (São Paulo) e Ásia-Pacífico (Sydney). Para o mercado brasileiro, isso é especialmente relevante: significa que workloads de pagamento podem ser operadas diretamente na região de São Paulo com respaldo formal de conformidade PCI.

    O que é o AWS Payment Cryptography

    O AWS Payment Cryptography é um serviço que permite que aplicações de processamento de pagamentos utilizem módulos de segurança de hardware (HSMs — Hardware Security Modules) para pagamentos. Esses HSMs são certificados pelo padrão Segurança de Transações HSM PTS (PCI PIN Transaction Security) e são totalmente gerenciados pela AWS, com gerenciamento de chaves em conformidade com PCI PIN e PCI P2PE.

    Na prática, isso significa que empresas que desenvolvem ou operam soluções de pagamento podem delegar à AWS a responsabilidade pela infraestrutura criptográfica regulada, reduzindo consideravelmente a carga operacional de manter essa conformidade internamente.

    Para quais casos de uso essas certificações são relevantes

    Cada certificação cobre um cenário específico dentro do ecossistema de pagamentos:

    • PCI P2PE — Componente de Descriptografia: permite que aplicações de pagamento utilizem a AWS para descriptografar transações de cartão de crédito provenientes de terminais de pagamento.
    • PCI PIN: obrigatório para aplicações que processam transações de débito baseadas em PIN (senha numérica do cartão).
    • PCI P2PE — Componentes de Gerenciamento e Carregamento de Chaves: habilitam o uso da AWS para troca física de chaves criptográficas e para casos de uso de gerenciamento de chaves, incluindo injeção de chaves.

    Para saber mais sobre o novo recurso de Troca Física de Chaves, a AWS publicou um anúncio no AWS What’s New com detalhes adicionais.

    Documentos incluídos nos pacotes de conformidade

    Os pacotes de conformidade PCI PIN e PCI P2PE para o AWS Payment Cryptography incluem um conjunto abrangente de documentos técnicos e regulatórios:

    • Atestado de Conformidade PCI PIN (AOC — Attestation of Compliance): demonstra que o AWS Payment Cryptography foi validado com êxito contra o padrão PCI PIN, sem nenhuma não-conformidade identificada.
    • Resumo de Responsabilidades PCI PIN: orienta os clientes da AWS sobre suas responsabilidades ao desenvolver e operar ambientes seguros para transações baseadas em PIN.
    • Atestado de Validação PCI P2PE DMCP (AOV — Attestation of Validation): comprova a validação do serviço como Sistema de Gerenciamento de Descriptografia PCI P2PE, sem não-conformidades.
    • Atestado de Validação PCI P2PE KMCP (AOV): comprova a validação como Provedor de Componente de Gerenciamento de Chaves PCI P2PE, sem não-conformidades.
    • Atestado de Validação PCI P2PE KLCP (AOV): comprova a validação como Provedor de Componente de Carregamento de Chaves PCI P2PE, sem não-conformidades.
    • Guia do Usuário do Componente P2PE e Relatório Anual do Componente: descreve o escopo de avaliação do serviço como Componente de Descriptografia, Componente de Carregamento de Chaves e Componente de Gerenciamento de Chaves PCI P2PE, além de ilustrar as responsabilidades de conformidade tanto do serviço quanto dos clientes que o utilizam para processamento de criptografia ponto a ponto.

    Como acessar os documentos de conformidade

    Todos os relatórios — incluindo o Atestado de Conformidade PCI PIN, o Resumo de Responsabilidades Compartilhadas PCI PIN, o Atestado de Validação PCI P2PE e o Guia do Usuário do Componente de Descriptografia P2PE — estão disponíveis para os clientes diretamente pelo AWS Artifact, o repositório centralizado de documentos de conformidade da AWS.

    A avaliação foi conduzida pela Coalfire, uma Avaliadora de Segurança Qualificada (QSA — Qualified Security Assessor) terceirizada e independente, o que reforça a credibilidade das validações obtidas.

    Contexto para equipes de conformidade e segurança

    Para profissionais que lidam com conformidade regulatória em ambientes de pagamento, essa expansão do portfólio PCI do AWS Payment Cryptography representa uma oportunidade concreta de reduzir a complexidade operacional. Ao utilizar componentes já validados pela AWS, as equipes podem concentrar esforços nas responsabilidades que permanecem sob seu controle, em vez de precisar manter e auditar toda a infraestrutura criptográfica de ponta a ponta.

    Para conhecer mais sobre os programas PCI e outros programas de conformidade e segurança disponíveis, a AWS disponibiliza informações na página de Programas de Conformidade da AWS. Dúvidas específicas sobre conformidade podem ser encaminhadas à equipe de Compliance da AWS pela página de Suporte de Conformidade, e questões técnicas podem ser tratadas diretamente pelo AWS Support.

    Fonte

    PCI PIN and P2PE compliance packages for AWS Payment Cryptography are now available (https://aws.amazon.com/blogs/security/pci-pin-and-p2pe-compliance-packages-for-aws-payment-cryptography-are-now-available/)

  • Construindo aplicações de voz em tempo real com Amazon Nova Sonic e WebRTC

    O problema com streaming de voz em tempo real

    Desenvolver aplicações de streaming ao vivo com interação de voz em tempo real é um desafio técnico considerável. Restrições de largura de banda de rede podem causar alta latência e degradação de qualidade em aplicações onde o tempo é crítico. Barreiras de idioma limitam a interação eficaz entre humanos e máquinas em comunicações multilíngues. Escalabilidade e resiliência exigem um equilíbrio difícil entre desempenho e custos de infraestrutura. E a compatibilidade entre navegadores e dispositivos móveis demanda esforço significativo de desenvolvimento, especialmente para startups.

    Para endereçar esses desafios, a AWS documentou uma solução baseada na combinação do Amazon Nova 2 Sonic com o Amazon Kinesis Video Streams WebRTC. O WebRTC é responsável por ajustar dinamicamente o bitrate em redes instáveis, o que ajuda a manter a qualidade do áudio enquanto reduz conexões perdidas. O Nova Sonic, por sua vez, viabiliza diálogos naturais em linguagem humana, permitindo que usuários interajam de forma mais fluida no idioma de sua preferência. Ambos os serviços são totalmente gerenciados pela AWS, escalando automaticamente com alta resiliência.

    Nova Sonic e WebRTC: entendendo cada peça

    Pipelines tradicionais de agentes de voz geralmente envolvem módulos separados para reconhecimento de fala, processamento de linguagem e síntese de voz. O Nova Sonic oferece uma arquitetura unificada de fala-para-fala (speech-to-speech) que viabiliza conversas de voz em tempo real entre usuários e agentes de IA com baixa latência. Com compreensão e geração de fala unificadas, o Nova Sonic entrega uma IA conversacional natural, próxima à interação humana. O modelo oferece diferentes estilos de fala e interfaces de ferramentas para agentes externos, permitindo construir interfaces de voz mais responsivas e com maior consciência contextual.

    Um pipeline de streaming típico é composto por três componentes principais: fonte de mídia, servidor de mídia e consumidor de mídia. Esses componentes se comunicam por protocolos como RTMP, RTSP, HLS, MPEG-DASH e WebRTC.

    A Comunicação em Tempo Real pela Web (WebRTC) é um protocolo público que moderniza o streaming ao vivo ao fornecer conexões diretas ponto a ponto (peer-to-peer) em tempo real, sem necessidade de plugins ou instalações adicionais. Essa abordagem elimina a necessidade de servidores intermediários e reduz significativamente a latência. Entre todos os protocolos de streaming de mídia, o WebRTC entrega a menor latência.

    O WebRTC também inclui recursos nativos como streaming com taxa de bits adaptativa (ABR), correção antecipada de erros (FEC) e gerenciamento de buffer de jitter. Esses recursos ajustam automaticamente o consumo de largura de banda e resolvem problemas de perda de pacotes em conectividade fraca, mantendo conversas fluentes mesmo em condições de rede precárias. A natureza de código aberto do WebRTC e sua ampla compatibilidade com navegadores (Chrome, Firefox, Safari, Edge, Android, iOS, entre outros) aceleram a adoção da solução. Ele também é bem adequado para o processamento em tempo real de fluxos de mídia com funções de IA.

    Arquitetura da solução

    Existem vários cenários em que faz sentido implantar soluções de streaming ao vivo com interação de voz multilíngue:

    • Veículos conectados que auxiliam motoristas com capacidades de tradução em tempo real.
    • Fábricas inteligentes que suportam comunicação entre operadores de diferentes culturas por meio de sistemas de controle de qualidade ativados por voz.
    • Aplicações de robótica que fornecem interações de atendimento ao cliente multilíngue.
    • Dispositivos de casa inteligente que oferecem controle por voz em diferentes idiomas, possibilitando suporte técnico global por meio de tradução de áudio e orientação visual em tempo real.

    A solução documenta como implantar o Nova Sonic em conjunto com o Kinesis Video Streams como um serviço WebRTC gerenciado, incluindo integração de ferramentas com fontes populares como Geração Aumentada por Recuperação (RAG), Protocolo de Contexto de Modelo (MCP) e Strands Agents.

    O fluxo da arquitetura funciona da seguinte forma:

    Comparação com a solução WebSocket

    Comparada à opção de implantação via WebSocket, a solução de fala-para-fala baseada em WebRTC oferece uma camada de rede diferente, mais adequada para dispositivos móveis e de IoT. Esses dispositivos frequentemente exigem conexões de baixa latência sem alta largura de banda de rede. A solução também incorpora uma camada personalizada de Detecção de Atividade de Voz (VAD) para uma experiência de usuário aprimorada.

    Mudança no protocolo de streaming de áudio

    Os dados de voz são transmitidos pelo canal de mídia WebRTC em modo streaming — especificamente pelo track de áudio da conexão peer no formato Protocolo de Transporte em Tempo Real Seguro (SRTP), em vez de mensagens WebSocket. Os recursos WebRTC (como oferta/resposta SDP, DTLS, Protocolo de Controle de Transmissão de Fluxo (SCTP), SRTP e conexão peer) foram implementados usando a biblioteca Python aiortc.

    Mecanismo de detecção de voz humana

    O cliente WebRTC em React captura continuamente o áudio e o envia para o servidor WebRTC em Python. Para suprimir ruídos, aumentar a precisão da fala e reduzir os tokens de áudio para o Nova Sonic, a solução aplica a Detecção de Atividade de Voz (VAD) ao pipeline no lado do servidor, com base na biblioteca Python WebRTCVAD. Construída sobre um Modelo de Mistura Gaussiana (GMM), essa biblioteca é leve, estável e rápida para processamento de áudio em nível de frame WebRTC. Outras bibliotecas como Silero VAD e Pyannote VAD também podem ser utilizadas.

    Adaptação do formato de dados de áudio

    O WebRTC define padrões específicos de formato de áudio e vídeo. Ao enviar e receber dados de áudio por uma conexão WebRTC, é necessário realizar algumas adaptações de formato:

    • [1] Frames estéreo intercalados exigem a extração do canal de áudio esquerdo ou direito;
    • [2] Taxas de amostragem de 48kHz ou outras serão reamostradas para 16kHz, conforme exigido pela API do Nova Sonic;
    • [3] Valores de dados Int16 serão convertidos para Float32 para maior precisão de cálculo.

    Para mais detalhes técnicos, consulte a documentação no GitHub.

    Exemplos práticos da solução

    O repositório no GitHub disponibiliza uma amostra genérica e dois exemplos de cenários específicos: casa inteligente e veículo conectado. Esses padrões podem ser adaptados para suas próprias aplicações.

    Exemplo de casa inteligente

    No cenário de casa inteligente, o usuário abre um diálogo com o Nova Sonic para controlar dispositivos IoT. Para ilustrar um pipeline de comandos completo, a solução utiliza uma Base de Conhecimento do Amazon Bedrock para recuperar tópicos MQTT e gerar respostas de IA. Em seguida, conecta-se ao servidor MCP para AWS IoT Core para entregar as mensagens de comando. Os passos de configuração estão disponíveis no readme do exemplo smart-home no GitHub.

    Exemplo de veículo conectado

    No cenário de veículo conectado, o sistema estabelece monitoramento em tempo real para detectar comportamentos perigosos de uso de celular por motoristas. O sistema utiliza assistentes de voz para perguntar se o motorista precisa de assistência e verificar sua atenção. A equipe de supervisão pode acessar feeds de monitoramento em tempo real em um canal de vídeo independente para confirmar o status de segurança de veículos e motoristas. As conexões WebRTC simultâneas são independentes entre si, com criptografia TLS dedicada. Os passos de configuração estão disponíveis no readme do exemplo connected-vehicle no GitHub.

    Próximos passos

    A solução documentada pela AWS demonstra como construir uma aplicação baseada em WebRTC que combina o Amazon Nova 2 Sonic com o Amazon Kinesis Video Streams WebRTC para endereçar barreiras comuns no streaming ao vivo — como degradação de desempenho em redes instáveis e ausência de inteligência conversacional. A base de código disponível pode ser usada como ponto de partida para construir aplicações de assistente de voz de baixa latência, inteligentes e robustas para dispositivos inteligentes e veículos conectados.

    Para se aprofundar no tema:

    Fonte

    Build real-time voice streaming applications with Amazon Nova Sonic and WebRTC (https://aws.amazon.com/blogs/machine-learning/build-real-time-voice-streaming-applications-with-amazon-nova-sonic-and-webrtc/)

  • Amazon SageMaker Data Agent agora disponível para domínios com IAM Identity Center

    O que foi anunciado

    A AWS anunciou que o Amazon SageMaker Data Agent agora está disponível para domínios do SageMaker Unified Studio configurados com o Centro de Identidade do IAM (IAM Identity Center). Com essa expansão, analistas e engenheiros de dados passam a contar com as capacidades de Inteligência Artificial (IA) do Data Agent diretamente nos ambientes de notebooks e no Query Editor do SageMaker.

    O que o Data Agent faz na prática

    A proposta central do Data Agent é eliminar a necessidade de escrever manualmente código complexo — como joins SQL, agregações e transformações em Python. Em vez disso, o profissional descreve em linguagem natural o que deseja analisar e o agente gera o código adequado, já conectado às fontes de dados configuradas no ambiente.

    As fontes de dados suportadas incluem:

    • Amazon Athena
    • Amazon Redshift
    • Amazon S3
    • AWS Glue Data Catalog

    Principais capacidades

    O Data Agent vai além de simplesmente gerar código. Entre os recursos disponíveis, destacam-se:

    • Contexto conversacional: o agente mantém o histórico da conversa entre células do notebook, tabelas selecionadas e histórico de consultas, propondo planos passo a passo antes de gerar o código.
    • Casos de uso variados: cálculo de taxas de crescimento de receita trimestral, geração de visualizações, transformação de DataFrames e otimização de performance de queries — tudo via linguagem natural.
    • Fix with AI (Corrigir com IA): funcionalidade de depuração inteligente que analisa erros de execução e sugere correções, acelerando o ciclo de desenvolvimento.

    Disponibilidade e como começar

    O recurso já está disponível em todas as regiões comerciais da AWS onde o Amazon SageMaker Unified Studio é suportado.

    Para começar a usar, basta acessar um projeto no SageMaker Unified Studio, abrir um notebook ou o Query Editor e selecionar o painel do Data Agent.

    Para mais detalhes, a AWS disponibiliza a página oficial do Amazon SageMaker Unified Studio e a documentação “Use o SageMaker Data Agent” no guia do usuário do SageMaker Unified Studio.

    Fonte

    Amazon SageMaker Data Agent now available for IAM Identity Center domains (https://aws.amazon.com/about-aws/whats-new/2026/05/amazon-sagemaker-data-agent-idc/)

  • Segurança em agentes de IA: como AWS e Cisco AI Defense protegem implantações MCP e A2A em escala

    O crescimento acelerado dos agentes de IA criou lacunas sérias de segurança

    Desde novembro de 2024, a adoção do Protocolo de Contexto de Modelo (MCP) cresceu de forma expressiva. Empresas passaram a gerenciar dezenas — às vezes centenas — de servidores MCP: ferramentas que ampliam as capacidades de agentes de IA conectando-os a fontes de dados externas e APIs. Em abril de 2025, surgiu o Protocolo Agente-para-Agente (A2A), que permite que agentes autônomos se comuniquem diretamente entre si, sem intervenção humana. Mais recentemente, as Agent Skills (habilidades de agente) passaram a aparecer em toda a infraestrutura corporativa.

    Esse crescimento gerou três lacunas críticas de segurança:

    • As equipes não têm visibilidade sobre quais ferramentas e agentes estão em execução;
    • Revisões manuais de segurança não conseguem acompanhar o ritmo das implantações;
    • Frameworks de conformidade exigem trilhas de auditoria que simplesmente não existem para agentes de IA autônomos.

    Os riscos são concretos: acesso inadvertido a sistemas com dados sensíveis, violações de conformidade sob frameworks como SOX e GDPR — com potencial de penalidades regulatórias — e interrupções operacionais quando ferramentas vulneráveis ou agentes maliciosos são descobertos apenas após a implantação. Equipes de segurança relatam que processos de revisão manual podem adicionar várias semanas a cada implantação de aplicação de IA, criando um backlog que cresce conforme a adoção de IA acelera.

    A parceria entre AWS e Cisco AI Defense

    Para endereçar esses desafios, a AWS e a Cisco AI Defense firmaram uma colaboração estratégica que oferece varredura de segurança automatizada e abrangente para cada servidor MCP, agente de IA e Agent Skill no ambiente corporativo. O centro dessa solução é o AI Registry, projeto open-source apoiado pela AWS, que se integra ao Cisco AI Defense para resolver três problemas centrais.

    Visibilidade e controle do espalhamento de ferramentas

    Organizações que implantam servidores MCP e agentes de IA enfrentam um desafio fundamental de visibilidade. Equipes costumam adicionar servidores e agentes de forma ad-hoc em infraestruturas de nuvem e on-premises, tornando praticamente impossível para as equipes de segurança manter controle sobre o que está disponível, quais agentes se comunicam entre si, quem os utiliza e se representam riscos de segurança.

    O AI Registry resolve isso por meio de registro e descoberta unificados. Cada servidor MCP, agente de IA e Skill é registrado em um único plano de controle, proporcionando visibilidade completa. Além disso, a integração com o Cisco AI Defense adiciona uma camada de proteção ativa sobre essa visibilidade.

    Segurança da cadeia de suprimentos em escala

    Servidores MCP de terceiros e agentes A2A podem conter vulnerabilidades, código malicioso ou padrões inseguros que revisões manuais não conseguem detectar em escala. Quando um novo servidor ou agente é adicionado ao registro, a varredura de segurança acontece automaticamente, antes que o componente possa ser acessado.

    O scanner analisa cada ferramenta MCP, card de agente A2A e Agent Skill, gerando relatórios de segurança detalhados. Se problemas forem encontrados, o componente é automaticamente marcado como desabilitado com uma tag security-pending, exigindo revisão do administrador antes de liberar o acesso. Isso vale tanto para um servidor MCP que fornece acesso a banco de dados quanto para um agente A2A que orquestra fluxos de trabalho em múltiplas etapas pela infraestrutura.

    Eliminando gargalos de revisão de conformidade

    Revisões de segurança tradicionais criam gargalos no processo de implantação. A varredura automatizada — com revisão humana apenas nos casos em que vulnerabilidades são encontradas — viabiliza o onboarding self-service com guardrails de segurança embutidos. O processo que antes era lento e manual passa a ser automatizado, acelerando a incorporação de novos servidores MCP, agentes e Skills, ao mesmo tempo em que mantém o histórico completo de auditoria de segurança para requisitos regulatórios como SOX e GDPR.

    Como o processo de varredura funciona na prática

    O AI Registry atua como plano de controle central onde servidores MCP, agentes de IA e Skills são registrados e descobertos, oferecendo visibilidade completa da infraestrutura de IA. Ao registrar um servidor MCP, o Cisco AI Defense MCP Scanner realiza análise profunda das descrições de ferramentas e esquemas. Ao registrar agentes A2A, o Cisco AI Defense A2A Scanner analisa declarações de capacidade, definições de habilidades e padrões de comunicação. Capacidades similares existem para Agent Skills, por meio de um Skills Scanner que detecta injeção de prompt, exfiltração de dados e padrões de código malicioso.

    O diagrama abaixo ilustra o fluxo completo do processo de registro e varredura de segurança:

    Imagem original — fonte: Aws

    A varredura pode ser iniciada sob demanda para analisar servidores MCP e agentes individualmente, ou para varrer todo o Registry de uma vez. Organizações tipicamente configuram um job Cron independente que usa a API do Registry para varrer periodicamente todo o ambiente e rastrear vulnerabilidades pelos sistemas de gestão de tickets existentes. Os resultados ficam armazenados no datastore do Registry e podem ser visualizados pela interface do Registry ou recuperados via API.

    Múltiplas abordagens de varredura

    A postura de segurança de uma organização é reforçada por múltiplas abordagens de varredura que se aplicam uniformemente a MCP, agentes A2A e Skills:

    • YARA Analyzer: detecção rápida baseada em padrões para ameaças conhecidas como injeção SQL, injeção de comandos e credenciais hardcoded;
    • LLM Analyzer: análise semântica com IA usando modelos de fronteira disponíveis pelo Amazon Bedrock, que examina lógica de ferramentas, comportamento de agentes e declarações de capacidade para identificar ameaças sofisticadas e inéditas;
    • Scanners proprietários da Cisco AI Defense: incluindo o MCP Scanner, A2A Scanner e Skills Scanner, para detecção avançada de ameaças combinando inteligência de ameaças extensiva com análise profunda de código.

    O A2A Scanner analisa especificamente os metadados dos cards de agente para detectar ameaças de cadeia de suprimentos como falsificação de identidade, injeção de prompt em campos de metadados, credenciais hardcoded, endpoints de exfiltração de dados e padrões de SSRF (Server-Side Request Forgery). Ele também verifica violações de conformidade com a especificação A2A e mapeia os achados para níveis de severidade de BAIXO a CRÍTICO.

    Quando problemas são detectados, o sistema desabilita automaticamente os ativos vulneráveis com relatórios de segurança detalhados, exigindo revisão do administrador antes de liberar o acesso. A varredura se integra aos fluxos de desenvolvimento (Integração Contínua/Entrega Contínua — CI/CD) como parte do registro de novos servidores e agentes no AI Registry.

    Arquitetura aberta e integração com fluxos corporativos

    O AI Registry é construído sobre padrões e APIs abertas. Clientes da Cisco AI Defense e da AWS podem consultar o AI Registry via API REST para descobrir servidores MCP e agentes disponíveis, suportando detecção de ameaças programática em escala. O registro usa a mesma especificação de API REST do MCP Registry oficial da Anthropic, garantindo ampla compatibilidade entre ambientes MCP e suporte a federação com outras implantações MCP.

    A integração com fluxos de trabalho corporativos existentes também é suportada:

    • Criação automática de tickets no ServiceNow para servidores ou agentes com problemas;
    • Notificações em tempo real no Slack quando achados de alta severidade são detectados;
    • Encaminhamento de dados de incidentes para sistemas de Gerenciamento de Eventos e Informações de Segurança (SIEM) como Splunk ou Datadog;
    • Relatórios consolidados em dashboards de conformidade para prontidão de auditoria.

    Como começar

    Para clientes AWS

    Clientes AWS podem implantar o AI Registry e configurar a integração com o Cisco AI Defense MCP Scanner para adicionar varredura de segurança ao fluxo de onboarding de ativos de IA. O guia completo de configuração do Security Scanner está disponível no GitHub.

    Além da integração com o AI Registry open-source, é possível usar o Cisco AI Defense em fluxos CI/CD para avaliar ativos de IA antes de registrá-los no AWS Agent Registry — um serviço gerenciado de descoberta que fornece um catálogo centralizado para organizar, curar e descobrir recursos em toda a organização. Essa abordagem permite que equipes avaliem servidores MCP, ferramentas, agentes, agent skills e recursos customizados antes da publicação no registry. Um exemplo de código com a integração do Cisco AI Defense (versão OSS) com o AWS Agent Registry está disponível no repositório oficial do AWS Labs.

    Para clientes Cisco AI Defense

    Clientes da Cisco AI Defense podem configurar o MCP Scanner para apontar para o registry da organização, descobrir servidores MCP e agentes disponíveis pela API do registry, gerar relatórios de segurança abrangentes e integrar os achados aos fluxos de segurança existentes. Os scanners open-source estão disponíveis publicamente:

    Para as capacidades completas do produto, consulte a documentação do Cisco AI Defense.

    Conclusão

    A parceria entre AWS e Cisco AI Defense representa uma resposta concreta a um problema que cresce junto com a adoção de IA nas empresas: como manter visibilidade, segurança e conformidade quando dezenas ou centenas de agentes e servidores são implantados em ritmo acelerado. A combinação do AI Registry com os scanners automatizados da Cisco endereça os três pilares do problema — visibilidade centralizada, varredura de segurança em escala e trilhas de auditoria para conformidade regulatória — sem criar novos gargalos no processo de desenvolvimento.

    Fonte

    Securing AI agents: How AWS and Cisco AI Defense scale MCP and A2A deployments (https://aws.amazon.com/blogs/machine-learning/securing-ai-agents-how-aws-and-cisco-ai-defense-scale-mcp-and-a2a-deployments/)

  • Fine-tuning de LLM com Databricks Unity Catalog e Amazon SageMaker AI

    O desafio de governança no fine-tuning de LLMs

    Realizar fine-tuning de Modelos de Linguagem de Grande Escala (LLMs) em ambientes que combinam serviços de diferentes provedores traz um desafio específico: como manter governança rigorosa sobre os dados sem abrir mão das melhores ferramentas de Aprendizado de Máquina (ML) disponíveis?

    Quando se usa o Amazon SageMaker AI em conjunto com o Databricks Unity Catalog, esse problema fica ainda mais evidente. O Unity Catalog gerencia metadados e permissões, enquanto os dados em si ficam armazenados no Amazon Simple Storage Service (Amazon S3) — quando o ambiente de nuvem escolhido é a AWS. O risco é que os jobs de treinamento do SageMaker AI acessem esses dados no S3 contornando o modelo de autorização granular do Unity Catalog, criando lacunas de auditoria e exposição a riscos de conformidade.

    Em indústrias reguladas, saber exatamente quais dados treinaram quais modelos não é opcional — é um requisito crítico. Sem um padrão de integração estruturado, perde-se visibilidade sobre essa linhagem, e a conformidade fica comprometida.

    Visão geral da solução

    A solução demonstrada pela AWS aborda esse problema integrando três serviços principais: o Unity Catalog para governança centralizada, o Amazon EMR Serverless para pré-processamento com Apache Spark, e o SageMaker AI para o treinamento do modelo. O fluxo completo realiza as seguintes etapas:

    • Leitura dos dados de treinamento a partir de uma tabela gerenciada pelo Unity Catalog, com controles de governança aplicados
    • Pré-processamento dos dados usando EMR Serverless com Apache Spark
    • Fine-tuning do modelo Ministral-3-3B-Instruct via jobs de treinamento do SageMaker AI
    • Rastreamento da linhagem de dados no Unity Catalog, desde os dados brutos até o modelo treinado

    Os componentes e suas funções na arquitetura são os seguintes:

    • Amazon SageMaker AI Studio – JupyterLab Space: orquestração do fluxo e treinamento do modelo
    • Amazon EMR Serverless: pré-processamento de dados com Spark, sem gerenciamento de clusters
    • Databricks Unity Catalog: catálogo de metadados, governança e rastreamento de linhagem
    • Hugging Face: acesso ao modelo pré-treinado
    • Amazon S3: armazenamento de dados e artefatos do modelo
    • AWS Secrets Manager: gerenciamento seguro de credenciais

    No fluxo operacional, o usuário acessa o SageMaker AI Studio, inicia o pré-processamento via job do EMR Serverless — que acessa os dados no S3 gerenciado pelo Unity Catalog usando OAuth armazenado no Secrets Manager — e, após o processamento, o job de treinamento do SageMaker AI busca o modelo no Hugging Face, realiza o fine-tuning e devolve os artefatos ao bucket S3. Por fim, o modelo é registrado no Unity Catalog com linhagem de dados completa.

    Pré-requisitos

    Antes de iniciar, é necessário ter acesso e permissões configuradas para os seguintes serviços AWS: SageMaker AI, EMR Serverless, Amazon S3, AWS Secrets Manager, AWS Identity and Access Management (IAM), Amazon Virtual Private Cloud (Amazon VPC), Amazon CloudWatch Logs e Amazon Elastic Container Registry (Amazon ECR). Também é necessário ter uma VPC com acesso à internet configurado.

    No lado do Databricks, os requisitos são: configurar o Unity Catalog para o Workspace, habilitar acesso externo a dados no Metastore (desativado por padrão) e criar credenciais OAuth (Client ID e secret) para acesso programático ao Databricks.

    Passo a passo da implementação

    O tutorial completo está disponível no notebook LLM_Finetunig_SageMaker_AI_Unity_Catalog.ipynb, que deve ser executado no SageMaker AI Studio. Para isso, acesse o Console do Amazon SageMaker AI, crie um domínio Studio se necessário (usando a configuração rápida), e crie um JupyterLab Space com a instância ml.m5.2xlarge, imagem Sagemaker Distribution 3.8.0 e 5 GB de armazenamento.

    Etapa 1: Configuração AWS

    Nesta etapa, são criados os recursos base: bucket S3 gerenciado pelo Unity Catalog com upload do dataset, secret no AWS Secrets Manager para as credenciais OAuth do Databricks, e as roles de Gerenciamento de Identidade e Acesso (IAM) necessárias para o EMR Serverless e o SageMaker AI.

    O dataset utilizado são os arquivos SEC EDGAR (Sistema Eletrônico de Coleta, Análise e Recuperação de Dados da Comissão de Valores Mobiliários dos EUA) — especificamente formulários 10-K e 10-Q de empresas do S&P 500 de 2023 a 2024, com foco na seção de Fatores de Risco. Os dados são armazenados em formato JSON no S3, com a seguinte estrutura:

    s3://aws-blog-smai-uc-bucket-ACCOUNTID/
    ├── raw/
    │   └── risk_factors/
    │       ├── form_type=10-K/
    │       │   └── fiscal_year=2024/
    │       │       └── cik=0000320193/
    │       │           └── risk_factors.json
    │       └── form_type=10-Q/
    │           └── fiscal_year=2024/
    │               └── quarter=1/
    │                   └── cik=0000320193/
    │                       └── risk_factors.json
    ├── curated/
    │   └── ml/

    Para autenticação, a solução usa OAuth para service principals (OAuth M2M), que gera tokens de curta duração. As credenciais são criadas seguindo a documentação do Databricks e armazenadas no AWS Secrets Manager.

    As políticas de IAM para o EMR Serverless e para o SageMaker AI concedem acesso ao bucket S3 gerenciado pelo Unity Catalog, ao Secrets Manager e ao CloudWatch Logs. A role do SageMaker AI inclui também permissões para o ECR. Veja os exemplos de política abaixo:

    Role do EMR Serverless:

    emr_policy = {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    f"arn:aws:s3:::{UC_MANAGED_BUCKET}/*",
                    f"arn:aws:s3:::{UC_MANAGED_BUCKET}"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": [
                    f"arn:aws:secretsmanager:{AWS_REGION}:{AWS_ACCOUNT_ID}:secret:databricks/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_ID}:*"
            }
        ]
    }

    Role de execução do SageMaker AI:

    sagemaker_policy = {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    f"arn:aws:s3:::{UC_MANAGED_BUCKET}/*",
                    f"arn:aws:s3:::{UC_MANAGED_BUCKET}"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": [
                    f"arn:aws:secretsmanager:{AWS_REGION}:{AWS_ACCOUNT_ID}:secret:databricks/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents",
                    "logs:DescribeLogStreams"
                ],
                "Resource": f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_ID}:*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ecr:GetAuthorizationToken",
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:GetDownloadUrlForLayer",
                    "ecr:BatchGetImage"
                ],
                "Resource": "*"
            }
        ]
    }

    Etapa 2: Configuração do Databricks Unity Catalog

    Nesta etapa, o bucket S3 é registrado como External Location no Unity Catalog. Em seguida, são criados os objetos de banco de dados: catálogo, schemas e tabela externa. As permissões necessárias são concedidas ao Service Principal — incluindo USE CATALOG, USE SCHEMA, SELECT na tabela de dados brutos e CREATE TABLE nos schemas de curadoria e ML.

    Após a configuração, o cliente Databricks é inicializado e a conexão com o Unity Catalog é testada:

    # Initialize Databricks client
    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient(
        host=UNITY_WORKSPACE_URL,
        client_id=DATABRICKS_CLIENT_ID,
        client_secret=DATABRICKS_CLIENT_SECRET
    )
    
    table_info = w.tables.get(f"{UNITY_CATALOG_NAME}.{UNITY_SCHEMA_DATA}.{UNITY_TABLE_NAME}")
    print(f"Table: {table_info.name}")
    print(f"Storage Location: {table_info.storage_location}")
    print(f"Table Format: {table_info.data_source_format}")

    A saída esperada confirma a tabela, sua localização no S3 e o formato Delta:

    Table: risk_factors
    Storage Location: s3:// aws-blog-smai-uc-bucket-ACCOUNTID/raw/risk_factors
    Table Format: DataSourceFormat.DELTA

    Etapa 3: Configuração da aplicação EMR Serverless

    O EMR Serverless é criado em uma VPC com acesso à internet. Isso é necessário porque, como o EMR Serverless não inclui suporte nativo ao Delta Lake (pelo menos até fevereiro de 2026), a aplicação Spark precisa baixar os arquivos JAR do Delta Lake do repositório Maven Central durante a inicialização. Sem acesso à internet, esse download falha e o job não consegue resolver o formato de tabela Delta.

    Etapa 4: Pré-processamento com EMR Serverless

    Um script de pré-processamento lê os fatores de risco do SEC EDGAR da tabela Delta, filtra e limpa os dados, formata o conteúdo como prompt no estilo instrução para fine-tuning e grava os resultados como tabela Delta no S3. Os parâmetros Spark necessários para habilitar o Delta Lake são configurados assim:

    jobDriver={
        'sparkSubmit': {
            'sparkSubmitParameters': ' '.join([
                '--packages io.delta:delta-spark_2.12:3.2.0',
                '--conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension',
                '--conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog'
            ])
        }

    Após a conclusão do job, os dados pré-processados são registrados como tabela Delta no schema de curadoria do Unity Catalog via SDK do Databricks, usando um SQL warehouse serverless.

    Etapa 5: Fine-tuning com SageMaker AI

    Com o dataset preparado, o job de treinamento do SageMaker AI realiza o fine-tuning do modelo Ministral-3-3B-Instruct-2512, disponível no Hugging Face. Trata-se de um modelo compacto de 3 bilhões de parâmetros da Mistral AI, otimizado para seguir instruções com bom desempenho em tarefas de raciocínio.

    O script de treinamento aplica duas técnicas de eficiência de memória: quantização em ponto flutuante de 8 bits (FP8) para reduzir o uso de memória, e Adaptação de Baixa Classificação (LoRA) para treinar apenas 1–2% dos parâmetros em vez dos 3 bilhões completos. Os dados são tokenizados com janela de contexto de 1.024 tokens. O treinamento usa uma instância ml.g5.16xlarge, e os artefatos do modelo são enviados ao bucket S3 ao final do job.

    Etapa 6: Registro do modelo no Unity Catalog

    Após o upload dos artefatos para o S3, o modelo fine-tunado é registrado no schema ML do Unity Catalog usando o MLflow gerenciado pelo Databricks via SDK. Um experimento MLflow é criado para registrar metadados de treinamento — hiperparâmetros, tabela de origem, detalhes do job — e o modelo é versionado com documentação que inclui linhagem dos dados de origem, serviço de treinamento e especificações do modelo.

    Etapa 7: Criação de linhagem de dados no Unity Catalog

    O Unity Catalog captura automaticamente a linhagem de dados para workloads executados dentro do Databricks. Para workloads externos — como jobs do EMR Serverless e jobs de treinamento do SageMaker AI — é possível adicionar metadados e linhagem através da API de Metadados Externos e da API de Linhagem Externa. Essa capacidade de “traga sua própria linhagem de dados” (atualmente em prévia pública desde abril de 2026) oferece uma visão completa da linhagem no Unity Catalog.

    Para o fluxo completo, são criados os seguintes objetos de linhagem:

    • Metadados externos do job EMR Serverless
    • Linhagem upstream: tabela bruta → job EMR Serverless
    • Linhagem downstream: job EMR Serverless → tabela pré-processada
    • Metadados externos do job de treinamento do SageMaker AI
    • Linhagem upstream: tabela pré-processada → job de treinamento
    • Linhagem downstream: job de treinamento → versão do modelo

    Com isso, é possível visualizar o grafo completo de linhagem — dos dados brutos ao modelo fine-tunado — diretamente no console do Unity Catalog.

    Limpeza dos recursos

    Após validar a solução, a AWS recomenda remover os seguintes recursos para evitar cobranças contínuas: aplicação EMR Serverless, buckets e objetos S3, roles e políticas IAM, secrets no AWS Secrets Manager, recursos de VPC e objetos do Unity Catalog (catálogo, schema, tabela e service principal).

    Conclusão

    A integração entre Databricks Unity Catalog e Amazon SageMaker AI apresentada pela AWS demonstra como é possível realizar fine-tuning de LLMs com governança contínua, sem comprometer segurança ou conformidade. Combinando o Unity Catalog para controle de acesso e linhagem, o EMR Serverless para pré-processamento escalável e o SageMaker AI para treinamento, o resultado é um pipeline de ML governado de ponta a ponta — adequado para ambientes de produção e indústrias reguladas.

    O padrão pode ser reutilizado com outros LLMs e datasets maiores, servindo como base para workloads de IA generativa em ambientes multicloud com requisitos rigorosos de auditoria.

    Fonte

    Fine-tune LLM with Databricks Unity Catalog and Amazon SageMaker AI (https://aws.amazon.com/blogs/machine-learning/fine-tune-llm-with-databricks-unity-catalog-and-amazon-sagemaker-ai/)

  • Como o EU AI Act afeta o fine-tuning de LLMs no Amazon SageMaker AI

    O que mudou com o EU AI Act em agosto de 2025

    Em 2 de agosto de 2025, o EU AI Act passou a vigorar com novos requisitos para organizações que trabalham com modelos de inteligência artificial de propósito geral — os chamados modelos GPAI (Inteligência Artificial de Propósito Geral). Uma das exigências centrais afeta diretamente quem realiza fine-tuning de grandes modelos de linguagem (LLMs, na sigla em inglês): é preciso rastrear o consumo computacional do treinamento, medido em operações de ponto flutuante, ou FLOPs (Operações de Ponto Flutuante).

    O motivo é simples: a regulação precisa distinguir quem apenas usa um modelo existente (o chamado usuário downstream) de quem efetivamente cria um novo modelo — e, portanto, assume as responsabilidades legais de um provedor GPAI. Essa distinção depende diretamente de quanto processamento computacional foi consumido durante o fine-tuning.

    A regra de um terço e os limiares de FLOPs

    O EU AI Act adota a chamada “regra de um terço”: se o fine-tuning consumir mais de um terço do processamento computacional usado no pré-treinamento original do modelo, a organização passa a ser tratada como provedora GPAI — com todas as obrigações que isso implica.

    A lógica regulatória por trás desse limite de 30% é que modificações que consomem mais de um terço do processamento original tendem a alterar significativamente o comportamento do modelo, criando efetivamente um novo modelo com riscos distintos.

    Na prática, existem três cenários e limiares aplicáveis:

    • Processamento de pré-treinamento conhecido e ≥ 10²³ FLOPs: o limiar é 30% do processamento real de pré-treinamento.
    • Processamento de pré-treinamento desconhecido ou < 10²³ FLOPs: aplica-se o limiar padrão de 3,3×10²² FLOPs.
    • Modelos de Risco Sistêmico (pré-treinamento ≥ 10²⁵ FLOPs): o limiar é 3,3×10²⁴ FLOPs (se o processamento base for desconhecido).

    Como os provedores de modelos raramente publicam os FLOPs exatos de pré-treinamento, a maioria das organizações se enquadra no segundo cenário — o limiar padrão de 3,3×10²² FLOPs.

    Para orientar a tomada de decisão, vale seguir este fluxo:

    • Você conhece os FLOPs de pré-treinamento do modelo base? Se não, aplique diretamente o limiar padrão de 3,3×10²² FLOPs.
    • Se sim: o pré-treinamento é ≥ 10²⁵ FLOPs? Use o limiar de Risco Sistêmico (3,3×10²⁴ FLOPs).
    • Se não: o pré-treinamento é ≥ 10²³ FLOPs? Use 30% do valor real.
    • Se também não: aplique o limiar padrão de 3,3×10²² FLOPs.

    Como exemplo prático: o fine-tuning do Llama-3-70B — cujo pré-treinamento estimado é de pelo menos 1,5×10²⁴ FLOPs — define o limiar em 4,5×10²³ FLOPs. Superar esse valor significa assumir as obrigações completas de provedor GPAI, que incluem divulgar detalhes da arquitetura e do processo de treinamento, publicar a lista de fontes de dados utilizadas e demonstrar conformidade com a legislação europeia de direitos autorais. O descumprimento pode resultar em multas de até €15 milhões ou 3% do faturamento global anual, o que for maior.

    Por que o rastreamento manual de FLOPs é um problema

    Calcular FLOPs manualmente apresenta três desafios concretos. Primeiro, as fórmulas são complexas e variam dependendo do método de treinamento: fine-tuning completo ou métodos eficientes em parâmetros, como LoRA (Adaptação de Baixo Posto), que atualizam apenas um subconjunto dos parâmetros do modelo. Segundo, determinar o limiar aplicável é difícil porque os valores de processamento de pré-treinamento raramente são publicados pelos provedores. Terceiro, manter um histórico de auditoria — um registro permanente das métricas de conformidade para revisão regulatória — ao longo de múltiplos jobs de treinamento gera sobrecarga operacional considerável.

    Erros nesse cálculo podem mudar completamente a classificação regulatória da organização, com consequências legais e financeiras significativas.

    O Fine-Tuning FLOPs Meter: solução open source da AWS

    Para resolver esses desafios, a AWS disponibilizou o toolkit open source Fine-Tuning FLOPs Meter, integrado ao Amazon SageMaker AI. A ferramenta está disponível no repositório Amazon SageMaker Generative AI recipes e se integra a fluxos de treinamento baseados em Hugging Face.

    O toolkit cobre três estágios do ciclo de fine-tuning:

    • Estimativa pré-treinamento (opcional): um utilitário independente permite comparar os FLOPs esperados entre diferentes métodos (LoRA, Spectrum e fine-tuning completo) antes de lançar o job. Útil para planejamento e para verificar o quão próxima uma configuração está do limiar regulatório.
    • Rastreamento em tempo real (funcionalidade principal): usa um TrainerCallback do Hugging Face para calcular FLOPs durante o treinamento, combinando análise baseada na arquitetura do modelo e monitoramento de hardware via NVML (Biblioteca de Gerenciamento NVIDIA).
    • Trilha de auditoria pós-treinamento: ao final do treinamento, gera automaticamente um arquivo JSON com as métricas completas de conformidade, que pode ser persistido no Amazon Simple Storage Service (Amazon S3) ou no Amazon DynamoDB.

    A ativação do rastreamento exige apenas uma linha no arquivo de configuração YAML da receita:

    compute_flops: true

    Como os FLOPs são calculados

    O toolkit implementa dois métodos de cálculo, ambos executados automaticamente:

    Método analítico (baseado em arquitetura)

    É o método primário para fins de conformidade regulatória. O EU AI Act (Seção A.2.1) descreve a fórmula padrão para transformers densos:

    C ≈ 6 × P × D

    Onde P é o número de parâmetros e D é o número de tokens de treinamento. Essa fórmula assume fine-tuning completo. Para métodos eficientes em parâmetros como LoRA ou Spectrum, o toolkit usa uma fórmula aprimorada:

    F_ft = (4 × N_total + 2 × N_trainable) × tokens_processed

    O detalhamento é o seguinte: 4 × N_total representa o passo forward (2×) mais o cálculo do gradiente no passo backward por todas as camadas (2×), incluindo as congeladas; 2 × N_trainable representa o cálculo do gradiente apenas para os pesos treináveis. Para fine-tuning completo, onde todos os parâmetros são treináveis, a fórmula se reduz a 6 × N × D, equivalente à fórmula da regulação europeia.

    Método baseado em hardware (limite superior conservador)

    Usa monitoramento de GPU via NVML com a fórmula:

    C = N_gpus × L × H × U

    Onde N_gpus é o número de GPUs, L é a duração do treinamento em segundos, H é o desempenho teórico de pico (FLOPs) e U é a utilização. O toolkit usa U = 1.0 (100% de utilização) para produzir um limite superior conservador.

    Lógica de limiar

    A função determine_compliance_threshold() implementa a lógica do EU AI Act:

    EU_AI_ACT_GPAI_THRESHOLD = 1e23 # 10²³ FLOPs
    EU_AI_ACT_DEFAULT_THRESHOLD = 3.3e22 # Um terço de 10²³
    
    if pretrain_flops is None or pretrain_flops < EU_AI_ACT_GPAI_THRESHOLD:
        threshold = EU_AI_ACT_DEFAULT_THRESHOLD # "default_3.3e22"
    else:
        threshold = 0.30 * pretrain_flops # "30pct_of_actual_pretraining"

    Integração com jobs de treinamento no SageMaker AI

    O FLOPs Meter funciona como um TrainerCallback do Hugging Face. Ao iniciar o treinamento, o script verifica o flag compute_flops e, se ativado, inicializa o FlopsMeterCallback com a contagem de parâmetros do modelo e a variável de ambiente opcional PRETRAIN_FLOPS. Um TokenCountingSFTTrainer customizado substitui o SFTTrainer padrão para contar tokens não-padding a cada passo de treinamento.

    Veja o trecho de código de inicialização do callback:

    n_total = sum(p.numel() for p in model.parameters())
    n_trainable = sum(p.numel() for p in model.parameters() if p.requires_grad)
    
    flops_cb = FlopsMeterCallback(
        pad_token_id=tokenizer.pad_token_id,
        pretrain_flops=pretrain_flops,  # from PRETRAIN_FLOPS env var
        sample_nvml=True,
        n_total=n_total,
        n_trainable=n_trainable,
        model_name=model_args.model_name_or_path,
        num_epochs=training_args.num_train_epochs,
    )

    Ao final do treinamento, o callback grava um arquivo flops_meter.json em /opt/ml/output/. O pipeline então faz o upload para o Amazon S3 e persiste os dados no Amazon DynamoDB, criando uma trilha de auditoria permanente.

    Exemplo prático: Llama-3.2-3B no SageMaker AI

    O walkthrough demonstrado pela AWS utiliza o modelo meta-llama/Llama-3.2-3B-Instruct (3,21 bilhões de parâmetros). Como a Meta não publicou os FLOPs exatos de pré-treinamento desse modelo, o caminho do limiar padrão se aplica automaticamente: 3,3×10²² FLOPs.

    A configuração de receita para Llama-3.2-3B com LoRA e rastreamento de FLOPs ativado é:

    model_name_or_path: meta-llama/Llama-3.2-3B-Instruct
    dataset_id_or_path: your-dataset.jsonl
    use_peft: true
    compute_flops: true
    per_device_train_batch_size: 8
    num_train_epochs: 10
    learning_rate: 2e-5
    peft_config:
      r: 8
      lora_alpha: 16
      target_modules: ["q_proj", "v_proj"]

    Para lançar o job de treinamento via SDK Python do SageMaker:

    from sagemaker.modules.configs import Compute, SourceCode
    from sagemaker.modules.train import ModelTrainer
    
    training_instance_type = "ml.g5.4xlarge"
    
    pytorch_image_uri = sagemaker.image_uris.retrieve(
        framework="pytorch",
        region=sess.boto_session.region_name,
        version="2.7.1",
        instance_type=training_instance_type,
        image_scope="training",
    )
    
    source_code = SourceCode(
        source_dir="./sagemaker_code",
        command="bash sm_accelerate_train.sh --config hf_recipes/meta-llama/Llama-3.2-3B-Instruct--vanilla-peft-qlora.yaml",
    )
    
    compute = Compute(
        instance_type=training_instance_type,
        instance_count=1,
        volume_size_in_gb=300,
    )
    
    model_trainer = ModelTrainer(
        training_image=pytorch_image_uri,
        source_code=source_code,
        compute=compute,
        role=role,
        environment={
            "FLOPS_METER_NVML": "1",
        },
    )
    
    model_trainer.train()

    Como os FLOPs de pré-treinamento não são conhecidos para esse modelo, a variável de ambiente PRETRAIN_FLOPS é omitida e o limiar padrão é aplicado automaticamente.

    Documentação de conformidade gerada

    Ao término do treinamento, o toolkit gera um arquivo flops_meter.json com as métricas necessárias para documentação regulatória:

    {
      "Flops_architecture": "1.45e+13",
      "Flops_hardware": "1.52e+15",
      "Flops_original": null,
      "N_total": 1585294704,
      "N_trainable": 680094720,
      "threshold_type": "default_3.3e22",
      "threshold_value": "3.30e+22",
      "pct_of_pretrain": 0.000000439,
      "exceeds_30pct": false,
      "tokens_processed": 2150,
      "model_name": "meta-llama/Llama-3.2-3B-Instruct",
      "num_epochs": 10,
      "training_duration_seconds": 245.30,
      "gpu_name": "NVIDIA A10G",
      "instance_type": "ml.g5.4xlarge",
      "training_job_name": "pipelines-abc123-TrainingStep-xyz789",
      "recipe_config": "hf_recipes/meta-llama/Llama-3.2-3B-Instruct--vanilla-peft-qlora.yaml"
    }

    O campo Flops_architecture deve ser usado como métrica primária de conformidade — ele reflete com precisão a configuração real do treinamento. O campo Flops_hardware fornece um limite superior conservador, útil como margem de segurança para relatórios mais cautelosos. O campo exceeds_30pct é o indicador booleano para avaliação rápida de conformidade.

    O que fazer se o limiar for ultrapassado

    Se o relatório de conformidade mostrar exceeds_30pct: true, a organização é classificada como provedora GPAI sob o EU AI Act. Os próximos passos incluem: documentar a arquitetura do modelo e o processo de treinamento; preparar uma lista pública das fontes de dados de treinamento; demonstrar conformidade com a legislação europeia de direitos autorais; e considerar a consulta a assessoria jurídica especializada em regulações de IA da União Europeia.

    Vale notar que existem obrigações adicionais caso o modelo GPAI seja classificado como de Risco Sistêmico. Uma alternativa técnica é reduzir o escopo do treinamento — menos épocas, dataset menor ou migração para LoRA — para permanecer abaixo do limiar.

    Escala para cargas de trabalho em produção

    O exemplo de demonstração utilizou um dataset pequeno (2.150 tokens). Em produção, o processamento típico envolve milhões de tokens. Para referência: o fine-tuning do Llama-3.2-3B em 1 milhão de tokens com LoRA resulta em aproximadamente 6,7×10¹⁸ FLOPs — bem abaixo do limiar de 3,3×10²². Já o fine-tuning completo no mesmo dataset consome aproximadamente 1,9×10¹⁹ FLOPs, aproximando-se mais do limiar.

    Como regra prática, a preocupação com conformidade começa quando os FLOPs atingem 10²¹ ou mais — cerca de 3% do limiar padrão. A partir desse ponto, recomenda-se executar o utilitário de estimativa pré-treinamento antes de cada job. Para a maioria dos jobs de fine-tuning com LoRA em modelos abaixo de 10 bilhões de parâmetros, o resultado permanece bem abaixo do limiar mesmo com milhões de tokens de treinamento.

    Fonte

    Navigating EU AI Act requirements for LLM fine-tuning on Amazon SageMaker AI (https://aws.amazon.com/blogs/machine-learning/navigating-eu-ai-act-requirements-for-llm-fine-tuning-on-amazon-sagemaker-ai/)