rbac
rbac
RBAC (Role-Based Access Control) limita lo que puede hacer cada servicio, operador y proceso dentro del sistema KYC. En Kubernetes, el RBAC nativo controla qué pods pueden acceder a qué recursos. En la capa de aplicación, los roles controlan el acceso a las funcionalidades de revisión manual y administración.
When to use
Definir desde el inicio del proyecto. Principio de mínimo privilegio: cada servicio solo puede acceder a los recursos que necesita para su función.
Instructions
- RBAC en Kubernetes para los servicios KYC (
k8s/rbac.yaml):apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: kyc-api-role rules: - apiGroups: [""] resources: ["secrets"] resourceNames: ["kyc-db-credentials", "kyc-jwt-key"] verbs: ["get"] - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: kyc-api-binding subjects: - kind: ServiceAccount name: kyc-api roleRef: kind: Role name: kyc-api-role - Roles de aplicación en FastAPI:
class UserRole(str, Enum): REVIEWER = "reviewer" # puede ver y decidir casos en revisión manual ADMIN = "admin" # puede cambiar thresholds y configuración AUDITOR = "auditor" # puede ver logs de auditoría, solo lectura API_CLIENT = "client" # solo puede iniciar sesiones KYC def require_role(required_role: UserRole): async def dependency(payload: dict = Depends(verify_jwt)): if payload.get("role") != required_role: raise HTTPException(403, "Insufficient permissions") return dependency - Aplicar en endpoints:
@app.get("/admin/thresholds", dependencies=[Depends(require_role(UserRole.ADMIN))]). - En Vault, aplicar políticas por servicio: el kyc-api solo puede leer
secret/kyc/, los workers solosecret/models/.
Notes
- El ServiceAccount de cada pod en Kubernetes debe ser diferente — no usar el ServiceAccount por defecto.
- Los cambios de thresholds de decisión deben requerir rol ADMIN y quedar registrados en el audit log.
- Revisar periódicamente (trimestral) los roles asignados — eliminar accesos que ya no son necesarios (principio de menor privilegio).
More from davidcastagnetoa/skills
traefik
Reverse proxy moderno con autodiscovery nativo en Kubernetes y Let's Encrypt
63easyocr
OCR alternativo a PaddleOCR, excelente en caracteres especiales y múltiples scripts
32prisma-nestjs-patterns
>
26c4_model_structurizr
Diagramas de arquitectura C4 como código con Structurizr DSL, versionados en Git
23exif_metadata_analyzer
Analizar metadatos EXIF para detectar edición previa con Photoshop, GIMP u otros editores
19asyncpg
Cliente PostgreSQL async de alto rendimiento para el backend FastAPI del pipeline KYC
14