Category: Uncategorized

  • Estenda o Gerador de SBOM do Amazon Inspector com Plugins

    O que é o Amazon Inspector SBOM Generator?

    O Amazon Inspector é um serviço de gerenciamento de vulnerabilidades que escaneia continuamente workloads da Amazon Web Services (AWS) em busca de falhas de segurança em software. O motor por trás dessa capacidade é o Amazon Inspector SBOM Generator — conhecido como inspector-sbomgen — uma ferramenta de linha de comando independente que gera uma Lista de Materiais de Software (SBOM — Software Bill of Materials) a partir de imagens de contêiner, diretórios, arquivos compactados, sistemas locais, binários compilados e muito mais.

    Ao longo dos últimos dois anos, a AWS expandiu a cobertura do inspector-sbomgen para dezenas de ecossistemas de linguagens de programação, sistemas operacionais e aplicações amplamente utilizadas. Agora, a empresa anuncia uma novidade relevante para quem constrói com essa ferramenta: um sistema de plugins para criação de coletores de pacotes personalizados.

    Por que a AWS construiu um sistema de plugins?

    Ecossistemas de software são dinâmicos por natureza. Novos gerenciadores de pacotes, formatos de lockfile e aplicações surgem constantemente — muitas vezes com pouco escrutínio de segurança. Isso deixa equipes de segurança com uma lacuna de visibilidade: workloads em produção rodando software que as ferramentas de SBOM ainda não reconhecem.

    Antes dos plugins, o único caminho para suportar um novo ecossistema era abrir uma solicitação de funcionalidade e aguardar que a equipe do inspector-sbomgen integrasse o ecossistema e publicasse uma nova versão. O sistema de plugins muda esse cenário completamente.

    Com plugins, é possível:

    • Integrar ecossistemas não suportados nativamente: novos ecossistemas open source, formatos de pacote de nicho e ferramentas internas ou proprietárias podem ser inventariados sem modificar o inspector-sbomgen.
    • Prototipar detecção rapidamente: o sistema foi projetado para ser amigável tanto para desenvolvedores quanto para assistentes de codificação com IA. Os plugins são escritos em Lua, carregados em tempo de execução e não exigem toolchain Go nem compilação.
    • Construir sobre uma base estável: a API de plugins abstrai as diferenças entre tipos de artefatos, então a lógica de detecção é escrita uma única vez e funciona em imagens de contêiner, arquivos compactados, sistemas locais e mais.

    Internamente, a AWS já utilizou o sistema de plugins para acelerar a entrega de novos ecossistemas. Na versão 1.13, mais de 20 ecossistemas que antes eram implementados em Go — incluindo Apache Tomcat, NGINX, MySQL, Redis, WordPress e a toolchain do OpenSSH — foram convertidos para plugins embutidos no binário. A mesma versão também adicionou mais de dez ecossistemas totalmente novos como plugins, incluindo Apache Cassandra, Apache Struts, Conda, pacotes Swift e coletores de agentes de IA (Amazon Q Developer, Kiro CLI, Claude Code, GitHub Copilot e Ollama).

    Como os plugins do inspector-sbomgen funcionam

    Os plugins seguem um pipeline de duas etapas:

    • Descoberta (Discovery): varre o sistema de arquivos do artefato para identificar arquivos que contêm metadados de pacotes instalados.
    • Coleta (Collection): abre cada arquivo descoberto, analisa seu conteúdo e publica os resultados no SBOM.

    Por baixo dos panos, um barramento de eventos conecta os plugins de descoberta e coleta. Os plugins de descoberta publicam eventos listando os arquivos encontrados, e um ou mais plugins de coleta se inscrevem nesses eventos para disparar a coleta de pacotes. Desenvolvedores familiarizados com padrões de design vão reconhecer esse comportamento como o padrão observer.

    Esse desacoplamento permite que um único plugin de descoberta alimente múltiplos coletores — por exemplo, um extraindo metadados de pacotes, outro buscando segredos e outro verificando políticas — tudo a partir da mesma lista de arquivos, sem precisar percorrer o sistema de arquivos do artefato novamente.

    Criando seu primeiro plugin em 5 minutos

    O inspector-sbomgen facilita a criação de um ambiente de plugin. O comando plugin new cria um novo workspace de plugin, e a flag --with-example popula o workspace com um par de plugins de descoberta e coleta prontos para execução imediata.

    inspector-sbomgen plugin new --with-example

    Após invocar o comando, será solicitado um nome para o plugin e um diretório para o workspace. É possível fornecer valores personalizados ou usar os valores padrão:

    Plugin name (identifies the software ecosystem your plugin will inventory, e.g. debian-dpkg, rhel-rpm, python-pip, cmake) [my-custom-ecosystem]: <enter>
    Project directory [my-sbomgen-plugins]: <enter>
    Created plugin "my-custom-ecosystem" in my-sbomgen-plugins/

    Também é possível pular os prompts interativos especificando o nome do plugin e o diretório diretamente via argumentos de Interface de Linha de Comando (CLI — Command Line Interface):

    inspector-sbomgen plugin new \
      --with-example \
      --name my-custom-ecosystem \
      --path my-sbomgen-plugins

    Após criar o workspace, o inspector-sbomgen exibe uma tela de próximos passos que guia desenvolvedores e assistentes de IA aos arquivos que precisam ser modificados e à documentação de suporte:

    Next steps:
    
      Get started:
        1. Open plugin folder in a code editor (VS Code recommended)
        2. Add test files that your plugin will discover and parse (e.g., config files, lockfiles, binaries, etc.):
           my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata/
    
      Develop:
        3. Edit discovery:   my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/init.lua
        4. Edit collection:  my-sbomgen-plugins/collection/cross-platform/extra-ecosystems/my-custom-ecosystem/init.lua
    
      Test:
        5. Write unit tests: my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/init_test.lua
        6. Run unit tests:   inspector-sbomgen plugin test --path my-sbomgen-plugins
    
      Deploy:
        7. Distribute your plugin directory wherever you run inspector-sbomgen:
           inspector-sbomgen <arguments> --plugin-dir /path/to/my-sbomgen-plugins
           Example:
           inspector-sbomgen container --image alpine:latest -o /tmp/sbom.json --plugin-dir /path/to/my-sbomgen-plugins
    
    For code completion, install the VS Code Lua language server extension:
      https://luals.github.io/#vscode-install
    
    For more information:
      - Plugin guide:    my-sbomgen-plugins/docs/sbomgen-plugin-developer-guide.md
      - Testing guide:   my-sbomgen-plugins/docs/sbomgen-plugin-testing-guide.md
      - API reference:   my-sbomgen-plugins/docs/sbomgen-plugin-api-reference.md
      - Documentation:   https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html

    A estrutura do workspace gerado é a seguinte:

    tree my-sbomgen-plugins
    ├── AGENTS.md
    ├── collection
    │   └── cross-platform
    │       └── extra-ecosystems
    │           └── my-custom-ecosystem
    │               └── init.lua
    ├── discovery
    │   └── cross-platform
    │       └── extra-ecosystems
    │           └── my-custom-ecosystem
    │               ├── _testdata
    │               │   ├── empty
    │               │   └── example.lock
    │               ├── init_test.lua
    │               └── init.lua
    ├── docs
    │   ├── sbomgen-plugin-api-reference.md
    │   ├── sbomgen-plugin-developer-guide.md
    │   └── sbomgen-plugin-testing-guide.md
    ├── library
    │   └── sbomgen.lua
    └── README.md

    O projeto gerado inclui um par funcional de plugins de descoberta e coleta, testes unitários com fixtures em _testdata/, integração com o Ambiente de Desenvolvimento Integrado (IDE — Integrated Development Environment) e uma cópia local da documentação do desenvolvedor. O scaffolding é deliberadamente conciso e completo, com comentários claros em cada arquivo explicando o que cada função faz.

    Exemplo de plugin de descoberta

    O plugin de exemplo inventaria um arquivo fictício example.lock com o seguinte conteúdo:

    my-package-alpha==1.0.0
    my-package-beta==2.3.1
    my-package-gamma==0.9.5

    O plugin de descoberta sabe como localizar instâncias de example.lock no sistema de arquivos do artefato:

    -- my-custom-ecosystem discovery plugin
    -- Discovers example.lock files in the artifact file list.
    function discover()
        return sbomgen.find_files_by_name({"example.lock"})
    end

    Exemplo de plugin de coleta

    O plugin de coleta sabe como analisar o conteúdo de example.lock e publicar os pacotes encontrados no SBOM de saída:

    -- my-custom-ecosystem collection plugin
    -- Parses example.lock files and extracts package name and version.
    function collect(file_path)
        local content = sbomgen.read_file(file_path)
        if content == nil then
            return
        end
        for line in content:gmatch("[^\n]+") do
            local name, ver = line:match("^(.+)==(.+)$")
            if name and ver then
                sbomgen.push_package({
                    name           = name,
                    version        = ver,
                    purl_type      = "generic",
                    namespace      = "my-custom-ecosystem",
                    component_type = sbomgen.component_types.APPLICATION,
                })
            end
        end
    end

    Executando os testes

    Os plugins incluem um framework de testes integrado para validar a lógica antes de escanear um artefato real. Os testes são escritos em Lua, ficam ao lado do plugin em init_test.lua e referenciam dados de fixture em _testdata/:

    function test_discovers_packages()
        local result = testing.scan_directory("_testdata")
        testing.assert_equals(3, #result.findings)
        testing.assert_equals("my-package-alpha", result.findings[1].name)
        testing.assert_equals("1.0.0", result.findings[1].version)
    end
    
    function test_no_findings_for_empty_directory()
        local result = testing.scan_directory("_testdata/empty")
        testing.assert_equals(0, #result.findings)
    end

    Execute os testes com o seguinte comando:

    inspector-sbomgen plugin test --path my-sbomgen-plugins -v
    
    === RUN   my-custom-ecosystem/discovery/init_test/test_discovers_packages
    --- PASS: my-custom-ecosystem/discovery/init_test/test_discovers_packages (0.04s)
    === RUN   my-custom-ecosystem/discovery/init_test/test_no_findings_for_empty_directory
    --- PASS: my-custom-ecosystem/discovery/init_test/test_no_findings_for_empty_directory (0.04s)
    ok  2 tests passed

    Esse é o ciclo de desenvolvimento mais ágil possível: sem toolchain Go, sem recompilação, sem inicialização de contêiner. Escreva o teste, execute, itere.

    Escaneando um artefato real

    Para que os plugins produzam resultados, o inspector-sbomgen precisa de um artefato que contenha os arquivos que o plugin procura. Para o plugin de exemplo, qualquer diretório com um arquivo example.lock funciona:

    inspector-sbomgen directory \
      --plugin-dir ./my-sbomgen-plugins \
      --path ./my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata \
      -o sbom.json

    A flag --plugin-dir indica ao inspector-sbomgen onde carregar os plugins Lua. O SBOM resultante contém um componente CycloneDX para cada um dos três pacotes do example.lock, por exemplo:

    {
      "bom-ref": "comp-2",
      "type": "application",
      "name": "my-package-alpha",
      "version": "1.0.0",
      "scope": "optional",
      "purl": "pkg:generic/my-sbomgen-plugin/my-package-alpha@1.0.0",
      "properties": [
        {
          "name": "amazon:inspector:sbom_generator:source_path",
          "value": "./my-sbomgen-plugins/example.lock"
        }
      ]
    }

    Todo componente gerado por plugin carrega uma propriedade amazon:inspector:sbom_generator:source_path que registra o arquivo de origem, permitindo rastrear cada componente até o artefato que o produziu.

    Escaneamento de vulnerabilidades com o Amazon Inspector

    Os resultados gerados por plugins são componentes SBOM de primeira classe e funcionam com qualquer consumidor downstream que leia SBOMs CycloneDX, incluindo o próprio Amazon Inspector. Para enviar um SBOM ao Amazon Inspector para análise de vulnerabilidades, basta adicionar a flag --scan-sbom (requer uma conta AWS ativa):

    inspector-sbomgen directory \
      --path ./my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata \
      --plugin-dir ./my-sbomgen-plugins \
      --scan-sbom \
      --aws-profile your_profile \
      --aws-region your_region \
      -o /tmp/sbom.json

    Um ponto importante: plugins podem inventariar ecossistemas arbitrários, mas o Amazon Inspector só consegue reportar vulnerabilidades para componentes cujos ecossistemas já estão em seus feeds de avisos. Quando um componente de ecossistema ainda não suportado é enviado, o Inspector retorna o componente com a propriedade Component skipped: no supported rules found. — comportamento esperado, não um erro. O SBOM ainda é gerado corretamente e o componente continua sendo rastreado. Quando o Inspector adicionar cobertura para aquele ecossistema, o mesmo SBOM passará a produzir resultados de vulnerabilidades automaticamente, sem nenhuma alteração no plugin.

    Suporte a IDE de primeira classe

    Todo projeto de plugin gerado com o comando plugin new inclui um arquivo library/sbomgen.lua e um .vscode/settings.json que se integra automaticamente à extensão sumneko.lua do Servidor de Linguagem Lua para o VS Code. Com isso, cada função sbomgen.* passa a ter:

    • Dicas de parâmetros com tipos.
    • Documentação ao passar o cursor.
    • Autocompletar para constantes (sbomgen.component_types.*, sbomgen.groups.*, sbomgen.platform.*).
    • Verificação de tipos nas chamadas de função.
    • Avisos inline quando campos obrigatórios estão ausentes em push_package().

    O mesmo arquivo de definição torna o desenvolvimento de plugins eficiente com assistentes de codificação por IA, pois os tipos e a documentação estão embutidos em um formato que essas ferramentas conseguem ler.

    Modelo de segurança dos plugins

    Como os plugins executam código real dentro do mesmo processo do inspector-sbomgen, o ambiente de execução foi projetado para manter esse código estável e endurecido do ponto de vista de segurança. Cada plugin Lua roda em um sandbox isolado, com acesso apenas a um subconjunto restrito da biblioteca padrão Lua:

    • Sem acesso direto ao sistema de arquivos: a biblioteca io do Lua não é carregada. Todas as operações de arquivo passam pelas funções sbomgen.*.
    • Sem execução de subprocessos ou mutação de ambiente: a biblioteca os do Lua é bloqueada, impedindo que plugins iniciem processos, modifiquem variáveis de ambiente ou toquem em arquivos fora do artefato.
    • Sem introspecção da Máquina Virtual (VM — Virtual Machine): a biblioteca debug do Lua é bloqueada.
    • Sem carregamento irrestrito de código: dofile, loadfile e loadstring são removidos. O require() está disponível, mas restrito à árvore de diretórios do próprio plugin.

    Se um plugin gerar um erro Lua não tratado, o inspector-sbomgen registra um aviso e continua com o próximo arquivo ou plugin — um plugin com falha não impede os demais de rodar. Além disso, plugins nunca sobrescrevem os coletores internos do inspector-sbomgen: todo plugin precisa declarar um nome único, e se um plugin personalizado usar um nome já reservado por um plugin oficial, ele é ignorado com um aviso. Os plugins internos sempre têm precedência.

    Próximos passos

    Para começar a construir seus próprios plugins, a AWS recomenda:

    • Instalar a versão mais recente do inspector-sbomgen pelo guia do usuário do Amazon Inspector.
    • Executar inspector-sbomgen plugin new --with-example e seguir os prompts.
    • Rodar inspector-sbomgen plugin test --path ./my-sbomgen-plugins -v para ver os testes de exemplo passando.
    • Substituir a lógica de exemplo pela detecção do seu próprio ecossistema.

    A documentação de referência completa cobre todas as funções, constantes e comandos em profundidade:

    Conclusão

    O sistema de plugins do inspector-sbomgen foi projetado para encurtar ao máximo o caminho entre uma ideia e um SBOM funcional — seja para adicionar suporte a um formato interno de lockfile, prototipar detecção para um novo ecossistema open source ou substituir um scanner caseiro por algo que toda a organização possa executar em escala. Com Lua, sandbox seguro, suporte a IDE e integração nativa com o Amazon Inspector, a AWS entrega uma extensibilidade real sem abrir mão da segurança e da previsibilidade da ferramenta.

    Fonte

    Extend Amazon Inspector SBOM Generator with Plugins (https://aws.amazon.com/blogs/security/extend-amazon-inspector-sbom-generator-with-plugins/)

  • Autentique Agentes com Private Key JWT usando o Amazon Bedrock AgentCore Identity

    O que mudou no AgentCore Identity

    A AWS anunciou que o Amazon Bedrock AgentCore Identity agora suporta autenticação de cliente via Token Web JSON (JWT) de Chave Privada — o chamado Private Key JWT. Essa novidade muda a forma como agentes de IA se autenticam perante provedores de identidade externos, eliminando a necessidade de compartilhar segredos OAuth 2.0.

    Em vez de depender de um segredo de cliente compartilhado, o agente apresenta uma asserção JWT assinada digitalmente. A chave pública fica registrada no provedor de identidade, enquanto a chave privada correspondente permanece protegida dentro do AWS Key Management Service (KMS). O próprio AgentCore Identity solicita ao KMS que assine a asserção — sem que a chave privada precise sair do serviço em nenhum momento.

    Como o fluxo de autenticação funciona

    Para entender a mecânica, considere um agente de suporte ao cliente que precisa consultar o histórico de pedidos de um usuário em uma API interna protegida por um provedor de identidade. O fluxo acontece assim:

    • O agente chama GetResourceOauth2Token no AgentCore Identity para solicitar um token de acesso à API de pedidos.
    • O AgentCore Identity lê o ID do cliente, o ARN da chave KMS e o algoritmo de assinatura configurados no provedor de credenciais.
    • O serviço monta uma asserção JWT de curta duração com os atributos (claims) necessários e chama kms:Sign usando o algoritmo configurado — RS256, PS256 ou ES256.
    • O KMS assina a asserção e devolve apenas a assinatura. A chave privada nunca sai do KMS.
    • O AgentCore Identity envia a asserção assinada ao endpoint de token do provedor de identidade com grant_type=client_credentials e client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer.
    • O provedor de identidade verifica a assinatura usando a chave pública registrada e retorna um token de acesso.
    • O agente usa esse token para chamar a API de pedidos e receber os dados do cliente.

    Fluxos de concessão suportados

    A autenticação via Private Key JWT funciona com três modelos de fluxo OAuth diferentes, cobrindo os principais cenários de uso de agentes em produção.

    Máquina para máquina (M2M)

    Neste modelo, o agente age por conta própria, sem representar nenhum usuário humano. É o caso de jobs em background que sincronizam dados ou serviços que qualquer instância do agente pode acessar independentemente de quem o acionou. O token representa a identidade da aplicação ou do agente. Utiliza o fluxo client_credentials e o subject do token é o próprio cliente.

    Em nome de um usuário (On-Behalf-Of — OBO)

    Aqui, o agente age em nome de um usuário específico que já está autenticado. Existe um token de entrada do usuário, e o AgentCore Identity o troca por um token downstream que representa esse usuário — mantendo as permissões e a identidade dele na cadeia de chamadas. Dependendo do provedor de identidade, é possível usar a troca de token do RFC 8693 ou a concessão de autorização JWT do RFC 7523.

    Acesso delegado pelo usuário

    Neste cenário, não há token de entrada para trocar. O usuário passa por um fluxo interativo de login e consentimento — o fluxo de código de autorização OAuth de três pernas — aprovando explicitamente o que o agente pode fazer. Após o consentimento, o agente recebe um token que representa o usuário. Utiliza o fluxo authorization_code.

    Pré-requisitos

    Para seguir a configuração, a AWS indica que você precisa de:

    • Uma conta AWS com acesso ao Console de Gerenciamento para o KMS, o AgentCore e o AWS CloudTrail.
    • Um tenant no seu provedor de identidade onde seja possível registrar uma chave pública para uma aplicação.
    • URL de descoberta e ID de cliente do provedor de identidade.
    • Confirmação do algoritmo de assinatura exigido pelo provedor e verificação de que ele é suportado pelo KMS e pelo AgentCore Identity.
    • Permissões IAM: kms:CreateKey e kms:PutKeyPolicy para criar a chave; kms:GetPublicKey para exportar a chave pública; bedrock-agentcore-control:CreateOauth2CredentialProvider para criar o provedor de credenciais. Se o provedor de identidade gerar o par de chaves e fornecer o material da chave privada, também serão necessárias kms:GetParametersForImport e kms:ImportKeyMaterial para importar a chave no KMS.

    Passo a passo: configurando o Private Key JWT

    Passo 1 — Criar a chave de assinatura no KMS e registrar a chave pública

    O primeiro passo é criar uma chave KMS assimétrica que o AgentCore Identity usará para assinar as asserções JWT. Abra o console do AWS KMS na mesma região AWS do seu provedor de credenciais. Em Customer managed keys, escolha Create key e configure:

    • Key type: Asymmetric
    • Key usage: Sign and verify
    • Key spec: compatível com o algoritmo de assinatura desejado (o exemplo da AWS usa ECC_NIST_P256 com o algoritmo ES256)

    Na etapa de política da chave, adicione o seguinte statement para conceder ao AgentCore Identity permissão de uso — substituindo 111122223333 pelo ID da sua conta AWS e <region> pela região em uso. A condição kms:ViaService garante que a chave só pode ser usada quando a requisição vier do AgentCore Identity:

    {
      "Id": "BedrockAgentCoreIdentityPrivateKeyJwtAccess",
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
          },
          "Action": [
            "kms:Sign",
            "kms:DescribeKey"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
            },
            "StringLike": {
              "kms:ViaService": "bedrock-agentcore-identity.<region>.amazonaws.com"
            }
          }
        }
      ]
    }

    Após criar a chave, anote o ARN — ele será necessário na configuração do provedor de credenciais. Em seguida, acesse a aba Public key da chave e faça o download da chave pública. O KMS fornece a chave em formato DER. Converta-a para o formato exigido pelo seu provedor de identidade (por exemplo, um certificado X.509 para o Microsoft Entra ID ou uma JSON Web Key para o Okta) e registre-a na sua aplicação.

    Passo 2 — Adicionar um cliente OAuth no AgentCore Identity

    Abra o console do Amazon Bedrock AgentCore. No painel de navegação esquerdo, em Build, acesse Identity. Na seção Outbound Auth, escolha Add Outbound Auth e depois Add OAuth client.

    Passo 3 — Selecionar Private Key JWT como método de autenticação

    Na página de adição do cliente OAuth, na seção Provider configurations, configure o Configuration type como Discovery URL para que o AgentCore Identity recupere automaticamente a configuração do provedor. Em Client authentication method, selecione Private key JWT.

    Passo 4 — Informar URL de descoberta, ID do cliente, chave KMS e algoritmo

    • Discovery URL: a URL onde o provedor publica sua configuração OpenID Connect (terminando em .well-known/openid-configuration).
    • Client ID: o identificador do cliente registrado no provedor de identidade.
    • KMS key: o ARN da chave KMS assimétrica criada anteriormente. A chave deve ter sido criada com uso SIGN_VERIFY e estar na mesma região. Também é possível usar uma chave de outra conta na mesma região informando o ARN diretamente — nesse caso, são necessárias permissões adicionais em ambas as contas. Veja a documentação sobre como permitir que usuários de outras contas usem uma chave KMS.
    • Signing algorithm: o algoritmo exigido pelo seu provedor de identidade, compatível com o key spec da chave KMS.

    Passo 5 — (Opcional) Adicionar claims customizados

    Se o seu provedor de identidade exigir claims adicionais na asserção JWT, é possível adicioná-los nesta etapa. Em Header claims, adicione claims de cabeçalho específicos do provedor (como um identificador de chave). As chaves reservadas alg e typ não podem ser definidas. Em Payload claims, adicione claims de payload específicos do provedor. As chaves reservadas iss, sub, jti, exp, iat e nbf não podem ser definidas. Por fim, clique em Add OAuth Client e confirme que o provedor de credenciais aparece na lista de Outbound Auth.

    Auditoria com CloudTrail

    Toda vez que um agente usa o provedor de credenciais para buscar um token, as operações ficam registradas no AWS CloudTrail. Os principais eventos que você verá são:

    GetWorkloadAccessToken (fonte: bedrock-agentcore.amazonaws.com) — o agente obtém seu token de identidade de workload. O token retornado é ocultado por razões de segurança:

    {
      "eventSource": "bedrock-agentcore.amazonaws.com",
      "eventName": "GetWorkloadAccessToken",
      "requestParameters": {
        "workloadName": "my-agent-workload"
      },
      "responseElements": {
        "workloadAccessToken": "HIDDEN_DUE_TO_SECURITY_REASONS"
      },
      "resources": [
        {
          "accountId": "111122223333",
          "type": "AWS::BedrockAgentCore::WorkloadIdentity",
          "ARN": "arn:aws:bedrock-agentcore:us-east-1:111122223333:workload-identity-directory/default/workload-identity/my-agent-workload"
        }
      ]
    }

    GetResourceOauth2Token (fonte: bedrock-agentcore.amazonaws.com) — o agente solicita um token de acesso para o recurso downstream. Os parâmetros mostram qual provedor de credenciais, escopos e fluxo OAuth foram usados:

    {
      "eventSource": "bedrock-agentcore.amazonaws.com",
      "eventName": "GetResourceOauth2Token",
      "requestParameters": {
        "workloadIdentityToken": "HIDDEN_DUE_TO_SECURITY_REASONS",
        "resourceCredentialProviderName": "my-private-key-jwt-provider",
        "scopes": [
          "https://graph.microsoft.com/.default"
        ],
        "oauth2Flow": "M2M"
      },
      "resources": [
        {
          "accountId": "111122223333",
          "type": "AWS::BedrockAgentCore::OAuth2CredentialProvider",
          "ARN": "arn:aws:bedrock-agentcore:us-east-1:111122223333:token-vault/default/oauth2credentialprovider/my-private-key-jwt-provider"
        }
      ]
    }

    Sign (fonte: kms.amazonaws.com) — o AgentCore Identity assina a asserção JWT com a chave KMS. Este é o evento que comprova o funcionamento do Private Key JWT: os campos userIdentity.invokedBy, sourceIPAddress e userAgent são todos bedrock-agentcore.amazonaws.com, confirmando que foi o AgentCore Identity quem chamou o kms:Sign. Note que o evento registra o nome do algoritmo de assinatura do KMS, não o nome do algoritmo JWT configurado:

    {
      "eventSource": "kms.amazonaws.com",
      "eventName": "Sign",
      "userIdentity": {
        "invokedBy": "bedrock-agentcore.amazonaws.com"
      },
      "sourceIPAddress": "bedrock-agentcore.amazonaws.com",
      "userAgent": "bedrock-agentcore.amazonaws.com",
      "requestParameters": {
        "signingAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "messageType": "DIGEST"
      },
      "responseElements": null,
      "readOnly": true,
      "managementEvent": true,
      "resources": [
        {
          "accountId": "111122223333",
          "type": "AWS::KMS::Key",
          "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
      ]
    }

    Limpando os recursos criados

    Para evitar cobranças desnecessárias e remover recursos que não serão mais usados, a AWS recomenda os seguintes passos:

    Remover o provedor de credenciais OAuth

    Abra o console do Amazon Bedrock AgentCore, acesse Identity no painel de navegação e localize o provedor criado na seção Outbound Auth. Selecione o provedor, escolha Delete e confirme a exclusão.

    Agendar a exclusão da chave KMS

    A exclusão de uma chave KMS é irreversível. Por isso, o KMS exige que você agende a exclusão com um período de espera em vez de excluir imediatamente. Antes de agendar, confirme que a chave não está mais referenciada por nenhum provedor de credenciais ou registro de provedor de identidade. Se não tiver certeza se a chave ainda está em uso, considere desativar a chave — o que impede seu uso mas mantém a possibilidade de recuperação.

    Abra o console do AWS KMS na região onde a chave foi criada. Em Customer managed keys, selecione a chave assimétrica criada. Em Key actions, escolha Schedule key deletion e defina um período de espera entre 7 e 30 dias. Durante esse período, a chave fica desativada mas pode ser recuperada cancelando a exclusão agendada. Após o período, o KMS a exclui permanentemente. Lembre-se também de remover ou rotacionar a chave pública registrada no provedor de identidade.

    Conclusão

    Com o suporte a Private Key JWT no AgentCore Identity, a AWS oferece aos desenvolvedores uma forma sem segredos compartilhados e totalmente auditável de autenticar agentes em provedores de identidade externos. A chave privada permanece no KMS, cada operação de assinatura fica registrada no CloudTrail, e o mesmo provedor de credenciais cobre os fluxos M2M, on-behalf-of e de acesso delegado pelo usuário.

    Para exemplos completos — incluindo registro em provedores como Entra e Okta, além de fluxos M2M e OBO — a AWS disponibilizou os samples do Amazon Bedrock AgentCore no GitHub.

    Fonte

    Authenticate with Private Key JWT using Amazon Bedrock AgentCore Identity (https://aws.amazon.com/blogs/machine-learning/authenticate-with-private-key-jwt-using-amazon-bedrock-agentcore-identity/)

  • AWS WAF adiciona transformações de texto pré-parse e novas opções de normalização

    O que foi anunciado

    A AWS expandiu as capacidades do AWS WAF (Web Application Firewall — Firewall de Aplicações Web) com dois conjuntos de novidades: as transformações de texto pré-parse para argumentos de consulta e dez novas transformações de texto disponíveis para qualquer declaração de regra. Ambas as funcionalidades têm o mesmo objetivo central: garantir que o AWS WAF inspecione as requisições da mesma forma que a sua aplicação as interpreta.

    Transformações pré-parse: o que são e por que importam

    Antes de o AWS WAF dividir uma query string (string de consulta) em pares de chave-valor, agora é possível aplicar transformações sobre o texto bruto dessa string. Isso fecha duas categorias importantes de brecha de segurança:

    • HTTP Parameter Pollution (Poluição de Parâmetros HTTP): técnica em que um atacante envia parâmetros duplicados para confundir a aplicação ou o WAF.
    • Parser differential evasion (Evasão por diferença de parser): quando o WAF e a aplicação interpretam a mesma string de formas diferentes, criando uma janela de evasão.

    Com as transformações pré-parse, é possível encadear até dez transformações em sequência — por exemplo, decodificação de URL, combinação de argumentos de consulta duplicados por vírgula e substituição de ponto e vírgula por &. Depois disso, ainda é possível empilhar as transformações pós-parse tradicionais dentro da mesma declaração de regra, tudo em uma única configuração.

    Dez novas transformações de texto

    Além das transformações pré-parse, a AWS também introduziu dez novas opções de normalização de conteúdo, disponíveis para uso em qualquer regra do WAF. Entre elas estão opções consideradas padrão do setor, como:

    • Uppercase — conversão para letras maiúsculas
    • Trim — remoção de espaços nas extremidades
    • Remove Whitespace — remoção de espaços em branco
    • SHA256 — geração de hash SHA256 do conteúdo

    O conjunto também inclui funções de decodificação de linha de comando com consciência de sistema operacional e decodificação de JavaScript, desenvolvidas pelo Amazon Threat Research Team (Equipe de Pesquisa de Ameaças da Amazon).

    Custo e disponibilidade

    Cada nova transformação consome 10 WCUs (Web ACL Capacity Units — Unidades de Capacidade de Web ACL). Não há cobrança adicional além do preço padrão do AWS WAF, e o recurso já está disponível em todas as regiões da AWS.

    Como começar

    Para quem quiser explorar as novidades, a AWS disponibilizou documentação detalhada sobre cada funcionalidade:

    Fonte

    AWS WAF adds pre-parse text transformations and new text transformations (https://aws.amazon.com/about-aws/whats-new/2026/07/aws-waf/)

  • AWS Glue adiciona suporte a VPC, filter pushdown e particionamento no conector REST API

    O que foi anunciado

    A AWS anunciou três novas capacidades para o conector de Interface de Programação de Aplicações REST (REST API) do AWS Glue: suporte a Nuvem Privada Virtual (VPC), filter pushdown e particionamento de dados. Juntas, essas melhorias tornam os pipelines de Extração, Transformação e Carga (ETL) com fontes REST muito mais seguros, eficientes e escaláveis — sem a necessidade de escrever código personalizado.

    Contexto: o conector REST API do AWS Glue

    O conector REST API do AWS Glue permite ingerir dados de qualquer fonte que exponha uma API baseada em REST, incluindo sistemas proprietários e plataformas emergentes que ainda não possuem conectores nativos no serviço. Com as novidades anunciadas, esse conector passa a cobrir três lacunas importantes que limitavam seu uso em ambientes corporativos mais exigentes.

    As três novas capacidades

    Suporte a VPC

    Com o suporte à VPC, o conector REST API agora consegue acessar fontes de dados hospedadas em sub-redes privadas ou conectadas via VPN ou AWS PrivateLink, sem expor o tráfego à internet pública. Isso é especialmente relevante para organizações que mantêm sistemas internos isolados por questões de segurança e conformidade, e que precisam integrá-los a pipelines de dados na AWS sem abrir brechas de rede.

    Filter Pushdown

    O filter pushdown traduz os predicados de consulta diretamente em parâmetros nativos da API, fazendo com que apenas os registros correspondentes ao filtro sejam transferidos da fonte. Na prática, isso significa menos dados trafegando pela rede, redução de custos de transferência e melhor desempenho geral dos jobs do Glue — já que o trabalho de filtragem acontece na origem, não após a ingestão.

    Suporte a Particionamento

    O particionamento divide grandes conjuntos de dados entre múltiplos workers do Spark, utilizando estratégias baseadas em campos ou contagem de registros. O resultado são leituras paralelas que reduzem significativamente o tempo de ingestão em APIs paginadas e de alto volume. Para quem lida com grandes volumes de dados via REST, essa funcionalidade pode representar uma mudança expressiva na performance dos pipelines.

    Disponibilidade

    Todas essas capacidades já estão disponíveis em todas as regiões comerciais da AWS onde o AWS Glue está presente. Para começar a utilizá-las, a AWS recomenda consultar a documentação oficial do conector REST API do AWS Glue.

    Fonte

    AWS Glue announces VPC support, filter pushdown, and partition support for the REST API connector (https://aws.amazon.com/about-aws/whats-new/2026/07/aws-glue-rest-connector-filtering-partitioning-vpc)

  • Como proteger atualizações de pacotes npm e pip no Amazon Linux

    O problema: os primeiros momentos após a publicação são os mais arriscados

    Quem trabalha com desenvolvimento em Amazon Linux e utiliza pacotes do npm ou do PyPI precisa estar atento a um risco específico: o período logo após a publicação de um pacote é, de longe, o mais perigoso do ponto de vista de segurança na cadeia de suprimentos.

    Diferente dos pacotes oficiais do Amazon Linux — que passam por revisão dos mantenedores antes do lançamento —, os registros npm e PyPI têm publicação aberta. Qualquer pessoa pode enviar um pacote sem passar por revisão humana obrigatória. Isso abre espaço para que pacotes maliciosos sejam publicados por meio de credenciais roubadas ou ataques de impersonação.

    O padrão observado nesses incidentes é sempre parecido: um autor publica um pacote ou versão inesperada e aguarda que sistemas automatizados e usuários o instalem. Pesquisadores de segurança e scanners automatizados geralmente detectam e removem esses pacotes em questão de horas — mas, nesse intervalo, muitos ambientes já foram expostos.

    O relatório State of DevSecOps 2026 da Datadog revelou que 54% das aplicações JavaScript instalam ao menos uma dependência dentro de um dia após seu lançamento. Esse é exatamente o janela de maior risco. Veja alguns exemplos reais de eventos recentes e seus tempos de exposição:

    • Nx s1ngularity (ago/2025): 4–5 horas
    • axios (mar/2026): 2–3 horas
    • Bitwarden CLI (abr/2026): 93 minutos
    • TanStack (mai/2026): 30 minutos
    • node-ipc (mai/2026): menos de 24 horas

    Um detalhe importante: vários desses eventos geraram atestados de proveniência válidos e passaram em verificações de build. Ou seja, os mecanismos de autorização tradicionais não foram suficientes para bloqueá-los.

    A tensão entre dois tipos de risco

    Existe uma tensão natural entre dois riscos que puxam em direções opostas. Por um lado, manter pacotes desatualizados significa acumular vulnerabilidades conhecidas que nunca foram corrigidas. Por outro, instalar versões recém-publicadas significa correr o risco de incluir código malicioso que ainda não foi detectado.

    Figura 1: Risco de software ao longo do tempo. O risco de vulnerabilidades não corrigidas cresce com o tempo, enquanto o risco de ataques à cadeia de suprimentos é mais alto logo após a publicação — Imagem original — fonte: Aws

    A melhor abordagem, portanto, é se manter atualizado sem adotar versões imediatamente após o lançamento, aplicando correções de segurança recomendadas conforme necessário. É exatamente esse equilíbrio que a solução de cooldown de dependência busca oferecer.

    A solução: cooldown de dependência com uma linha de configuração

    A AWS apresentou uma solução direta: configurar um cooldown de dependência nos gerenciadores de pacotes npm e pip. Essa configuração instrui o gerenciador a ignorar versões publicadas há menos de 24 horas. Se um pacote não existia no registro pelo tempo configurado, ele simplesmente não será instalado — dando à comunidade de segurança tempo suficiente para identificar e remover versões problemáticas.

    Um cooldown de 1 dia teria bloqueado todos os eventos listados na tabela acima. E, ao contrário dos mecanismos de autorização, o cooldown funciona de forma independente: ele bloqueia por idade, não por confiança.

    Tanto o npm (versão 11.10.0 ou superior) quanto o pip (versão 26.1 ou superior) já suportam essa funcionalidade. O Amazon Linux 2023 inclui esses pacotes a partir do NodeJS 24 e Python 3.14, disponíveis desde a versão 2023.11.20260608.

    Observação importante: se você utiliza instalações baseadas em lockfile — como npm ci ou pip install -r requirements.txt com versões fixadas — o cooldown não se aplica. Esses comandos instalam exatamente o que o lockfile especifica, independentemente da idade do pacote. O cooldown afeta apenas a resolução de pacotes novos ou atualizados.

    Pré-requisitos

    • Node.js 24 com npm 11.10.0 ou superior (em nodejs24-24.14.1-1.amzn2023.0.1 ou posterior)
    • Python 3.14 com pip 26.1 (em python3.14-pip-26.1.1-1.amzn2023.0.1 ou posterior)
    • pip-audit (ferramenta para escanear pacotes Python com defeitos conhecidos). Instale com: python3.14 -m pip install pip-audit

    Como configurar o cooldown no npm

    Crie o diretório de configuração global conforme a versão do NodeJS:

    sudo mkdir -p /usr/lib/nodejs24/etc

    Adicione a configuração de cooldown:

    sudo npm-24 config set min-release-age 1 --location=global

    Verifique se o cooldown está ativo:

    npm-24 config list

    A saída mostrará before = "<timestamp de 24 horas atrás>", confirmando que o npm converteu o cooldown de 1 dia em um filtro de data. Consulte a documentação do npm min-release-age para mais detalhes.

    Como configurar o cooldown no pip

    Crie o arquivo de configuração global do pip com o cooldown:

    sudo python3.14 -m pip config set --global global.uploaded-prior-to P1D

    Verifique a configuração:

    python3.14 -m pip config list

    A saída mostrará global.uploaded-prior-to='P1D'. Essa configuração pode ser aplicada imediatamente com segurança, pois versões mais antigas do pip (25.x) simplesmente ignoram o parâmetro sem causar erros.

    Sobrescrevendo o cooldown para aplicar correções de segurança urgentes

    O cooldown não precisa ser desativado completamente para aplicar correções de segurança. A recomendação da AWS é identificar os pacotes com vulnerabilidades conhecidas por meio das ferramentas de auditoria e sobrescrever o cooldown apenas para esses pacotes específicos.

    Para identificar pacotes que precisam de atualização urgente, execute:

    npm auditor
    python3.14 -m pip_audit

    Para pacotes npm

    Instale um pacote específico ignorando o cooldown:

    npm-24 install <package-name> --min-release-age=0

    Para atualizar automaticamente todos os pacotes npm com vulnerabilidades conhecidas:

    npm audit --json | python3 -c "
    import json, sys, subprocess
    data = json.load(sys.stdin)
    for pkg in data.get('vulnerabilities', {}):
        subprocess.run(['npm-24', 'install', f'{pkg}@latest', '--min-release-age=0'])
    "

    Para pacotes pip

    Instale um pacote específico ignorando o cooldown:

    python3.14 -m pip install <package-name> --uploaded-prior-to="P0D"

    Para atualizar automaticamente todos os pacotes pip com vulnerabilidades conhecidas:

    python3.14 -m pip_audit --format=json | python3 -c "
    import json, sys, subprocess
    data = json.load(sys.stdin)
    for vuln in data:
        pkg = vuln['name']
        fix = vuln.get('fix_versions', ['latest'])[0]
        subprocess.run(['python3.14', '-m', 'pip', 'install', f'{pkg}=={fix}', '--uploaded-prior-to=\"P0D\"'])
    "

    Importante: os scripts acima demonstram o conceito. Para uso em produção, adicione tratamento de erros, logging e testes adequados. Revise os pacotes antes de atualizá-los em pipelines automatizados.

    Adoção da indústria: cooldowns já são tendência

    A estratégia de cooldown de dependência já está sendo adotada por ferramentas e empresas relevantes do ecossistema. A partir de maio de 2026, diversas ferramentas populares passaram a incluir esse recurso:

    • pnpm 11: já vem com minimumReleaseAge habilitado por padrão — um dos primeiros gerenciadores de pacotes a tornar o cooldown opt-out em vez de opt-in.
    • Renovate: o preset config best-practices inclui um cooldown de 3 dias para npm desde 2025, amplamente adotado em empresas.
    • StepSecurity Secure Registry: oferece período de cooldown configurável para clientes corporativos, com recomendação padrão de 10 dias.

    Como a AWS contribui para a segurança da cadeia de suprimentos open source

    A AWS também atua de forma proativa no monitoramento dos registros de pacotes. O Amazon Inspector, serviço de gerenciamento de segurança que escaneia continuamente cargas de trabalho em busca de vulnerabilidades e exposições de rede, utiliza regras de detecção assistidas por Inteligência Artificial (IA) para monitorar registros upstream de pacotes.

    Em 2025, pesquisadores do Amazon Inspector identificaram mais de 150.000 pacotes npm inesperados vinculados a uma campanha de mineração de tokens. A equipe de segurança da AWS também publicou orientações detalhadas de resposta ao worm Shai-Hulud e ao evento do axios.

    Além disso, a AWS contribui com a Open Source Security Foundation (OpenSSF) por meio de um grant de US$ 12,5 milhões para segurança open source, financiando infraestrutura de escaneamento proativo que beneficia todo o ecossistema.

    Pacotes inesperados normalmente são detectados em poucas horas após a publicação. Um cooldown de 1 dia garante que você não os instale durante essa janela de detecção.

    Recomendações práticas

    Para proteger seu ambiente Amazon Linux 2023, a AWS recomenda:

    • Configure um cooldown de 1 dia para npm e pip conforme os passos descritos acima. Registros externos não têm revisão humana — dê tempo aos defensores para identificar problemas.
    • Sobrescreva o cooldown quando necessário para aplicar correções de segurança urgentes, usando as flags por comando.
    • Execute npm audit ou pip_audit regularmente para identificar pacotes que precisam de atenção imediata.

    Recursos adicionais

    Fonte

    Secure your npm and pip package updates in Amazon Linux (https://aws.amazon.com/blogs/security/secure-your-npm-and-pip-package-updates-in-amazon-linux/)

  • A Amazon identifica grupo norte-coreano por trás de ataques à cadeia de suprimentos de software open source

    Um grupo, múltiplos alvos: a conexão que ninguém havia feito antes

    A Amazon divulgou uma pesquisa inédita revelando que vários comprometimentos recentes de pacotes populares do Gerenciador de Pacotes Node (NPM — Node Package Manager) foram conduzidos pelo mesmo grupo de ameaças vinculado à Coreia do Norte — o país oficialmente conhecido como República Popular Democrática da Coreia (RPDC). A conexão entre esses incidentes não havia sido reportada publicamente até agora.

    O grupo em questão é rastreado pela comunidade de segurança sob vários nomes: SAPPHIRE SLEET, STARDUST CHOLLIMA, BlueNoroff, CageyChameleon e Alluring Pisces. Segundo a análise da Amazon Threat Intelligence, esse ator de ameaças está por trás dos comprometimentos das bibliotecas axios, debug, chalk e typo-crypto — pacotes amplamente utilizados no ecossistema JavaScript.

    O relatório também aborda como a IA generativa já está mudando a aparência de pacotes maliciosos e como atores de ameaças estão começando a sondar sistemas de revisão de código baseados em IA.

    A linha do tempo dos ataques

    A sequência de comprometimentos documentada pela Amazon Threat Intelligence revela uma operação metódica e progressiva:

    • Março de 2025: comprometimento do pacote typo-crypto — considerado um teste inicial de técnicas.
    • Setembro de 2025: o mesmo ator compromete os pacotes debug e chalk.
    • Março de 2026: o mesmo manual operacional reaparece no comprometimento do axios, uma das bibliotecas JavaScript mais usadas no mundo, com mais de 100 milhões de downloads semanais.

    Em todos os casos, o grupo obteve acesso por meio de engenharia social contra mantenedores confiáveis dos pacotes, publicando em seguida uma atualização contendo código malicioso. Qualquer organização que atualizasse automaticamente para a versão mais recente recebia o pacote comprometido.

    Embora o comprometimento do axios já tivesse sido atribuído publicamente a esse ator, os incidentes com typo-crypto, debug e chalk nunca haviam sido conectados a ele. A Amazon Threat Intelligence identificou Táticas, Técnicas e Procedimentos (TTPs — Tactics, Techniques and Procedures) compartilhados entre as campanhas, incluindo pacotes NPM trojanizados, uso de hooks pós-instalação e reuso de código.

    A motivação é financeira: ao comprometer um número pequeno de pacotes altamente populares, o grupo obtém acesso potencial a milhares de ambientes downstream simultaneamente — muito mais eficiente do que atacar organizações uma a uma. Segundo dados da Wiz Research citados no relatório, cerca de 1 em cada 10 ambientes de nuvem foram afetados pelo evento das bibliotecas debug e chalk em uma janela de apenas duas horas.

    A campanha menor que veio antes

    Durante a análise de indicadores relacionados ao caso do axios, a Amazon Threat Intelligence identificou uma conexão com um domínio registrado em 2025, o que levou a uma investigação mais ampla. Essa investigação revelou que o mesmo ator havia inserido um arquivo trojanizado no pacote typo-crypto em março de 2025.

    O arquivo malicioso, chamado core.js, se disfarça como o legítimo pacote core-js dentro do repositório do typo-crypto. Dado o baixo volume de downloads observado, a Amazon Threat Intelligence avalia que essa campanha foi de pequena escala — provavelmente um campo de testes para as operações maiores que viriam depois.

    O comportamento técnico do malware é detalhado no relatório:

    • O arquivo trojanizado é executado quando recebe um hash iniciando com o valor 0098273.
    • Quando ativado, baixa um payload de segundo estágio de um servidor de Comando e Controle (C2) hardcoded.
    • Executa o payload de acordo com o sistema operacional da vítima: Windows, macOS ou Linux.
    • Implementa persistência baseada em arquivos com rotação de payload.
    • Usa ofuscação em múltiplas camadas, combinando texto codificado em base64 com cifra XOR com chave 01042025.

    Os indicadores de comprometimento (IoCs) associados incluem:

    • Domínio: npmjs[.]store
    • Endereço IP: 216[.]74[.]123[.]126
    • Pacote NPM: typo-crypto (SHA256: 24604384b0e748ada07923630b3d037489e696284a98c4409fb9b6763565571f)
    • Arquivo trojanizado: core.js (SHA256: 2014d09c7ded74d89c885b5f11693865224116f1b25df9330e61fe528f419d73)

    O malware foi reportado ao banco de dados de Vulnerabilidades Open Source (Vulnerabilidades Open Source), onde é rastreado como MAL‑2026‑3400.

    Como as técnicas de ataque estão evoluindo

    A Amazon Threat Intelligence e o Amazon Inspector documentaram uma série de mudanças nas táticas usadas para atacar bibliotecas open source. Cada padrão foi projetado para explorar a lacuna entre o momento em que uma dependência é inspecionada e o momento em que ela efetivamente executa.

    De ataques por pacote para ataques por fragmento

    Antes, um pacote malicioso concentrava todo o comportamento suspeito em si mesmo. Agora, os atacantes estão dividindo um único fluxo malicioso em vários pacotes de aparência inofensiva: um armazena um blob criptografado disfarçado de configuração; outro contém a lógica de descriptografia; um terceiro, publicado depois, busca e executa o payload. Analisado individualmente, cada pacote parece benigno. O comportamento malicioso só emerge quando os componentes são usados juntos na sequência correta.

    Campanhas de longo prazo que investem em confiança

    Em vez de publicar malware óbvio, os atacantes publicam algo genuinamente útil e o mantêm por semanas ou meses — corrigindo bugs, adicionando funcionalidades, acumulando dependentes. Em alguns casos, o objetivo nem é lançar um novo pacote, mas se tornar um contribuidor de um projeto existente. Esse foi o fio condutor do backdoor do XZ Utils até os comprometimentos dos mantenedores do debug, chalk e axios: o adversário trata a legitimidade como um ativo a ser gasto uma única vez, no momento de acesso máximo.

    Desacoplando o pacote do seu comportamento

    Em muitos casos recentes, uma biblioteca está limpa no registro público, mas ainda é perigosa — porque seu comportamento real depende de recursos controlados pelo atacante em outro lugar: scripts buscados de repositórios externos em tempo de execução, arquivos de configuração que ativam certos comportamentos, ou endpoints remotos consultados na inicialização. Enquanto esses recursos externos permanecem benignos, revisões de código passam e varreduras automatizadas retornam resultados limpos. Quando o atacante “arma” o endpoint, cada cópia instalada pode se tornar maliciosa de uma vez, sem nenhuma nova versão do pacote.

    Da ofuscação básica à criptografia real

    Onde antes os atacantes usavam minificação ou base64 simples, hoje se observam payloads em múltiplos estágios com técnicas criptográficas mais robustas: blobs criptografados com AES‑GCM, arrays de strings no estilo RC4, XOR em camadas sobre base64, e loaders nativos que mantêm o próximo estágio como campo criptografado descriptografado apenas em memória. O design comum é que a chave de descriptografia nunca está armazenada no pacote — ela é derivada do contexto de execução, buscada de um servidor ou fornecida como uma chave de licença.

    Payloads que evitam detonar em sandboxes

    À medida que os defensores escalaram a análise automatizada em sandboxes de nuvem, os atacantes tornaram seu código mais consciente do ambiente. O payload verifica se está sendo analisado antes de agir: terminais interativos, nomes de usuário e hostnames realistas, participação em domínio, uptime plausível, histórico de arquivos locais, sistemas operacionais específicos e metadados de nuvem que distinguem infraestrutura de análise de cargas de trabalho normais. Alguns servidores de entrega também adaptam o que servem com base no cliente — um decoy benigno vai para requisições genéricas, enquanto o payload real só aparece para o user agent exato usado pelo malware.

    Como a IA generativa está mudando o cenário

    A IA generativa está alterando tanto o que os atacantes conseguem produzir quanto o que os defensores podem confiar como sinal de detecção.

    Historicamente, muitos pacotes maliciosos eram detectados porque pareciam errados: linguagem quebrada, documentação rasa, cópia e cola óbvios, ou funções reutilizadas entre amostras. A IA generativa apaga muitos desses sinais. Atacantes podem agora produzir milhares de linhas de código coerente e idiomático, bem comentado, com documentação convincente, históricos de commits plausíveis e identidades sintéticas de mantenedores — tudo envolvendo um backdoor. Como cada variante pode ser mutada, renomeada, reestruturada e re-criptografada, não há assinatura estável para corresponder.

    A IA também está criando novos vetores de acesso inicial. Uma técnica emergente é o slopsquatting: atacantes registram nomes de pacotes que existem apenas porque um assistente de codificação com IA os alucineu. Quando um desenvolvedor — ou um agente autônomo — pede ajuda e o modelo recomenda com confiança um pacote inexistente, o atacante pode ter pré-registrado esse nome e estar esperando. A próxima pessoa que seguir a recomendação pode receber malware, sem ter digitado nada errado ou visitado um site malicioso.

    Mais significativamente: atacantes não estão mais apenas escrevendo malware para humanos deixarem passar. Estão escrevendo malware para sistemas de IA aprovarem. À medida que organizações dependem de IA para revisar código e triar pacotes, esses sistemas de IA se tornam parte da superfície de ataque. A Amazon espera que a injeção indireta de prompt — uma técnica onde instruções ocultas manipulam um sistema de IA a tomar ações não intencionais — seja cada vez mais incorporada em pacotes maliciosos para enganar scanners baseados em IA. Essas instruções podem estar escondidas em comentários de código, arquivos README, docstrings ou fixtures de teste.

    O que a AWS está fazendo a respeito

    A Amazon Web Services (AWS) afirma estar investindo em Amazon Threat Intelligence e Amazon Inspector para ajudar clientes a se adaptarem a esse cenário em constante mudança.

    Após descobrir a campanha, a Amazon Threat Intelligence trabalhou com o Amazon Inspector para que o pacote malicioso fosse rastreado, mitigado e compartilhado com a comunidade pelo banco de dados OSV. Os indicadores observados também foram compartilhados com o Amazon GuardDuty para alertar clientes sobre essa atividade.

    O Amazon Inspector usa esses insights para refinar a lógica de detecção, ampliar a cobertura em registros de pacotes e priorizar sinais que refletem as mudanças de técnica descritas no relatório. A empresa também está colaborando com parceiros do setor, como registros de pacotes e a Open Source Security Foundation (OpenSSF).

    Em 2026, a AWS se juntou à Linux Foundation e outros líderes do setor para lançar o Akrites, uma iniciativa colaborativa para defender software open source crítico contra ameaças cibernéticas habilitadas por IA. A AWS também co-investiu US$ 12,5 milhões junto a outras organizações para defender o ecossistema open source de ataques impulsionados por IA.

    O que isso significa para equipes de segurança

    O relatório da Amazon deixa claro que a segurança da cadeia de suprimentos de software open source exige uma mudança de mentalidade. Não basta escanear pacotes individualmente: é preciso raciocinar sobre como eles interagem em um grafo de dependências real. Um pacote que não mostra comportamento malicioso hoje não é o mesmo que um pacote seguro por design.

    A paciência dos atacantes — investindo meses em construir confiança antes de agir — e a capacidade de usar IA para gerar malware convincente tornam as abordagens tradicionais de detecção cada vez menos eficazes. O setor como um todo, e não apenas os provedores de nuvem, precisa adaptar suas defesas a esse novo cenário.

    Fonte

    Amazon identifies North Korean hacker group behind open-source supply chain attacks (https://aws.amazon.com/blogs/security/amazon-identifies-north-korean-hacker-group-behind-open-source-supply-chain-attacks/)

  • AWS KMS ou AWS CloudHSM: Como Escolher a Solução Certa de Gerenciamento de Chaves

    Dois serviços, propósitos distintos

    A Amazon Web Services (AWS) publicou um guia oficial para ajudar equipes técnicas a escolher entre dois serviços de gerenciamento de chaves criptográficas: o Serviço de Gerenciamento de Chaves da AWS (AWS KMS) e o AWS CloudHSM. Embora ambos utilizem Módulos de Segurança de Hardware (HSM) como base de armazenamento de chaves, eles foram projetados para contextos bastante diferentes — e confundi-los pode resultar em custos desnecessários ou em uma arquitetura inadequada para o seu caso de uso.

    A recomendação geral da AWS é direta: o AWS KMS é a escolha certa para a grande maioria dos workloads em nuvem. O AWS CloudHSM existe para situações específicas, principalmente quando há necessidade de interfaces HSM tradicionais ou suporte a algoritmos legados.

    Comparação rápida entre os serviços

    A tabela abaixo resume as principais diferenças entre os dois serviços, com base nas informações publicadas pela AWS em julho de 2026:

    • Melhor para: AWS KMS → maioria dos workloads em nuvem; AWS CloudHSM → migração lift-and-shift de aplicações legadas
    • Implantação: AWS KMS → HSMs gerenciados pela AWS, acessados via endpoints de API; AWS CloudHSM → HSMs gerenciados pelo cliente, acessados via Interface de Rede Elástica (ENI) na sua Nuvem Privada Virtual (VPC)
    • Custo: AWS KMS → pagamento por uso: US$ 1 por chave + US$ 0,03 por 10.000 requisições/mês; AWS CloudHSM → pagamento por hora: US$ 1,60 por instância HSM/hora na região us-east-1
    • Integração com serviços AWS: AWS KMS → todos os serviços AWS; AWS CloudHSM → integração customizada
    • Cobertura de regiões: AWS KMS → todas as regiões AWS; AWS CloudHSM → 32 regiões

    Quando escolher o AWS KMS

    O AWS KMS é um serviço totalmente gerenciado que simplifica o gerenciamento de chaves e elimina a sobrecarga operacional. As organizações optam pelo KMS quando precisam de integração nativa com serviços AWS, rotação automática de chaves e uma solução econômica que não exige gerenciamento dedicado de HSM.

    Integração nativa com o ecossistema AWS

    O AWS KMS se integra a todos os serviços AWS em todas as categorias principais: plataformas de Inteligência Artificial (IA), armazenamento, bancos de dados e computação. A maioria desses serviços suporta chaves gerenciadas pelo cliente no KMS, oferecendo controle total sobre o uso das chaves por meio de políticas e controles de acesso.

    Para quem prefere simplicidade, os serviços AWS também oferecem criptografia transparente usando chaves de propriedade da AWS, eliminando os custos e o ciclo de vida de chaves gerenciadas pelo próprio cliente. Ambos os tipos são considerados chaves AWS KMS. O Gerenciamento de Identidade e Acesso da AWS (IAM) permite controles de acesso com menor privilégio, políticas de chave e auditoria completa de uso via AWS CloudTrail.

    Simplicidade operacional

    O AWS KMS cuida de todas as tarefas operacionais: provisionamento e manutenção de instâncias HSM, rotação automática de chaves, escalabilidade automática, recuperação de desastres e registro de auditoria completo. Isso elimina toda a sobrecarga que seria necessária para manter uma solução baseada em AWS CloudHSM.

    Análise de custos

    O AWS KMS custa US$ 1 por mês por chave, mais US$ 0,03 por 10.000 requisições. O AWS CloudHSM custa aproximadamente US$ 1,60 por hora por HSM — o que equivale a cerca de US$ 1.152 por mês, sem contar a sobrecarga operacional de pessoal para gerenciar o cluster.

    A AWS detalha um ponto de equilíbrio entre os dois serviços:

    • Menos de 500 milhões de operações/mês: AWS KMS tende a custar entre 35% e 99% menos
    • Entre 500 milhões e 1 bilhão de operações/mês: os custos são comparáveis
    • Mais de 1 bilhão de operações/mês: AWS CloudHSM pode ser mais econômico

    Vale destacar que muitos serviços AWS armazenam em cache as Chaves de Criptografia de Dados (DEKs) localmente, o que reduz significativamente o número de chamadas à API do KMS. Na prática, os custos reais do KMS em escala costumam ser muito menores do que os números brutos de operações sugerem.

    Para ilustrar: um workload com 100 chaves e 100 milhões de operações mensais, usando dois HSMs para alta disponibilidade, ficaria assim:

    • AWS CloudHSM: aproximadamente US$ 2.304/mês para dois HSMs, mais custos operacionais
    • AWS KMS: US$ 100/mês (chaves) + US$ 300/mês em custos operacionais = US$ 400/mês no total
    • Economia com AWS KMS: US$ 1.904/mês (redução de 83%)

    Cobertura de regiões

    O AWS KMS opera em todas as regiões AWS, incluindo regiões comerciais, GovCloud, regiões da China e a Região de Nuvem Soberana Europeia. O AWS CloudHSM está disponível em 34 regiões, com avaliação individual para cada nova região.

    Quando escolher o AWS CloudHSM

    O AWS CloudHSM é a escolha adequada em cenários bem específicos. A AWS lista três situações principais que justificam seu uso:

    Integração com ferramentas de terceiros via interfaces HSM tradicionais

    Se a sua aplicação foi construída para se comunicar diretamente com um HSM — em vez de usar uma API de nuvem — o CloudHSM oferece suporte às interfaces tradicionais: PKCS#11, Extensão Criptográfica Java (JCE), Provedor OpenSSL e Provedor de Armazenamento de Chaves (KSP). Isso é relevante para ferramentas como Microsoft SignTool, Nginx e HAProxy.

    Algoritmos criptográficos legados

    O AWS CloudHSM suporta algoritmos considerados depreciados, como 3DES e preenchimento PKCS#1 v1.5 com RSA — algoritmos que o AWS KMS não oferece. Se a sua aplicação depende dessas implementações, o CloudHSM é o caminho.

    Operações menos comuns não suportadas pelo KMS

    O CloudHSM também cobre operações como encapsulamento de chaves AES e modos AES com CTR ou CBC — funcionalidades não disponíveis no AWS KMS.

    Benefícios compartilhados pelos dois serviços

    Apesar das diferenças, AWS KMS e AWS CloudHSM compartilham uma base sólida de capacidades que os tornam ferramentas confiáveis para proteção de dados sensíveis.

    Segurança

    Ambos os serviços oferecem gerenciamento de chaves baseado em HSM com resistência a adulteração e controles físicos nos data centers. Utilizam Segurança da Camada de Transporte (TLS) para proteger a administração e os workloads, e nenhum dos dois permite que funcionários da AWS acessem o material de chave dos clientes.

    Os dois serviços são validados pelo Padrão Federal de Processamento de Informações (FIPS) 140-3 Nível 3 e garantem isolamento criptográfico rigoroso das chaves dos clientes. Um ponto importante destacado pela AWS: a arquitetura multi-inquilino do KMS oferece as mesmas garantias de segurança que o modelo single-tenant do CloudHSM, com menor complexidade operacional e custo. Equipes de segurança de clientes consistentemente aprovam a adoção do AWS KMS após confirmar que o isolamento criptográfico atende aos requisitos de conformidade.

    Conformidade regulatória

    Ambos os serviços atendem às principais certificações de conformidade, incluindo:

    • Padrão Federal de Processamento de Informações (FIPS) 140-3 Nível 3
    • Padrão de Segurança de Dados da Indústria de Cartões de Pagamento (PCI-DSS)
    • Lei de Portabilidade e Responsabilidade de Seguro de Saúde (HIPAA)
    • Programa Federal de Gerenciamento de Risco e Autorização (FedRAMP)

    Os dois protegem dados como Informações de Identificação Pessoal (PII) e Informações de Saúde Protegidas (PHI).

    Algoritmos padrão

    AWS KMS e AWS CloudHSM suportam operações criptográficas padrão, incluindo AES-256, RSA, ECDSA, Ed25519, ECDH, ML-DSA, SHA-2 e HMAC. Ambos estão investindo ativamente em Criptografia Pós-Quântica (PQC) para preparar os clientes para as ameaças futuras da computação quântica, com compromisso de expandir o suporte a algoritmos PQC conforme os padrões do Instituto Nacional de Padrões e Tecnologia (NIST) forem finalizados.

    Performance

    O AWS KMS suporta uma taxa de requisição padrão para operações criptográficas que varia de 10.000 a 100.000 transações por segundo (TPS) por conta, dependendo da região — com possibilidade de solicitar aumentos de cota. O AWS CloudHSM exige o provisionamento explícito de instâncias adicionais para maior throughput, o que pode ser difícil de prever pela falta de métricas de utilização.

    Suporte operacional

    Ambos os serviços oferecem alta disponibilidade, durabilidade, backup automático e aplicação de patches de software. O AWS KMS é um serviço regional com alta disponibilidade e durabilidade sem necessidade de gerenciamento pelo cliente. O AWS CloudHSM é um serviço zonal, o que significa que os clientes precisam gerenciar ativamente a alta disponibilidade e a durabilidade.

    Guia de decisão rápida

    A AWS resume a escolha de forma objetiva:

    • Escolha o AWS KMS para a grande maioria dos casos de uso em nuvem
    • Escolha o AWS CloudHSM apenas se você precisar de integração direta com ferramentas de terceiros via interfaces HSM tradicionais (PKCS#11, JCE, OpenSSL, KSP), suporte a algoritmos depreciados como 3DES e PKCS#1 v1.5 com RSA, ou operações menos comuns como encapsulamento de chaves AES e modos CTR/CBC

    Próximos passos

    Para quem quer colocar a mão na massa, a AWS disponibiliza guias de início rápido para os dois serviços:

    Fonte

    AWS KMS or AWS CloudHSM: Choose the right key management solution (https://aws.amazon.com/blogs/security/aws-kms-or-aws-cloudhsm-choose-the-right-key-management-solution/)

  • Relatório IRAP 2026 Fase 1a já está disponível no AWS Artifact para clientes australianos

    O que foi anunciado

    A Amazon Web Services (AWS) anunciou que a versão mais recente do relatório do Programa de Avaliadores Registrados de Segurança da Informação (IRAP — Information Security Registered Assessors Program), referente à Fase 1a (avaliação completa), já está disponível por meio do AWS Artifact.

    A avaliação foi conduzida em junho de 2026 por um avaliador IRAP certificado pela Diretoria de Sinais da Austrália (ASD — Australian Signals Directorate), de forma totalmente independente.

    Novos serviços avaliados no nível PROTECTED

    O destaque deste novo relatório é a inclusão de quatro serviços adicionais avaliados no nível PROTECTED sob o IRAP. Com isso, o total de serviços AWS avaliados nesse nível chega a 167. Os quatro novos serviços incluídos são:

    A lista completa de serviços avaliados pode ser consultada na aba IRAP da página AWS Services in Scope by Compliance Program.

    Pacote de documentação IRAP para clientes australianos

    A AWS também disponibiliza um pacote de documentação IRAP voltado a clientes e parceiros australianos, com o objetivo de apoiar o planejamento, a arquitetura e a avaliação de riscos de workloads na nuvem AWS. O pacote foi desenvolvido em conformidade com os seguintes frameworks e diretrizes do governo australiano:

    O pacote disponível no AWS Artifact também inclui versões atualizadas do Guia do Consumidor AWS e do whitepaper de Arquiteturas de Referência para Workloads ISM PROTECTED na Nuvem AWS.

    Próximos passos

    A AWS indica que clientes australianos interessados em ver outros serviços incluídos nas próximas avaliações IRAP podem entrar em contato com seus representantes AWS para manifestar essa necessidade. O objetivo declarado é ampliar continuamente o número de serviços avaliados no nível PROTECTED para atender às demandas do mercado australiano.

    Fonte

    2026 Phase 1a IRAP report is now available on AWS Artifact for Australian customers (https://aws.amazon.com/blogs/security/2026-phase-1a-irap-report-is-now-available-on-aws-artifact-for-australian-customers/)

  • AWS lança Guia de Conformidade da Cloud Security Alliance na AWS

    O que foi anunciado

    O time de AWS Security Assurance Services acaba de lançar um novo recurso voltado para conformidade em nuvem: o Guia de Conformidade da Cloud Security Alliance (CSA) na Amazon Web Services (AWS). O guia mapeia os 17 domínios de controle e os 207 objetivos de controle da Cloud Controls Matrix v4.1 (CCM) para serviços AWS e práticas de implementação recomendadas.

    O objetivo principal é ajudar organizações que utilizam a AWS a planejar, implementar e evidenciar os controles relevantes para o escopo da CCM — especialmente aquelas que estão buscando ou precisam manter a certificação CSA STAR.

    O que é a Cloud Controls Matrix?

    Antes de entender o guia em si, vale contextualizar o framework por trás dele. A Cloud Security Alliance é uma organização sem fins lucrativos dedicada a definir e disseminar boas práticas de segurança em nuvem.

    A Matriz de Controles de Nuvem (CCM) é um framework de controles de cibersegurança desenvolvido pela CSA. Ela oferece um conjunto detalhado de controles de segurança distribuídos em múltiplos domínios — como auditoria e garantia, gestão de identidade e acesso, e criptografia e gestão de chaves — projetados especificamente para avaliar e gerenciar riscos de segurança em ambientes de computação em nuvem.

    Um ponto importante: a CCM é agnóstica em relação ao provedor de nuvem. Isso significa que ela foi desenvolvida para ser aplicável a qualquer provedor de serviços em nuvem ou modelo de implantação — seja Infraestrutura como Serviço (IaaS), Plataforma como Serviço (PaaS) ou Software como Serviço (SaaS) — independentemente da tecnologia ou fornecedor subjacente. Ou seja, os controles universais que ela define podem ser aplicados em diferentes plataformas de nuvem.

    A AWS, por sua vez, mantém a certificação CSA STAR Nível 2, que combina os requisitos da ISO/IEC 27001:2022 com a CCM. A documentação CSA e o Questionário de Iniciativa de Avaliações de Consenso da AWS (CAIQ) estão disponíveis para clientes AWS por meio do AWS Artifact.

    Modelos de Responsabilidade

    Um dos aspectos mais relevantes do guia é a forma como ele trata os modelos de responsabilidade compartilhada. A CCM define seu próprio Modelo de Responsabilidade Compartilhada de Segurança (SSRM) com três categorias:

    • Responsabilidade do provedor de serviços em nuvem (CSP)
    • Responsabilidade do cliente
    • Responsabilidade compartilhada (independente ou dependente)

    O guia recomenda usar o SSRM em conjunto com o Modelo de Responsabilidade Compartilhada da AWS. Para os controles que são de responsabilidade da AWS, o guia aponta para os atestados da AWS disponíveis no AWS Artifact — como relatórios SOC, certificados ISO e o atestado CSA STAR — como evidências herdadas. Para os controles que são de responsabilidade do cliente ou compartilhados, o guia descreve como implementá-los e evidenciá-los usando serviços AWS.

    Aqui vale um alerta importante que o próprio guia destaca: utilizar um serviço AWS com certificação CSA STAR não torna automaticamente a carga de trabalho do cliente em conformidade. Os clientes continuam sendo responsáveis por configurar os serviços, gerenciar acessos, proteger dados e implementar controles adicionais com base em seu ambiente, avaliações de risco e obrigações regulatórias.

    O que está dentro do guia

    Para cada controle da CCM, o guia apresenta:

    • Aplicabilidade: indica se o controle é aplicável ao contexto AWS
    • Implementação: descreve como as organizações podem implementar o controle na AWS
    • Armadilhas comuns: identifica erros frequentes que devem ser evitados
    • Exemplos de evidência: lista exemplos que podem ser utilizados durante uma avaliação de conformidade

    O guia tem caráter informativo e não substitui a documentação oficial de conformidade e as certificações da AWS disponíveis no AWS Artifact.

    Recursos relacionados e como acessar

    Para quem quiser se aprofundar no tema, a AWS disponibilizou os seguintes recursos:

    Para suporte adicional, é possível entrar em contato com o time de AWS Security Assurance Services.

    Por que isso importa para equipes brasileiras

    Para times de segurança, compliance e arquitetura de nuvem no Brasil, esse guia representa um material de referência valioso. A CCM é amplamente reconhecida como um framework robusto para gestão de segurança em nuvem, e ter um mapeamento direto para os serviços AWS facilita bastante o trabalho de quem precisa demonstrar conformidade — seja para auditorias internas, clientes ou órgãos reguladores.

    O fato de o guia apontar armadilhas comuns e exemplos de evidências para cada controle é especialmente útil na prática: não basta saber o que implementar, é preciso saber como provar que foi implementado corretamente. Esse tipo de orientação costuma fazer diferença real no dia a dia de quem trabalha com certificações e auditorias.

    Fonte

    Announcing the Cloud Security Alliance on AWS Compliance Guide (https://aws.amazon.com/blogs/security/announcing-the-cloud-security-alliance-on-aws-compliance-guide/)

  • Amazon Neptune passa a suportar controle de acesso baseado em tags para IAM

    O que mudou no Amazon Neptune

    A AWS anunciou que o Amazon Neptune Database passou a suportar controle de acesso baseado em tags — conhecido pela sigla TBAC (Tag-Based Access Control) — para o Gerenciamento de Identidade e Acesso (IAM). Com isso, administradores agora podem usar tags de recursos AWS e tags de principais IAM como condições em políticas IAM e em Políticas de Controle de Serviço (SCPs) para governar o acesso a operações no plano de dados do Neptune.

    Por que esse recurso foi criado

    O Neptune já oferecia uma base sólida de segurança: isolamento via VPC, criptografia TLS e autenticação IAM. No entanto, equipes que gerenciam múltiplos clusters em escala enfrentavam um desafio prático — precisavam de um mecanismo dinâmico e baseado em atributos para impor fronteiras de acesso organizacionais sem ter que listar manualmente o ARN (Amazon Resource Name) de cada cluster em cada política criada.

    O TBAC resolve exatamente esse problema. Com ele, o acesso passa a ser governado por correspondência de tags, e não por enumeração de recursos.

    Como o TBAC funciona na prática

    Com o TBAC habilitado, um principal IAM só consegue executar ações neptune-db:* nos clusters do Neptune cujas tags coincidam com as suas próprias tags. Um exemplo direto: um principal com a tag Project=FraudDetection fica automaticamente restrito a clusters que também carregam essa mesma tag — sem nenhuma regra adicional explícita.

    Esse modelo traz benefícios concretos para times que trabalham em ambientes compartilhados:

    • Elimina o risco de acesso lateral dentro de ambientes VPC compartilhados
    • Impõe isolamento por time e por ambiente entre projetos diferentes
    • Suporta fluxos de identidade federada usando tags de sessão SAML ou OIDC vindas de provedores de identidade externos

    Para cenários que exigem ainda mais granularidade, é possível combinar o TBAC com permissões específicas, como neptune-db:QueryLanguage, para um controle de acesso ainda mais refinado.

    Disponibilidade e requisitos

    O recurso está disponível em todas as regiões AWS onde o Amazon Neptune opera. Para utilizá-lo, é necessário que o cluster esteja rodando a versão de engine 1.2.0.0 ou superior e com a autenticação IAM habilitada.

    Para saber como configurar o TBAC no Amazon Neptune — incluindo como aplicar tags nos clusters de banco de dados e nos principais IAM, além de como implantar proteções em nível organizacional usando SCPs — a AWS disponibiliza orientações detalhadas na documentação oficial do Amazon Neptune.

    Fonte

    Amazon Neptune now supports tag-based access control for IAM (https://aws.amazon.com/about-aws/whats-new/2026/07/amazon-neptune-tbac/)