Ctrl K
ComunidadGuías…

pkg/audit/certificates.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package audit

import (
	"fmt"
	"time"

	"github.com/skyhook-io/radar/pkg/certs"
	"github.com/skyhook-io/radar/pkg/timeutil"
	corev1 "k8s.io/api/core/v1"
)

func checkTLSCertificateExpiry(tr *evalTracker, secrets []*corev1.Secret, now time.Time) []Finding {
	sources := certs.Sources{Now: now}
	for _, secret := range secrets {
		if input, ok := certs.FromTLSSecret(secret); ok && input.NotAfter != nil {
			sources.TLSSecrets = append(sources.TLSSecrets, input)
		}
	}
	var findings []Finding
	for _, cert := range certs.Aggregate(sources) {
		tr.record("tlsCertificateExpiry", cert.Namespace)
		if cert.Health == certs.HealthHealthy {
			continue
		}
		severity := SeverityWarning
		if cert.Health == certs.HealthUnhealthy {
			severity = SeverityDanger
		}
		expiry, _ := time.Parse(time.RFC3339, cert.Expiry)
		remaining := expiry.Sub(now)
		message := fmt.Sprintf("TLS certificate expires in %s (%s)", timeutil.FormatAgeShort(remaining), cert.Expiry)
		if remaining <= 0 {
			message = fmt.Sprintf("TLS certificate expired %s ago (%s)", timeutil.FormatAgeShort(-remaining), cert.Expiry)
		}
		findings = append(findings, Finding{Kind: "Secret", Namespace: cert.Namespace, Name: cert.Name, CheckID: "tlsCertificateExpiry", Category: CategoryReliability, Severity: severity, Message: message})
	}
	return findings
}