OP.AAC.2 Requisitos de acceso
Objetivo
Definir y documentar los requisitos de acceso al sistema Legit Health Plus, estableciendo los controles necesarios para garantizar que solo usuarios autorizados puedan acceder a los recursos según el principio de menor privilegio y necesidad de conocer, cumpliendo con ENS, MDR y normativas de ciberseguridad para dispositivos médicos.
Alcance
Este procedimiento aplica a:
- Control de acceso a todos los componentes del sistema Legit Health Plus
- Gestión de permisos para datos de pacientes y diagnósticos médicos
- Acceso a funcionalidades de IA/ML y algoritmos diagnósticos
- Control de acceso a configuraciones y parámetros del sistema
- Gestión de acceso a APIs y servicios de integración
- Control de acceso a entornos de desarrollo, pruebas y producción
Guía de implantación
-
Es necesario que tanto los sistemas en producción como los previos a su puesta en explotación cuenten con un mecanismo de control de acceso, basado en el identificador asignado a cada entidad (usuario o proceso) y un mecanismo de autenticación.
-
Para definir este control de accesos, debe definirse un documento o matriz donde se especifique cuáles son los componentes del sistema y sus ficheros o registros de configuración y se relacionen con los diferentes permisos de usuario, de manera que únicamente puedan acceder a los recursos los usuarios autorizados.
-
Será el responsable de cada información o servicio, quien especifique los derechos de acceso a los mismos, responsabilizándose de la asignación de autorización y nivel de acceso al mismo.
Implementación en Legit Health Plus
Modelo de Control de Acceso
Legit Health Plus implementa un modelo híbrido de control de acceso que combina:
- RBAC (Role-Based Access Control): Para permisos generales basados en roles
- ABAC (Attribute-Based Access Control): Para decisiones contextuales
- MAC (Mandatory Access Control): Para datos sensibles de pacientes
Matriz de Control de Acceso
Definición de Recursos
Recurso | Clasificación | Nivel de Protección | Control Aplicado |
---|---|---|---|
Datos de Pacientes | ALTA | Cifrado + Control Estricto | MAC + RBAC |
Algoritmos IA/ML | MEDIA | Protección Integridad | RBAC |
Configuración Sistema | ALTA | Audit + Approval | RBAC + MFA |
Logs de Auditoría | MEDIA | Solo Lectura | RBAC |
APIs Diagnóstico | ALTA | Rate Limiting + Auth | OAuth + ABAC |
Documentación Clínica | MEDIA | Control Versiones | RBAC |
Matriz de Permisos por Rol
Leyenda: R=Read, W=Write, X=Execute, D=Delete, A=Approve
Recurso / Rol | Médico (HCP) | Admin IT (ITP) | Soporte | API Client | Paciente |
---|---|---|---|---|---|
Datos Pacientes | |||||
- Ver propios pacientes | R | - | - | - | R (propio) |
- Modificar diagnósticos | RW | - | - | - | - |
- Eliminar registros | - | - | - | - | - |
Algoritmos IA | |||||
- Ejecutar análisis | X | - | - | X | - |
- Ver resultados | R | R | R | R | R (propio) |
- Configurar parámetros | - | RW | - | - | - |
Configuración | |||||
- Parámetros sistema | - | RWA | R | - | - |
- Usuarios y roles | - | RWD | R | - | - |
- Integraciones | - | RWA | R | - | - |
Logs y Auditoría | |||||
- Logs propios | R | R | R | R | - |
- Logs sistema | - | R | R | - | - |
- Informes seguridad | - | RW | R | - | - |
Sistema de Autorización
Arquitectura de Autorización
Políticas de Acceso
{
"policy": "medical_data_access",
"version": "1.0",
"rules": [
{
"id": "hcp_patient_data",
"description": "HCP accede a datos de sus pacientes",
"subject": { "role": "HCP" },
"resource": { "type": "patient_data" },
"action": ["read", "write"],
"condition": {
"patient_assignment": true,
"working_hours": true,
"location": "authorized_network"
},
"effect": "ALLOW"
},
{
"id": "emergency_override",
"description": "Acceso de emergencia con justificación",
"subject": { "role": "HCP", "emergency_flag": true },
"resource": { "type": "patient_data" },
"action": ["read"],
"condition": {
"audit_reason": "required",
"notification": "immediate"
},
"effect": "ALLOW"
}
]
}
Control de Acceso a Datos Sensibles
Clasificación de Datos
Categoría | Descripción | Ejemplos | Controles Requeridos |
---|---|---|---|
Crítico | Datos que afectan directamente la seguridad del paciente | Diagnósticos IA, imágenes médicas | Cifrado E2E, MFA, audit completo |
Sensible | Información personal de salud (PHI) | Historiales, datos demográficos | Cifrado, RBAC, audit |
Interno | Datos operacionales del sistema | Configuraciones, logs | RBAC, integridad |
Público | Información no sensible | Documentación, estadísticas agregadas | Control de integridad |
Segregación de Datos
-- Ejemplo de segregación por tenant en base de datos
CREATE SCHEMA tenant_hospital_a;
CREATE SCHEMA tenant_clinic_b;
-- Row Level Security para datos de pacientes
CREATE POLICY patient_isolation ON patients
FOR ALL
TO application_role
USING (tenant_id = current_setting('app.current_tenant'));
Control de Acceso a APIs
Autenticación de APIs
# Ejemplo de validación de acceso a API
from fastapi import Depends, HTTPException, Security
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
class APIAccessControl:
def __init__(self):
self.security = HTTPBearer()
async def validate_access(
self,
credentials: HTTPAuthorizationCredentials = Security(security),
resource: str = None,
action: str = None
):
# Validar token JWT
token_data = self.verify_jwt(credentials.credentials)
# Verificar permisos RBAC
if not self.check_rbac(token_data.role, resource, action):
raise HTTPException(403, "Insufficient permissions")
# Verificar rate limiting
if not self.check_rate_limit(token_data.client_id):
raise HTTPException(429, "Rate limit exceeded")
# Aplicar políticas ABAC contextuales
if not self.check_abac_policies(token_data, resource):
raise HTTPException(403, "Access denied by policy")
return token_data
@app.get("/api/v1/diagnosis/{patient_id}")
async def get_diagnosis(
patient_id: str,
auth = Depends(APIAccessControl().validate_access)
):
# Endpoint protegido con control de acceso
pass
Procedimientos
PRO-AAC-004: Definición de Requisitos de Acceso
-
Análisis de Necesidades
- Identificar recursos a proteger
- Clasificar según criticidad y sensibilidad
- Determinar niveles de acceso requeridos
-
Diseño de Controles
- Seleccionar mecanismos de control apropiados
- Definir políticas de acceso
- Establecer excepciones y casos especiales
-
Documentación
- Crear matriz de control de acceso
- Documentar políticas en formato estructurado
- Mantener registro de decisiones de diseño
-
Validación
- Revisar con stakeholders
- Verificar cumplimiento normativo
- Aprobar formalmente
PRO-AAC-005: Implementación de Controles
-
Configuración Técnica
- Implementar políticas en sistemas
- Configurar reglas de firewall
- Establecer ACLs en bases de datos
-
Testing
- Pruebas de acceso positivas
- Pruebas de denegación
- Validación de logs de auditoría
-
Despliegue
- Migración gradual
- Monitorización intensiva
- Rollback plan
PRO-AAC-006: Revisión de Accesos
-
Revisión Periódica
- Quarterly: Accesos privilegiados
- Semestral: Accesos estándar
- Anual: Políticas completas
-
Análisis de Logs
- Identificar accesos anómalos
- Detectar intentos de escalación
- Revisar accesos de emergencia
-
Ajustes
- Revocar accesos no utilizados
- Ajustar políticas según uso real
- Actualizar documentación
Responsabilidades
Data Protection Officer (DPO)
- Clasificar datos según sensibilidad
- Aprobar políticas de acceso a datos personales
- Supervisar cumplimiento GDPR
Security Architect
- Diseñar arquitectura de control de acceso
- Definir políticas técnicas
- Validar implementaciones
Product Owner
- Definir requisitos funcionales de acceso
- Aprobar matriz de permisos
- Validar experiencia de usuario
DevSecOps Team
- Implementar controles técnicos
- Automatizar enforcement de políticas
- Monitorizar cumplimiento continuo
Registros y Evidencias
Documentación Requerida
Documento | Descripción | Actualización | Responsable |
---|---|---|---|
R-TF-110-005 | Matriz de Control de Acceso | Trimestral | Security Architect |
R-TF-110-006 | Políticas de Acceso (JSON/YAML) | Mensual | DevSecOps |
R-TF-110-007 | Informe de Revisión de Accesos | Trimestral | CISO |
R-TF-110-008 | Registro de Excepciones | Por evento | Security Team |
Métricas de Control
# Ejemplo de métricas monitorizadas
metrics = {
"access_denied_rate": {"threshold": 0.05, "window": "1h"},
"privilege_escalation_attempts": {"threshold": 0, "window": "24h"},
"emergency_access_usage": {"threshold": 5, "window": "7d"},
"unused_permissions": {"threshold": 0.1, "window": "30d"},
"policy_violations": {"threshold": 0, "window": "1h"}
}
Métricas y KPIs
KPI | Objetivo | Medición | Frecuencia |
---|---|---|---|
Tasa de accesos denegados legítimos | <1% | Denied_valid / Total_requests | Diario |
Tiempo medio de provisión de acceso | <4 horas | Sum(provision_time) / Count | Semanal |
Cobertura de revisión de accesos | 100% | Reviewed / Total_accounts | Trimestral |
Políticas sin violaciones | >95% | Policies_ok / Total_policies | Continuo |
Detección de accesos anómalos | <5 min | Detection_time | Por evento |
Referencias Cruzadas
Documentos Internos
- OP.AAC.1: Identificación - Base para control de acceso
- OP.AAC.3: Segregación de funciones - Separación de duties
- OP.AAC.4: Gestión de derechos - Lifecycle de permisos
- T-024-006: Threat Model - Amenazas contra control de acceso
- T-024-009: Security Architecture - Implementación técnica
Cumplimiento Normativo
- ENS: [op.acc.2] - Control de acceso
- ISO 27001: A.9.1 - Requisitos de negocio para control de acceso
- MDR: Requisito 17.2 - Protección contra acceso no autorizado
- GDPR: Art. 32 - Medidas técnicas apropiadas
- FDA Guidance: Control de acceso a funciones críticas
Documentos de referencia
- Guías CCN-STIC: - Serie CCN-STIC-500 - Guías para Entornos Windows - Serie CCN-STIC-600 - Guías para otros Entornos - Guía CCN-STIC-827 - Gestión y uso de dispositivos móviles
- ISO/IEC 27000 - ISO/IEC 27002:2013: - 9.1.1 - Política de control de acceso - 9.1.2 - Acceso a redes y servicios en red - 9.4.1 - Restricción del acceso a la información - 9.4.4 - Uso de los recursos del sistema con privilegios especiales - 9.4.5 - Control de acceso al código fuente de los programas
- NIST SP 800-53 rev. 4
- [AC-3] Access Enforcement
- [AC-4] Information Flow Enforcement
- [AC-6] Least Privilege
- [AC-24] Access Control Decisions
- [CM-5] Access Restrictions for Change
- [MP-2] Media Access
- Otras referencias:
- Manageable Network Plan
- Milestone 5: Control Your Network (User Access)
Signature meaning
The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix
of the GP-001
, are:
- Author: Team members involved
- Reviewer: JD-003, JD-004
- Approver: JD-001