Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

Blog/Artigo
RSSMarkdownLLMs
AWS & CloudNotas de Campo

Private CA registra cada emissão: guia de campo do IssueCertificateDetails

6 de out. de 2026 9 minAvançado Com apoio de IA000 visualizações00 reproduções
Ouvir artigo

17:55 · voz do Fernando

Depois de anos operando PKI interna para sistemas financeiros, a pergunta que mais me custou nunca foi "o certificado foi emitido?", foi "o que exatamente a minha CA assinou, para quem, e o que ela recusou?". Até a semana passada o CloudTrail respondia só a primeira: o evento de gerenciamento do IssueCertificate devolvia um ARN e nada mais. Uma emissão barrada por name constraints não deixava registro nenhum. O evento IssueCertificateDetails, anunciado em 5 de outubro de 2026, responde as outras duas. Estas são as notas do que eu faria com ele a partir de amanhã.

A situação: o buraco que a gente tapava na mão

O que existia antes: três fontes parciais. O evento de gerenciamento IssueCertificate provava que a chamada à API passou e entregava o ARN do certificado. O evento SignCertificate registrava a operação de assinatura. E o relatório de auditoria, gerado no máximo a cada 30 minutos para um bucket S3, listava serial, subject, validade e revogação. Nenhum dos três trazia SAN, extensões X.509 ou o algoritmo de assinatura. Para saber que nomes DNS saíram de fato num certificado, o caminho era GetCertificate por ARN e openssl x509 -text, com um teto padrão de 75 chamadas por segundo e uma condição dura: a CA precisa ainda existir. CA apagada, certificado irrecuperável.

Onde isso quebra: no modo de certificado de curta duração. Uma CA nesse modo custa US$ 50 por mês e emite certificados de até 7 dias a US$ 0,058 cada; é o modo certo para mTLS entre workloads. Com 20 mil workloads renovando a cada 3 ou 4 dias, são 5 a 6 mil emissões por dia. Reconstruir o inventário retroativamente por GetCertificate vira um job de horas que corre contra a própria validade dos certificados. A própria documentação do relatório de auditoria hoje diz, com todas as letras, para capturar o detalhe no momento da emissão em CAs de alto volume.

O que ninguém via: falha antes da assinatura. Template errado, violação de name constraints, CSR fora do padrão: a chamada falhava, o cliente recebia uma exceção e o auditor não tinha linha nenhuma para olhar. Em ambiente com BACEN ou PCI-DSS, ausência de registro de tentativa negada é achado de auditoria, não detalhe.

Anatomia do evento: o que ler e o que não presumir

O IssueCertificateDetails é um evento de serviço (eventType: AwsServiceEvent, managementEvent: true) com eventSource: acm-pca.amazonaws.com. Chega sozinho, sem opt-in, em toda região onde o Private CA existe, e só paga o preço padrão do CloudTrail. O conteúdo útil mora em serviceEventDetails:

  • tbsCertificate: o DER do certificado to-be-signed em base64, com todos os campos e extensões, sem a assinatura.
  • issuerName, issuerSerialNumber, issuerAuthorityKeyIdentifier: qual CA assinou, útil quando você roda hierarquia com várias intermediárias.
  • subject, serialNumber, notBefore, notAfter, issuedAt, templateArn, signingAlgorithm: os campos de conveniência que vão virar colunas.
  • status (ISSUED ou FAILED) e statusReason, por exemplo Name Constraints violation: DNS name not found in a permitted subtree.
  • requesterAccountId e requesterArn para chamadas diretas, ou requesterServicePrincipal (como acm.amazonaws.com) quando um serviço ou conector pediu em seu nome.

Três armadilhas que o guia documenta e eu confirmei: primeiro, o userIdentity do envelope é invokedBy: acm-pca.amazonaws.com, não o chamador; filtrar por principal no CloudTrail não acha nada, o solicitante está dentro de serviceEventDetails. Segundo, nenhum dos três campos de solicitante é garantido: emissões atribuídas a processo interno da AWS vêm sem os três. Terceiro, status nunca é PENDING: o evento só sai quando a emissão chega a estado terminal, e numa falha anterior à geração do TBS os campos derivados dele (tbsCertificate, subject, serialNumber) simplesmente não existem. Em CA compartilhada, o anúncio diz que o evento vai para a conta dona da CA; o guia do usuário diz que vai para a dona e para a solicitante. Quando a conta dona é a de segurança, o auditor olha num lugar só.

Da tentativa de emissão ao auditor: por onde o evento passa

Toda tentativa, aceita ou recusada, vira um evento que o CloudTrail entrega em dois caminhos: tempo real via EventBridge e lote via S3/Athena ou CloudTrail Lake.

👤 Solicitantes: quem pede o certificado
  • Workload com IAM role · sourceIdentity + session tags
  • ACM / conectores · AD, SCEP, Kubernetes
🟧 AWS: Private CA (conta dona da CA)
  • Validação · template + name constraints
  • Geração do TBS · e assinatura
  • IssueCertificateDetails · status ISSUED | FAILED
🟧 AWS: Trilha de auditoria
  • CloudTrail (trilha da org) · management event, 1ª cópia grátis
  • S3 da trilha · SSE-KMS + lifecycle
  • CloudTrail Lake · US$ 0,75/GB ingerido
🔐 Consumo: segurança e compliance
  • EventBridge · regra status = FAILED
  • Security Hub / SNS · alerta de recusa
  • Lambda decodificador · TBS → SAN, key usage
  • Athena · inventário + migração de algoritmo

Playbook: o que ligar nos primeiros cinco dias

  1. 1

    Confirme que a trilha da organização cobre a conta e a região da CA

    O evento é de gerenciamento, então entra na primeira cópia gratuita de qualquer trilha que grave management events. Verifique que a trilha é multi-região e que a conta dona da CA (idealmente a conta de segurança) está no escopo. Sem trilha, o evento aparece só no histórico de 90 dias do console, que não serve a um auditor.

  2. 2

    Crie a regra de EventBridge para status = FAILED

    Padrão com source: aws.acm-pca, detail-type: AWS Service Event via CloudTrail, detail.eventName: IssueCertificateDetails e detail.serviceEventDetails.status: FAILED. Destino: tópico SNS do time de PKI e um finding no Security Hub. Uma recusa por name constraints é sinal de workload mal configurado ou de alguém testando os limites da CA; os dois merecem resposta em minutos, não no relatório do mês.

  3. 3

    Monte a tabela no Athena com partition projection

    Use o DDL padrão de CloudTrail do Athena com projeção de partições por conta, região e data, e filtre eventname = 'IssueCertificateDetails'. As colunas de conveniência (subject, signingalgorithm, templatearn, notafter, requesterarn) saem direto de serviceeventdetails como JSON string. Se a organização já usa CloudTrail Lake, a mesma consulta roda lá a US$ 0,005 por GB varrido.

  4. 4

    Escreva o decodificador de TBS para SAN e key usage

    Athena não parseia ASN.1. Um Lambda disparado pelos objetos novos do bucket da trilha decodifica o tbsCertificate, extrai subjectAltName, keyUsage, extendedKeyUsage e o tamanho da chave, e grava Parquet num prefixo de inventário. É isso que responde "quais certificados têm *.pagamentos.interno no SAN" sem tocar na API da CA.

  5. 5

    Propague a identidade original com sourceIdentity e session tags

    Quando um serviço intermediário chama IssueCertificate por um workload, o requesterArn é o do intermediário. Faça o intermediário assumir a role com SetSourceIdentity e session tags com o identificador do workload; o sourceIdentity é imutável ao longo da cadeia de roles e aparece no evento. Com IAM Roles Anywhere, o SAN do certificado do cliente já vira tag de principal, como aws:PrincipalTag/x509SAN/URI.

  6. 6

    Feche a retenção e a criptografia do bucket antes do primeiro auditor

    O bucket da trilha agora guarda DN e SAN de todo certificado, inclusive os de usuário emitidos pelo conector de Active Directory. SSE-KMS com chave do cliente, bucket policy negando leitura fora da conta de segurança, lifecycle alinhado ao prazo que a sua norma exige. Faça isso antes de o evento acumular meses de dado pessoal.

Inventário vivo e migração de algoritmo sem tocar na CA

O caso de uso que me interessa de verdade: migração de algoritmo. Toda PKI financeira que eu toquei tinha uma mistura de SHA256WITHRSA em certificados antigos e ECDSAWITHSHA256 nos novos, e a única forma de medir o progresso era amostrar. O campo signingAlgorithm em cada evento transforma isso numa consulta: percentual de emissões por algoritmo por semana, por template, por conta solicitante. Quando a hora da criptografia pós-quântica chegar, é a mesma consulta com outro valor. Alarme de CloudWatch sobre um metric filter contando emissões SHA256WITHRSA depois da data de corte é o controle mais barato que existe para "ninguém voltou a usar o template antigo".

Inventário: o relatório de auditoria continua sendo a fotografia oficial (serial, revogação, validade) e continua necessário, porque o novo evento não cobre revogação; RevokeCertificate é outro evento de gerenciamento. Mas o inventário operacional, o que responde "quantos certificados expiram nas próximas 72 horas e de quem são", passa a ser notAfter e requesterArn numa tabela, atualizada em minutos, sem GetCertificate e sem depender de a CA ainda existir. Desde 31 de março de 2026 o Private CA também publica no CloudWatch a contagem de certificados emitidos por CA e de CAs por região; use a métrica para vigiar a cota (100 milhões por CA, ou 1 milhão quando a CA usa CRL completa) e o evento para saber o que compõe esse número.

O que o evento não resolve: certificados emitidos antes de 5 de outubro de 2026 não ganham evento retroativo. O backfill desses continua pelo caminho antigo, relatório mais GetCertificate, e é a última vez que você precisa rodá-lo.

Teste a trilha com uma recusa de propósito

Antes de declarar o controle pronto, peça um certificado com um DNS fora das name constraints da CA intermediária e confirme três coisas: o evento chegou com status: FAILED e statusReason legível, a regra do EventBridge disparou o alerta, e a linha apareceu na consulta do Athena na partição do dia. Controle de compliance que nunca viu uma falha de verdade é controle que vai falhar na primeira.

Custo, volume e dado pessoal: a conta que o anúncio não faz

Custo de trilha: a primeira cópia de management events é gratuita; cópias adicionais custam US$ 2,00 por 100 mil eventos. A cota padrão de IssueCertificate é 25 por segundo por conta e região, ajustável, o que dá um teto de cerca de 2,16 milhões de emissões por dia. No pior caso teórico, uma segunda trilha dedicada custaria US$ 43 por dia; na prática, com 6 mil emissões diárias, são US$ 0,12. O que pesa é o que você empilha em cima: Insights a US$ 0,35 por 100 mil eventos analisados e Lake a US$ 0,75 por GB ingerido. Assumindo cerca de 3 KB por evento (o TBS em base64 é a maior parte), 6 mil eventos por dia são 18 MB por dia, meio GB por mês, centavos. É a consulta mal escrita, sem filtro de partição, que estoura o orçamento, não o evento.

Custo de manutenção, que é o que importa: o decodificador de TBS é código seu. Vai quebrar quando um template novo introduzir uma extensão que o parser não conhece, e vai quebrar em silêncio se você não contar eventos de entrada contra linhas de saída. Coloque esse diferencial num alarme desde o primeiro dia.

LGPD e segregação: certificados de usuário emitidos pelo conector de Active Directory carregam nome e e-mail no subject e no SAN. O bucket da trilha vira, sem ninguém decidir, um repositório de dado pessoal com retenção longa. Isso muda quem pode ler o bucket, exige chave KMS própria com política que negue kms:Decrypt fora da conta de segurança, e entra no registro de operações de tratamento. Não é problema do Private CA; é consequência de ter, finalmente, o conteúdo inteiro no log.

Anti-padrões que eu já vi nascer em menos de uma semana

  • Filtrar o CloudTrail por userIdentity.arn para achar quem pediu: o envelope diz invokedBy: acm-pca.amazonaws.com para todo evento; o solicitante está em serviceEventDetails.requesterArn, e nem sempre está.
  • Usar o evento como gatilho de revogação automática: a entrega pelo CloudTrail e pelo EventBridge é best effort e leva minutos; um laço de controle que precisa de garantia de entrega não pode viver em cima dele.
  • Aposentar o relatório de auditoria: o evento não cobre revogação nem o acervo anterior a 5 de outubro de 2026; o relatório continua sendo a fotografia oficial para o auditor.
  • Tratar o TBS como se fosse o certificado emitido: ele não tem a assinatura; serve para inventário e auditoria de conteúdo, não para validar cadeia ou distribuir a clientes.
  • Deixar o bucket da trilha com a criptografia padrão depois disso: DN e SAN de certificado de usuário é dado pessoal; chave KMS própria e política de leitura restrita deixam de ser opcionais.

Perguntas que me fizeram esta semana

Preciso ligar alguma coisa na CA?

Não. O evento é de gerenciamento e sai automaticamente em toda região com Private CA. O que você precisa é uma trilha que grave management events na conta dona da CA, e isso quase toda organização regulada já tem.

O evento substitui o SignCertificate?

Complementa. O SignCertificate continua registrando a operação de assinatura; o IssueCertificateDetails adiciona o conteúdo do TBS, os metadados de conveniência e as falhas pré-assinatura, que o SignCertificate nunca viu.

Em CA compartilhada via RAM, quem recebe o evento?

O anúncio diz a conta dona da CA; o guia do usuário diz dona e solicitante. Projete para a dona: coloque a CA na conta de segurança e a trilha da organização cobre o resto. Se a conta solicitante também receber, é cópia, não fonte.

Como extraio o SAN se o Athena não lê ASN.1?

Decodifique o tbsCertificate fora do Athena: Lambda em Python com cryptography ou openssl asn1parse em lote, gravando SAN, key usage e tamanho de chave como colunas Parquet. Conte eventos de entrada contra linhas de saída; o parser vai quebrar um dia e você quer saber no mesmo dia.

FA
Nota do curador
Arquiteto de TI Especialista

Eu ligaria a regra de FAILED amanhã de manhã e deixaria o decodificador de TBS para a segunda semana: a recusa por name constraints é o sinal de segurança mais barato que o Private CA já ofereceu, e o inventário rico pode esperar o backfill do acervo antigo. A lição dura por trás disso: em PKI financeira o custo nunca foi emitir o certificado, foi provar seis meses depois o que foi emitido e o que foi negado, e até agora essa prova era um script meu rodando GetCertificate contra uma cota de 75 por segundo. Quem administra CA compartilhada deve escolher a conta de segurança como dona antes de escalar, porque é nela que o evento aterrissa. E trate o bucket da trilha como o que ele virou: um repositório de dado pessoal com retenção regulatória.

Veredito

Recomendado com condições

Adote sem hesitar se você opera Private CA em ambiente com BACEN, PCI-DSS ou LGPD, roda o modo de curta duração, ou tem mais de uma conta pedindo certificados da mesma CA: a regra de EventBridge para FAILED, a tabela no Athena e o decodificador de TBS custam centavos por mês e devolvem uma prova de auditoria que antes exigia script e paciência. Mantenha o relatório de auditoria para revogação e para o acervo anterior a 5 de outubro de 2026. Não use o evento como gatilho de ação crítica: a entrega é best effort e em minutos. E, antes de qualquer consulta, resolva chave KMS, política de leitura e retenção do bucket da trilha, porque a partir de agora ele guarda o conteúdo inteiro de cada certificado que a sua CA assinou.

Referências

AWS What's New: AWS Private CA now provides detailed certificate issuance logs (05/10/2026)AWS Private CA User Guide: Logging API calls using CloudTrail (IssueCertificateDetails event reference)AWS Private CA User Guide: Use audit reports with your private CAAWS General Reference: AWS Private CA endpoints and quotasAWS Private CA pricingAWS CloudTrail pricingAmazon EventBridge: AWS Private Certificate Authority eventsAmazon Athena: Query AWS CloudTrail logs
#aws-private-ca#cloudtrail#pki#compliance#security#eventbridge#athena#finops
Compartilhar:LinkedInWhatsAppXBaixar em Markdown
Fonte analisada: AWS Private CA now provides detailed certificate issuance logs
Próximo passo
Trilha Arquiteto de IA, gratuitaFundamentos, LLMs, RAG, tools, MCP e arquitetura na AWS, em aulas curtas e interativas.Começar a trilhaAgentes de IA em produção na AWSComo eu desenho, oriento e audito agentes que vão ao ar, com os números e as fontes.Ver o IA Builder

Continue lendo

AWS & CloudNotebook fora do cluster: migrar para Spark Connect no EMR on EKSEm 24/09/2026 o Amazon EMR on EKS ganhou sessões interativas via Spark Connect: o driver Spark vira um servidor gRPC no seu cluster EKS e o cliente PySpark fica no IDE de quem escreve o código. Tratei isso como uma migração, não como uma feature, e a parte difícil não é conectar, é o que o endpoint arrasta de rede, de IAM e de custo parado.Ler AWS & CloudBeanstalk Cluster Mode: o postmortem que escrevi antes do incidenteO Elastic Beanstalk ganhou um modo em que ambientes com o mesmo conjunto de subnets compartilham um cluster EKS operado pelo serviço. Isso muda o raio de explosão: um ajuste manual no cluster deixa todos os ambientes dele sem deploy até alguém reverter. Escrevi o postmortem desse incidente antes de ele acontecer, só com comportamento documentado, e listo o que configurar no dia zero.Ler AWS & CloudLoop recursivo no Lambda: quatro guardrails comparados no Sovereign CloudA detecção de loop recursivo do Lambda chegou ao European Sovereign Cloud em 10 de setembro de 2026. Ela corta a cadeia em ~16 invocações, mas só entre Lambda, SQS, SNS e S3, e o aviso pode levar 3,5 horas. Comparo quatro guardrails, detecção nativa, separação estrutural, teto de concorrência e contador de saltos na aplicação, e digo quando cada um basta.Ler
AnteriorIA Builder na prática: o que é, o que muda e como eu aplico
Gostou desta análise? Receba a próxima.

Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.

Sem spam · cancele quando quiser

Pergunte ao Fernando sobre isto

Uma resposta focada sobre este artigo, do meu assistente de IA, baseada no meu trabalho.

AWS Builder Center

Este artigo também está no AWS Builder Center, onde a comunidade AWS discute. Comente lá, ou aqui embaixo, eu respondo nos dois.

Discutir no Builder Center 3 2

Participe da conversa

Entre para comentar

Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.

Neste artigo
A situação: o buraco que a gente tapava na mãoAnatomia do evento: o que ler e o que não presumirArquiteturaPlaybook: o que ligar nos primeiros cinco diasInventário vivo e migração de algoritmo sem tocar na CACusto, volume e dado pessoal: a conta que o anúncio não fazAntipadrõesFAQVereditoReferências