Security and Audit
Protect and trace your data
KaliaOps includes advanced security features: complete action traceability with audit logs, enhanced authentication (2FA), API tokens with scopes, automatic sensitive data protection (FieldGuard) and strict tenant isolation via PostgreSQL Row Level Security.
Audit logs
KaliaOps records all actions for complete traceability.
Recorded information
Each action generates an audit entry containing:
- Who: User who performed the action
- What: Action type (create, modify, delete)
- When: Precise timestamp
- Where: IP address and user-agent
- Detail: Before/after modification data
Tracked actions
| Category | Examples |
|---|---|
| CMDB | Create/modify/delete assets, applications, contracts |
| ITSM | Incidents, problems, changes, resolutions |
| Security | Logins, password changes, role modifications |
| Administration | SSO configuration, user creation, exports |
Access
- Menu Settings → Audit
- Filter by user, entity, period
- View action details
Retention
Audit logs are retained per your contract (minimum 1 year).
2FA authentication
Two-factor authentication enhances account security.
Principle
After password, user enters a temporary code generated by a TOTP app:
- Google Authenticator
- Microsoft Authenticator
- Authy
- 1Password
Mandatory 2FA
Administrator accounts must enable 2FA. Access is blocked until 2FA is configured.
Backup codes
KaliaOps generates 10 single-use backup codes:
- Use if you lose your phone
- Each code is valid only once
- Store securely (vault, password manager)
Recovery
If you lose all access:
- Contact another administrator
- They can disable your 2FA
- Reconfigure 2FA on next login
Secure API tokens
API tokens enable secure integration with external systems.
Token security
- Hashing: Tokens are hashed in database (never in plain text)
- Single display: Token is only visible at creation
- Immediate revocation: Compromised tokens can be revoked instantly
Granular scopes
Limit each token's permissions:
| Scope | Permissions |
|---|---|
| read | Read only (GET) |
| write | Create and modify |
| delete | Delete entities |
| admin | Administrative actions |
Expiration
Configure expiration date for each token:
- 30 days for testing
- 1 year for stable integrations
- No expiration (not recommended)
Best practices
- One token per integration
- Minimum required scopes
- Regular token rotation
- Audit unused tokens
Sensitive data protection
KaliaOps automatically protects sensitive data via the FieldGuard system.
Protected fields
| Entity | Fields | Required permission |
|---|---|---|
| Contracts | Annual, monthly, total costs | contracts.field.cost |
| Vendors | Bank account, SIRET, VAT | vendors.field.bank |
| Users | Password hash, 2FA secret | Never exposed |
| API Tokens | Token hash | Never exposed |
How it works
FieldGuard automatically filters:
- CSV/PDF exports
- API responses
- Views for unauthorized users
Masking
Protected data is replaced with *** for users without permission.
Extension
The system can be extended to protect other fields per your compliance needs.
Multi-tenant isolation
KaliaOps guarantees strict isolation between tenants.
Architecture
Each tenant has:
- Its own isolated data
- Independent configuration
- Own users and roles
Row Level Security
PostgreSQL automatically applies RLS policies:
- Every query is filtered by
tenant_id - Impossible to access another tenant's data
- Database-level protection (not just application)
Isolated sessions
- Sessions are tied to a single tenant
- Tenant switch requires new authentication
- API tokens are scoped per tenant
Security audits
Isolation is regularly verified by:
- Automated tests
- External security audits
- Periodic pentests
Compliance
This architecture meets requirements for:
- GDPR (data protection)
- ISO 27001 (information security)
- SOC 2 (security controls)
- Full traceability: who, what, when, IP, user-agent
- Mandatory 2FA for administrators with backup codes
- API tokens with granular scopes and expiration
- FieldGuard: automatic sensitive field masking
- Strict tenant isolation (PostgreSQL Row Level Security)