Solo loopback, por defecto
Todo listener se enlaza a 127.0.0.1 hasta que digas lo contrario. Un proceso que escucharía en una dirección pública sin TLS se niega a arrancar.
# default: every listener binds to 127.0.0.1
# going public is an explicit act:
Node__ListenAddress=0.0.0.0
# ...and without TLS the process refuses to start
# unless you opt in on purpose:
Tls__AllowInsecureTransport=false
mTLS en todas partes
Un solo interruptor activa TLS en cada listener y en cada conexión interna. Una CA de clúster integrada emite certificados de vida corta, rotados por ti, con identidades SPIFFE.
Tls__Enabled=true
Tls__RequireClientCertificate=true
Tls__CaPath=/etc/colibri/ca.pem
# identity in every certificate (SAN URI):
# spiffe://colibri/process/node/node-1
ACL firmadas, acotadas por prefijo
Los usuarios de datos reciben reglas por prefijo de clave: denegar por defecto, gana el prefijo más largo. El archivo de ACL se firma con HMAC-SHA256 y se verifica antes de que un nodo lo aplique.
ProxyAuth__Type=Acl
// acl.json (signed with HMAC-SHA256)
{ "prefix": "billing:", "read": true,
"write": true, "admin": false }
// deny by default, longest prefix wins
Inicio de sesión único con OIDC
Las personas inician sesión con tu proveedor de identidad: Entra ID, Okta, Keycloak, Google. Código de autorización con PKCE, roles a partir de claims de grupo, bloqueo tras fallos repetidos.
// Security > Single sign-on
{ "enabled": true,
"authority": "https://idp.example.com",
"roleClaim": "groups",
"roleMapping": { "sec-admins": "Admin" },
"sessionHours": 8 }
Cuotas por tenant
Limita claves y bytes por prefijo de tenant. Un tenant en su límite recibe un error claro, y un vecino ruidoso no puede agotar el nodo.
// tenant = text before the first ':'
"tenants": [{ "prefix": "acme",
"maxKeys": 1000000,
"maxBytes": 5368709120 }]
// over the limit: HTTP 507 urn:colibri:quota-exceeded
Registro de auditoría de solo anexado
Cada inicio de sesión y cada acción que modifica algo se anexa al registro de auditoría. La exportación del registro forma parte del plan Enterprise.
data/audit/*.jsonl # append-only
sso.login sso.denied
tls.rotate tls.ca.regenerate
tenant.quota.update
# every sign-in and every mutating action
Cifrado en reposo
AES-256-GCM en cada registro, una clave de datos por shard, envuelta por una clave que tú controlas: una KEK local o HashiCorp Vault Transit, con rotación en línea. Actívala, rota las claves y desactívala desde Admin; rotar una clave no reinicia los nodos.
Node__Encryption__Enabled=true
Node__Encryption__Vault__Address=https://vault.internal:8200
Node__Encryption__Vault__KeyName=colibri
# AES-256-GCM per record
# one DEK per shard, wrapped by your KEK
# or manage it in Admin: Storage > Encryption at rest