Importância do Monitoramento de Certificados SAML
Os certificados SAML sÀo essenciais para a autenticaçÀo federada entre o Microsoft Entra ID e aplicaçÀµes empresariais. Um certificado expirado pode:
- Causar interrupçÀµes completas no acesso À aplicaçÀo
- Impedir que utilizadores façam login através da federaçÀo SAML
- Gerar erros de verificaçÀo de assinatura
- Resultar em incidentes de segurança e disponibilidade
VerificaçÀo via Microsoft Graph
Para identificar certificados SAML que estÀo próximos da expiraçÀo:
# Conectar ao Microsoft Graph
Connect-MgGraph -Scopes "Application.Read.All"
# Obter todos os service principals (aplicaçÀµes empresariais)
$servicePrincipals = Get-MgServicePrincipal -All
# Data atual para comparaçÀo
$currentDate = Get-Date
# Dias de aviso antes da expiraçÀo
$warningDays = 30
# Verificar certificados SAML
foreach ($sp in $servicePrincipals) {
# Verificar se é uma aplicaçÀo SAML
if ($sp.PreferredTokenSigningKeyThumbprint) {
# Obter certificados de assinatura
foreach ($key in $sp.KeyCredentials) {
if ($key.Usage -eq "Verify") {
$daysUntilExpiry = (($key.EndDateTime) - $currentDate).Days
if ($daysUntilExpiry -lt $warningDays) {
Write-Output "AVISO: Certificado SAML expirando em $daysUntilExpiry dias"
Write-Output "AplicaçÀo: $($sp.DisplayName)"
Write-Output "Validade: $($key.EndDateTime)"
Write-Output "--------"
}
}
}
}
}
RenovaçÀo de Certificados SAML
Para renovar um certificado SAML:
# ID do service principal
$servicePrincipalId = "00000000-0000-0000-0000-000000000000"
# Gerar novo certificado
$newCertificate = New-SelfSignedCertificate -Subject "CN=SAML App" -CertStoreLocation "cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 -NotAfter (Get-Date).AddYears(3)
# Converter para Base64
$certBase64 = [System.Convert]::ToBase64String($newCertificate.Export("Cert"))
# Criar novo objeto de credenciais
$keyCredential = @{
Type = "AsymmetricX509Cert"
Usage = "Verify"
Key = $certBase64
}
# Atualizar o service principal
Update-MgServicePrincipal -ServicePrincipalId $servicePrincipalId -KeyCredentials @($keyCredential)
AutomaçÀo e Alertas
Considere implementar um script de automaçÀo para verificar regularmente os certificados SAML:
# Script para execuçÀo agendada via Azure Automation
$connectionName = "AzureRunAsConnection"
$runAsConnection = Get-AutomationConnection -Name $connectionName
Connect-MgGraph -CertificateThumbprint $runAsConnection.CertificateThumbprint -ApplicationId $runAsConnection.ApplicationId -TenantId $runAsConnection.TenantId
# Executa a verificaçÀo de certificados
# ... (código da seçÀo anterior)
# Envia alertas por email
$emailParams = @{
To = "admin@contoso.com"
Subject = "Alerta: Certificados SAML prestes a expirar"
Body = $alertBody
SMTPServer = "smtp.office365.com"
Port = 587
UseSsl = $true
Credential = $emailCredential
}
Send-MailMessage @emailParams
Melhores PrÀ¡ticas
- Implemente verificaçÀµes semanais para todos os certificados SAML
- Configure alertas para 60, 30 e 15 dias antes da expiraçÀo
- Mantenha um calendÀ¡rio de renovaçÀµes programadas
- Documente o processo de renovaçÀo para cada aplicaçÀo
- Teste o login após cada renovaçÀo de certificado para garantir compatibilidade