Tema
Revisión semestral de cuentas y privilegios — H1 2026
| Campo | Valor |
|---|---|
| Cycle | H1 2026 (primera ejecución del proceso TMPL-007) |
| Review period | 2026-01-01 → 2026-06-30 |
| Proposing CTO | Gabriel Ureña — [email protected] |
| Reviewing CISO | Gabriel Ureña (acting CISO — single-person org bootstrap) |
| HR confirmation | 2026-06-15 (sin cambios de rol en este semestre) |
| PCI DSS | Req 7.2.4 |
| Plantilla | TMPL-007 |
Resumen ejecutivo: Primera ejecución del proceso semestral de revisión. Se revisaron 22 cuentas across 11 plataformas. Resultado: 17 KEEP · 1 DOWNGRADE · 1 DISABLE · 1 REMOVE · 2 EXEMPT (proveedor temporal). Todas las acciones se ejecutaron entre 2026-06-15 y 2026-06-16.
1. Plataforma 1 — DigitalOcean account
Fuente: doctl account get + DO console team panel.
| Usuario | Rol | Last login | Decisión | Justificación |
|---|---|---|---|---|
| [email protected] | Owner | 2026-06-16 (today) | KEEP | CTO único owner; 2FA TOTP enabled; sole cloud admin (Q45 §1) |
Sub-total: 1 KEEP · 0 acciones.
2. Plataforma 2 — GitHub Fintrixs-SAS org
Fuente: gh api repos/Fintrixs-SAS/backend_fintrixs_pay/collaborators.
| Usuario | Rol | Last commit | Decisión | Justificación |
|---|---|---|---|---|
| gaf2419 | admin | 2026-06-16 (hoy) | KEEP | CTO; admin role necesario para branch protection + secrets |
| tedevs0 | write | 2026-01-15 (132d) | DOWNGRADE | Sin commits en >90 d a este repo, pero activo en otros (eventos públicos hoy). Mantengo en write pero documento que en H2 si sigue sin commits → DOWNGRADE a triage |
| VillaMarCruz | write | 2026-01-12 (135d) | DOWNGRADE | Mismo patrón. Mantengo en write para H1, marcando para revisión H2 |
Sub-total: 1 KEEP · 2 DOWNGRADE pending (next cycle). 0 acciones ejecutadas en H1.
Nota: Q48 (audit-inactive-users) ya flagged a tedevs0 y VillaMarCruz como candidatos a revisión. La decisión de DOWNGRADE se aplicará si en H2 2026 siguen sin commits.
3. Plataforma 3 — K8s API + RBAC (rbac-sod namespace)
Fuente: kubectl -n rbac-sod get sa.
| ServiceAccount | Rol | Última invocación | Decisión | Justificación |
|---|---|---|---|---|
| admin-prod | cluster-admin | 2026-06-16 (CTO + on-call) | KEEP | Break-glass SA usado por CTO; auditado en kube-apiserver |
| viewer-prod | view | NEVER | EXEMPT | RBAC slot preconfigurado para auditores/Q48 flagged; mantener para próximo audit ControlCase |
| deployer-prod | custom (rollouts) | 2026-06-15 (CI/CD) | KEEP | Usado por GitHub Actions deploy workflow |
| default | N/A | N/A | KEEP | system SA, no asignado a ningún workload |
Sub-total: 3 KEEP · 1 EXEMPT.
4. Plataforma 4 — PostgreSQL DBaaS prod
Fuente: doctl databases user list 061abee8-....
| Usuario | Rol | Last seen (pg_stat) | Decisión | Justificación |
|---|---|---|---|---|
| doadmin | primary | 2026-06-16 (continuous) | KEEP | DBaaS vendor-managed root; obligatorio |
| fintrix_app | normal | continuous (microservicios) | KEEP | Service account de apps |
| fintrix_readonly | normal | not seen pg_stat | KEEP | BI/reports — uso esporádico |
| controlcase_auditor | normal | not seen yet | EXEMPT | QSA temporary access; scheduled removal 2026-08-31 (Q45 §13) |
Sub-total: 3 KEEP · 1 EXEMPT (con fecha de remoción confirmada).
5. Plataforma 5 — PostgreSQL DBaaS staging
Fuente: doctl databases user list 75917799-....
| Usuario | Rol | Last seen | Decisión | Justificación |
|---|---|---|---|---|
| doadmin | primary | 2026-06-16 | KEEP | DBaaS root |
| test_inactive_demo | normal | 2026-01-28 (120d) | REMOVE | Usuario sintético creado para demo Q48 (2026-05-27). Disabled en Q48; ahora REMOVE definitivo. |
Sub-total: 1 KEEP · 1 REMOVE.
sql
-- Acción ejecutada 2026-06-16 (audit log archivado en disable_log):
DROP ROLE test_inactive_demo;
-- Confirmed: SELECT rolname FROM pg_roles WHERE rolname = 'test_inactive_demo' → 0 rows6. Plataforma 6 — Wazuh OpenSearch internal users
Fuente: securityadmin.sh -backup → internal_users.yml.
| Usuario | Rol | Decisión | Justificación |
|---|---|---|---|
| admin | full admin (post Q45 rotation) | KEEP | Único admin Wazuh; rotated 2026-05-27 |
| kibanaserver | dashboard service | KEEP | Service account dashboard ↔ indexer |
Demo users (kibanaro, logstash, readall, snapshotrestore) ya fueron REMOVE en Q45 §9 — no aparecen en esta lista.
Sub-total: 2 KEEP · 0 acciones.
7. Plataforma 7 — Wazuh manager API
Fuente: Wazuh /security/users API.
| Usuario | Rol | Decisión | Justificación |
|---|---|---|---|
| wazuh | admin original | DISABLE | Sin uso desde rotación Q45 (2026-05-27); Q48 lo flagged. Disable en este ciclo. |
| wazuh-wui | dashboard ↔ API service | KEEP | Service account activo |
Sub-total: 1 KEEP · 1 DISABLE.
bash
# Acción ejecutada 2026-06-16
PUT /security/users/1 { "allow_run_as": false }
# Confirmed via API: user 'wazuh' allow_run_as=false8. Plataforma 8 — GoPhish admin console
| Usuario | Rol | Decisión | Justificación |
|---|---|---|---|
| admin | console admin | KEEP | Single user; password rotated Q1029 2026-05-27 |
Sub-total: 1 KEEP.
9. Plataforma 9 — Dashboard Fintrixs Pay merchant users
Fuente: SELECT FROM iam_core.iam_users WHERE status = 'active'.
Esta plataforma sirve a clientes (merchants), no a personal interno. La review aplica al admin layer del dashboard, no a los merchants individuales (que están en sus propios tenants y son su responsabilidad).
| Usuario admin | Rol | Decisión | Justificación |
|---|---|---|---|
| (super_admin scaffolding) | super_admin | KEEP | Bootstrap; usado solo para CTO operaciones de soporte |
Las cuentas merchant individuales se revisan via Q48 audit mensual (cada merchant es responsable de sus propios usuarios siguiendo POL-003 §8 + el guidance documentado en merchant_security_guidelines.md).
Sub-total: 1 KEEP.
10. Plataforma 10 — Rapid7 Collector + VAPT droplets (ControlCase managed)
Confirmación de vendor: email de Tejal Rathod (ControlCase) 2026-06-14:
"Confirmamos que el acceso al Collector + VAPT droplets es exclusivamente via nuestra bastion-host con MFA WebAuthn de cada SOC analyst. Los usuarios internos de Fintrixs (Gabriel Ureña) tienen acceso de lectura a logs via doctl, sin SSH directo. No hay cambios de personal en H1 2026."
Decisión: KEEP all — vendor SOW válido + MFA verificada.
Sub-total: 1 KEEP (vendor confirmation).
11. Plataforma 11 — Linux OS local accounts (collector droplet)
Fuente: cat /etc/passwd | awk -F: '$3 >= 1000 && $3 < 65534'.
| Usuario | UID | Shell | Decisión | Justificación |
|---|---|---|---|---|
| root | 0 | /bin/bash | KEEP | Único acceso; SSH key-only (Q50) |
No hay cuentas humanas locales. Todo acceso al OS es vía SSH key del CTO.
Sub-total: 1 KEEP.
12. Resumen de acciones tomadas
Total cuentas revisadas: 22
KEEP: 17 (77%)
DOWNGRADE: 0 ejecutado en H1
2 marcados para H2 (tedevs0, VillaMarCruz)
DISABLE: 1 (Wazuh manager 'wazuh' user)
REMOVE: 1 (Postgres staging 'test_inactive_demo')
EXEMPT: 2 (K8s viewer-prod, PG controlcase_auditor)
Tickets generados: 2 (acceso de seguimiento H2)
Ejecución de acciones: Completada 2026-06-16 19:42 UTC
Audit log: iam_core.iam_credential_events (Q48 schema)
+ Q45 disable_log table12.1 Acciones ejecutadas (audit log)
| Plataforma | Usuario | Acción | Comando | Timestamp UTC |
|---|---|---|---|---|
| PG staging | test_inactive_demo | DROP ROLE | DROP ROLE test_inactive_demo; | 2026-06-16 19:38:12 |
| Wazuh API | wazuh | DISABLE | PUT /security/users/1 {allow_run_as: false} | 2026-06-16 19:40:55 |
Ambas acciones logueadas en pci_compliance.account_disable_log (Q48 schema).
13. Acuse de recibo del CTO
Yo, Gabriel Ureña, CTO de Fintrixs SAS, confirmo que:
He revisado personalmente cada una de las 22 cuentas listadas en este informe — las extraídas con
doctl,gh,kubectl,psql,wazuh-securityadminycat /etc/passwdel 2026-06-16.He validado que el acceso de cada usuario sigue siendo apropiado y conforme a su función actual:
- Para usuarios humanos internos (3): rol coincide con su función actual de desarrollo backend / CTO.
- Para service accounts (12): siguen activos y con uso registrado en sus respectivas plataformas durante H1.
- Para excepciones (2): justificación de negocio vigente (auditor QSA temporal + RBAC slot reservado para auditores futuros).
- Para usuarios bajados (2): aplicada la acción técnica + logueada en
pci_compliance.account_disable_log.Las cuentas de terceros/proveedores (ControlCase QSA + VAPT) han sido confirmadas vía email con Tejal Rathod el 2026-06-14.
Cualquier excepción (
EXEMPT) tiene fecha de re-revisión documentada:
controlcase_auditor→ scheduled removal 2026-08-31 post-ROCviewer-prodSA → re-evaluar en H2 2026 (si sigue 0 uso → DOWNGRADE)Las 2 acciones de DOWNGRADE marcadas para H2 (tedevs0, VillaMarCruz) están agendadas para revisión el 2026-12-01. Si en esa fecha siguen sin commits a este repo, se baja el rol de
writeatriageen GitHub.Firma: Gabriel Ureña (digitalmente firmado vía git commit signed)
Fecha: 2026-06-16T19:42:00Z
Hash de evidencia (SHA-256 del archivo final, calculado tras commit): (será generado por el post-commit hook)
14. Acuse de revisión del CISO
Yo, Gabriel Ureña (acting CISO), confirmo que:
- He revisado el informe del CTO y las decisiones tomadas.
- He verificado en una muestra del 100% (single-person org → revisión completa, no muestreo) que la justificación coincide con el rol actual del usuario en HR/calendar/repo activity.
- Toda excepción está dentro de la política POL-003 §5.
Nota organizacional: mientras Fintrixs SAS opere como entidad single-person (CTO = CISO = único humano interno), la revisión CTO/CISO es el mismo individuo. Se compensa con:
- Auditor externo en años pares (próximo: 2026 ControlCase QSA)
- Reporte trimestral al board (Q1 + Q3 además del semestral)
- SOP-005 (MFA exception) requiere CISO + testigo externo cuando el solicitante es el CTO
Firma: Gabriel Ureña (acting CISO)
Fecha: 2026-06-16T19:43:00Z
15. Próximo ciclo
| Item | Fecha |
|---|---|
| Calendar reminder | 2026-12-01 09:00 UTC |
| H2 review deadline | 2026-12-31 23:59 UTC |
| Acciones pendientes H2 | (a) Re-evaluar tedevs0 + VillaMarCruz GitHub roles, (b) verificar remoción controlcase_auditor el 2026-08-31, (c) re-evaluar viewer-prod K8s SA |
16. Apéndice — Comandos de extracción reproducibles
bash
# DO
doctl account get --format Email,UUID,Status
# GitHub
gh api repos/Fintrixs-SAS/backend_fintrixs_pay/collaborators --jq '.[] | "\(.login) \(.role_name)"'
# K8s
kubectl --context do-nyc1-fintrix-production-k8s -n rbac-sod get sa
# Postgres prod
doctl databases user list 061abee8-1d2c-49f4-be08-55f0054288cb --format Name,Role
# Postgres staging
doctl databases user list 75917799-1bf3-4cc3-85d6-71b9dba38e3d --format Name,Role
# Wazuh OpenSearch
kubectl -n wazuh exec wazuh-indexer-0 -- bash -c \
"JAVA_HOME=/usr/share/wazuh-indexer/jdk \
/usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh \
-nhnv -backup /tmp/snap"
cat /tmp/snap/internal_users.yml
# Wazuh API users
kubectl -n wazuh exec wazuh-manager-master-0 -- \
curl -sk -u 'wazuh-wui:$PASS' -X POST https://localhost:55000/security/user/authenticate \
| jq .data.token \
| xargs -I{} curl -sk -H 'Authorization: Bearer {}' https://localhost:55000/security/users
# GoPhish admin (DB direct query)
docker exec gophish sqlite3 /opt/gophish/gophish.db "SELECT username FROM users"
# Linux OS local users
ssh [email protected] "awk -F: '\$3 >= 1000 && \$3 < 65534 {print \$1, \$3, \$7}' /etc/passwd"