Private CA registra cada emissão: guia de campo do IssueCertificateDetails
Ouvir artigo
gerado ao ouvirGerado apenas no primeiro play
Com tecnologia Amazon Polly + OmniVoice
Desde 5 de outubro de 2026 o AWS Private CA emite um evento IssueCertificateDetails no CloudTrail para toda tentativa de emissão, com o certificado TBS completo, a CA emissora, o solicitante e o motivo da falha. Isso fecha um buraco de auditoria que eu contornava com relatório de auditoria mais GetCertificate. Estas notas de campo dizem o que ligar amanhã, o que o evento não resolve e onde o custo e a LGPD entram.
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(ISSUEDouFAILED) estatusReason, por exemploName Constraints violation: DNS name not found in a permitted subtree.requesterAccountIderequesterArnpara chamadas diretas, ourequesterServicePrincipal(comoacm.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.
- Workload com IAM role · sourceIdentity + session tags
- ACM / conectores · AD, SCEP, Kubernetes
- Validação · template + name constraints
- Geração do TBS · e assinatura
- IssueCertificateDetails · status ISSUED | FAILED
- CloudTrail (trilha da org) · management event, 1ª cópia grátis
- S3 da trilha · SSE-KMS + lifecycle
- CloudTrail Lake · US$ 0,75/GB ingerido
- 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
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
Crie a regra de EventBridge para `status = FAILED`
Padrão com
source: aws.acm-pca,detail-type: AWS Service Event via CloudTrail,detail.eventName: IssueCertificateDetailsedetail.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
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 deserviceeventdetailscomo JSON string. Se a organização já usa CloudTrail Lake, a mesma consulta roda lá a US$ 0,005 por GB varrido. - 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, extraisubjectAltName,keyUsage,extendedKeyUsagee o tamanho da chave, e grava Parquet num prefixo de inventário. É isso que responde "quais certificados têm*.pagamentos.internono SAN" sem tocar na API da CA. - 5
Propague a identidade original com `sourceIdentity` e session tags
Quando um serviço intermediário chama
IssueCertificatepor um workload, orequesterArné o do intermediário. Faça o intermediário assumir a role comSetSourceIdentitye session tags com o identificador do workload; osourceIdentityé 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, comoaws:PrincipalTag/x509SAN/URI. - 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.arnpara achar quem pediu: o envelope dizinvokedBy: acm-pca.amazonaws.compara todo evento; o solicitante está emserviceEventDetails.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.
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
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
Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.
Sem spam · cancele quando quiser
Pergunte ao Fernando sobre isto
Receba uma resposta focada sobre este artigo do meu assistente de IA, baseada no meu trabalho.
Participe da conversa
Entre para comentar
Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.
Continue lendo
Inteligência de arquitetura, na sua caixa de entrada
Sinais curados e análises originais sobre AWS, IA, sistemas distribuídos e mercado: do jeito que um arquiteto de soluções lê.
- Curadoria de AWS · IA · arquitetura · mercado
- Novos estudos de arquitetura e deep-dives quando saem
- Sínteses diretas, profundidade sem ruído
- Sem spam · double opt-in · cancele quando quiser