A JetBrains anunciou o novo plugin OIDC JWT para a plataforma TeamCity, com o objetivo de permitir que processos de build se autentiquem na AWS, no Google Cloud e em outros serviços compatíveis com o OpenID Connect sem depender de chaves ou senhas estáticas no ambiente de CI/CD. O plugin aborda uma das fontes de riscos operacionais e de segurança nos pipelines de build, pois as credenciais estáticas podem vazar por meio de logs ou arquivos de build e normalmente exigem rotação periódica para atender aos requisitos de segurança.
Como funciona a autenticação?
O fluxo baseia-se na emissão, pelo TeamCity, de um JSON Web Token assinado criptograficamente em nome do processo de build. O token inclui claims que identificam a carga de trabalho, seu período de validade, o público-alvo e o endereço do emissor. Ao receber o token, o serviço externo verifica a assinatura usando as chaves públicas associadas ao emissor e, em seguida, verifica o público-alvo e o período de validade antes de usar os claims para autenticar o processo de build.
Alguns serviços aceitam diretamente o token do provedor de identidade, enquanto outros realizam uma troca de tokens para emitir suas próprias credenciais temporárias. A JetBrains deixa os detalhes da configuração desse fluxo a cargo de cada serviço e orienta os usuários a consultar a documentação da AWS ou do Google Cloud ao configurar o público-alvo e as condições de verificação.
O que o plugin adiciona ao TeamCity?
O OIDC JWT adiciona ao servidor TeamCity os recursos de provedor de identidade necessários para emitir tokens. O plugin oferece suporte à assinatura de tokens com algoritmos baseados em RSA ou ECDSA, com a possibilidade de alternar as chaves de assinatura pela interface web ou por meio de um endpoint HTTP dedicado a solicitações autorizadas. Segundo a JetBrains, a rotação de chaves não desativa por padrão os processos de build em andamento nem invalida os tokens emitidos anteriormente.
Para servidores TeamCity disponíveis publicamente, o plugin fornece o documento .well-known/openid-configuration e um conjunto de chaves públicas JWKS. Já os servidores que não estão expostos à internet podem ser configurados com um endereço de emissor personalizado e hospedar os documentos de descoberta em um host público que use HTTPS, sem disponibilizar o próprio servidor TeamCity publicamente. O plugin também oferece uma API que permite a outros plugins adicionar novos métodos de assinatura, incluindo integração com módulos de segurança de hardware HSM ou serviços de gerenciamento de chaves, como o Google Cloud KMS.
Opções de emissão de tokens e requisitos de uso
Depois de instalar o plugin pelo JetBrains Marketplace e ativá-lo, ele pode ser gerenciado em Admin | Integrations | OIDC Tokens. O plugin requer Java 17 e é compatível com o TeamCity 2025.11 e versões posteriores. O administrador pode definir o endereço do emissor, as configurações de assinatura e gerenciar as chaves de assinatura.
O plugin oferece dois recursos de build para emitir tokens. O primeiro, OIDC Token (in build parameters), cria o token quando o build começa e o armazena em um parâmetro de build especificado. O período de validade é configurável e, por padrão, corresponde ao tempo limite do build ou a 10 minutos quando nenhum tempo limite é definido. Também é possível emitir um token para um ou vários públicos, com a possibilidade de adicionar um recurso separado quando os serviços exigirem tokens independentes para um único público.
Já o recurso OIDC Token (on demand via HTTP request) é adequado para processos de build de longa duração, pois permite que os scripts solicitem um token de curta duração durante a execução por HTTP. Esses tokens têm validade fixa de 5 minutos, que não pode ser alterada.
Por que essa notícia é importante?
A mudança prática consiste em transferir a autenticação de segredos de longa duração para tokens vinculados ao processo de build e limitados em duração e público-alvo. Isso reduz o valor do token caso ele vaze, mas não elimina a necessidade de configurar as permissões e verificar cuidadosamente o endereço do emissor e o público-alvo. A JetBrains alerta que alterações nas configurações do plugin podem interromper as integrações existentes e, por isso, recomenda configurá-lo antes de vincular os processos de build à autenticação via OIDC. Além disso, a eficácia da solução depende do suporte do serviço-alvo ao OIDC e de suas configurações oficiais, pontos que devem ser verificados individualmente para cada integração.