Security Overview for Auditors#

Audience: Security Auditors, Compliance Officers, Risk Assessors, CISOs
Prerequisites: Familiarity with security frameworks (NIS2, ISO 27001) and PKI concepts
Outcome: Understand Kleidia’s security architecture, trust boundaries, and compliance alignment

Executive Summary#

Kleidia is a self-hosted YubiKey and FIDO2 management platform deployed entirely within the customer’s infrastructure. There is no external SaaS dependency. All cryptographic private keys remain on hardware tokens (YubiKeys) or within customer-controlled OpenBao/Vault instances.


Architecture and Trust Boundaries#

Deployment Topology#

┌─────────────────────────────────────────────────────────────────────┐
│              Customer-Owned Infrastructure                          │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │               Kubernetes Cluster                               │  │
│  │                                                                │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐   │  │
│  │  │  Frontend   │  │   Backend   │  │     OpenBao         │   │  │
│  │  │  (Web UI)   │  │   (API)     │  │  (Secrets & PKI)    │   │  │
│  │  └─────────────┘  └──────┬──────┘  └─────────────────────┘   │  │
│  │                          │                                    │  │
│  │                          ▼                                    │  │
│  │                   ┌─────────────┐                             │  │
│  │                   │ PostgreSQL  │                             │  │
│  │                   │ (Database)  │                             │  │
│  │                   └─────────────┘                             │  │
│  └───────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│                    User Workstation                                  │
│                                                                     │
│  ┌─────────────┐         ┌─────────────┐        ┌─────────────┐    │
│  │   Browser   │ ◄─────► │   Agent     │ ◄────► │   YubiKey   │    │
│  │  (Web UI)   │  HTTP   │ (localhost) │  USB   │  (Hardware) │    │
│  └─────────────┘         └─────────────┘        └─────────────┘    │
└─────────────────────────────────────────────────────────────────────┘

Trust Boundaries#

BoundaryProtection
User Workstation ↔ KubernetesHTTPS/TLS 1.2+
Browser ↔ Local AgentHTTP localhost only (127.0.0.1), sensitive data RSA-OAEP encrypted
Backend ↔ OpenBaoInternal cluster network, AppRole authentication
Backend ↔ PostgreSQLInternal cluster network, credential-based auth
Agent ↔ YubiKeyDirect USB, hardware-enforced operations

Key and Secret Locations#

Where Private Keys Reside#

Key TypeLocationExportableManaged By
YubiKey PIV private keysYubiKey hardware❌ NoEnd user (PIN-protected)
FIDO2 private keysYubiKey hardware❌ NoEnd user (PIN-protected)
OpenBao CA/Intermediate keysOpenBao seal storage❌ No (via seal)Customer PKI/Security team
Agent session keysAgent memory only❌ Never persistedEphemeral (session-bound)
JWT signing keysOpenBao KV❌ NoApplication
Database credentialsOpenBao KV❌ NoApplication

Where Secrets Are Stored#

Secret TypeStorage LocationEncryption
YubiKey PINs, PUKsOpenBao KV v2AES-256-GCM (at rest) + RSA-OAEP (in transit to agent)
Management keysOpenBao KV v2AES-256-GCM (at rest)
Application secretsOpenBao KV v2AES-256-GCM (at rest)
User password hashesPostgreSQLArgon2id hashed (not encrypted secrets)
Session tokensPostgreSQLJWT with expiration

What Is NOT Stored#

  • YubiKey private keys (never leave hardware)
  • Agent private keys (memory only, never persisted)
  • Plaintext PINs in database (OpenBao only)

Logging and Audit Trail#

Events Logged#

CategoryExamples
AuthenticationLogin, logout, failed attempts, session expiration
YubiKey OperationsRegistration, PIN change, certificate generation, revocation
FIDO2 OperationsCredential registration, removal
AdministrativeUser creation, role changes, policy modifications
Security EventsPermission denials, invalid requests, unusual patterns

Audit Log Properties#

  • Immutability: Logs stored in PostgreSQL with timestamps
  • Completeness: All security-relevant operations logged
  • User Attribution: Every action tied to authenticated user
  • Retention: Configurable retention period
  • Export: PDF and structured export for compliance reporting

SIEM Integration#

Logs can be forwarded to external SIEM systems via:

  • Kubernetes log collection (Fluentd, Fluent Bit)
  • Database log export
  • Syslog forwarding (configurable)

How Kleidia Supports Compliance#

Note: Kleidia is a tool that helps organizations implement security controls. It does not by itself guarantee compliance. Your organization must assess how Kleidia fits into your overall compliance program.

NIS2 Directive Alignment#

NIS2 Requirement AreaHow Kleidia Helps
Strong AuthenticationManages hardware-backed authentication credentials (PIV certificates, FIDO2)
Access ControlRole-based access, session management, audit logging
Key ManagementCentralized management of hardware security keys with full lifecycle tracking
Incident ResponseRunbooks for lost devices, user departure; immediate credential revocation
Audit & LoggingComplete audit trail of all authentication credential operations
Supply Chain SecuritySelf-hosted deployment; no external SaaS dependencies

ISO 27001 Control Mapping#

ISO 27001 ControlHow Kleidia Helps
A.9.2 User Access ManagementUser provisioning, de-provisioning, access reviews via audit logs
A.9.4 System Access ControlStrong authentication via YubiKey PIV/FIDO2
A.10.1 Cryptographic ControlsPKI integration, certificate lifecycle management
A.12.4 Logging and MonitoringComprehensive audit logging, security event tracking
A.13.2 Information TransferTLS encryption, RSA-OAEP for sensitive data
A.18.1 ComplianceAudit trail exports for compliance evidence

DORA (Digital Operational Resilience Act)#

DORA RequirementHow Kleidia Helps
ICT Risk ManagementManaged credential lifecycle reduces authentication-related risks
ICT Incident ManagementRunbooks for security incidents, audit trail for investigation
Digital Operational Resilience TestingSelf-hosted architecture allows integration into resilience testing

Security Controls Summary#

Authentication#

  • JWT tokens with configurable expiration
  • Argon2id password hashing
  • Optional OIDC/SSO integration (Entra ID, etc.)
  • Session-bound agent authentication

Authorization#

  • Role-based access control (Admin, User)
  • Permission enforcement at API level
  • All authorization decisions logged

Encryption#

Data StateEncryption
In Transit (external)TLS 1.2+
In Transit (to agent)RSA-OAEP
At Rest (secrets)AES-256-GCM (OpenBao)
At Rest (database)PostgreSQL encryption (optional)

Network Security#

  • Kubernetes Network Policies
  • No external exposure of database or OpenBao
  • Agent accessible only via localhost
  • Single external ingress point with TLS termination

Questions Auditors Commonly Ask#

QuestionAnswer
Where are private keys stored?YubiKey hardware (non-exportable) and OpenBao (sealed)
Is there any SaaS dependency?No. Fully self-hosted in customer infrastructure
Can administrators access user YubiKey PINs?PINs encrypted in OpenBao; admin actions logged but PINs not displayed
What happens if a YubiKey is lost?Certificates revoked, FIDO2 credentials disabled, logged in audit trail
How long are audit logs retained?Configurable; typically aligned with organizational retention policy
Can audit logs be tampered with?Logs in PostgreSQL; recommend external SIEM for immutable copy