OP.AAC.4 Proceso de gestión de derechos de acceso
Objetivo
Establecer el proceso integral de gestión del ciclo de vida de los derechos de acceso en Legit Health Plus, desde la solicitud inicial hasta la revocación, garantizando que los accesos se otorgan según la necesidad legítima, se mantienen actualizados y se revocan oportunamente, cumpliendo con ENS, MDR y normativas de ciberseguridad para dispositivos médicos.
Alcance
Este procedimiento aplica a:
- Gestión de derechos de acceso para todos los usuarios del sistema
- Administración de privilegios especiales y cuentas administrativas
- Control de acceso a datos clínicos y algoritmos diagnósticos
- Gestión de permisos para APIs e integraciones
- Procesos de revisión y recertificación de accesos
- Procedimientos de emergencia y acceso temporal
Guía de implantación
-
En la estructuración de los derechos de acceso se deben en cuenta las necesidades de cada usuario según su función en la organización y las tareas que tiene encomendadas.
-
La necesidad de acceso debe venir por escrito de parte del responsable de la información o proceso al que va a concedérsele acceso.
-
El reconocimiento de la necesidad de acceso debe ser reasegurado periódicamente, extinguiéndose cuando no se demuestre positivamente que la necesidad perdura.
-
Deberá prestarse una especial atención a las cuentas de administración del sistema (administración de equipos, de aplicaciones, de comunicaciones, de seguridad), estableciendo procedimientos ágiles de cancelación y mecanismos de monitorización del uso que se hace de ellas.
Implementación en Legit Health Plus
Ciclo de Vida de Derechos de Acceso
Categorías de Derechos de Acceso
Clasificación por Criticidad
Categoría | Descripción | Ejemplos | Controles Especiales |
---|---|---|---|
Crítico | Acceso a funciones que afectan seguridad del paciente | Modificación algoritmos IA, configuración sistema | MFA + Aprobación dual + Auditía completa |
Privilegiado | Acceso administrativo al sistema | Admin sistemas, gestión usuarios | MFA + Supervisión + Sesión grabada |
Sensible | Acceso a datos personales de salud | Historiales clínicos, diagnósticos | MFA + Justificación + Log detallado |
Estándar | Acceso operativo normal | Uso clínico rutinario | Autenticación fuerte + Audit básica |
Limitado | Acceso restringido o temporal | Consultores, auditores | Tiempo limitado + Supervisión |
Proceso de Solicitud y Aprobación
Workflow de Solicitud
class AccessRequestWorkflow:
"""
Gestión del workflow de solicitudes de acceso en Legit Health Plus
"""
def __init__(self):
self.approval_matrix = {
"critical": {
"approvers": ["direct_manager", "ciso", "clinical_director"],
"sla_hours": 24,
"requires_justification": True,
"requires_risk_assessment": True
},
"privileged": {
"approvers": ["direct_manager", "ciso"],
"sla_hours": 12,
"requires_justification": True,
"requires_training": True
},
"sensitive": {
"approvers": ["direct_manager", "dpo"],
"sla_hours": 8,
"requires_justification": True,
"requires_gdpr_training": True
},
"standard": {
"approvers": ["direct_manager"],
"sla_hours": 4,
"requires_justification": False
},
"limited": {
"approvers": ["sponsor", "security_team"],
"sla_hours": 2,
"max_duration_days": 30
}
}
def create_request(self, requester_id: str, access_type: str,
justification: str, resources: list) -> dict:
"""
Crea una nueva solicitud de acceso
"""
request = {
"id": generate_uuid(),
"requester": requester_id,
"timestamp": datetime.utcnow(),
"access_type": access_type,
"resources": resources,
"justification": justification,
"status": "pending",
"approvals": [],
"sla_deadline": self.calculate_sla(access_type)
}
# Validaciones automáticas
self.validate_segregation(requester_id, resources)
self.check_prerequisites(requester_id, access_type)
# Iniciar proceso de aprobación
self.initiate_approval_process(request)
return request
def automated_provisioning(self, approved_request: dict):
"""
Provisionamiento automático tras aprobación
"""
# Crear cuenta/rol en IdP
identity_created = self.create_identity(approved_request)
# Asignar permisos en sistemas
permissions_assigned = self.assign_permissions(approved_request)
# Configurar MFA si requerido
if approved_request["access_type"] in ["critical", "privileged", "sensitive"]:
self.setup_mfa(approved_request["requester"])
# Programar revisión periódica
self.schedule_review(approved_request)
# Notificar al usuario
self.send_activation_notification(approved_request)
return True
Gestión de Cuentas Privilegiadas (PAM)
Arquitectura PAM
Políticas de Cuentas Privilegiadas
Política | Descripción | Implementación |
---|---|---|
Just-In-Time (JIT) | Acceso privilegiado solo cuando necesario | Máximo 8 horas, requiere justificación |
Zero Standing Privileges | Sin privilegios permanentes | Todos los accesos admin son temporales |
Session Recording | Grabación de sesiones privilegiadas | AWS Session Manager con almacenamiento S3 |
Credential Rotation | Rotación automática de credenciales | Cada 30 días o tras cada uso |
Break-Glass | Acceso de emergencia | Proceso documentado con alertas inmediatas |
Revisión y Recertificación de Accesos
Calendario de Revisiones
Tipo de Acceso | Frecuencia | Revisor | Acción si no Justificado |
---|---|---|---|
Crítico | Mensual | CISO + Manager | Revocación inmediata |
Privilegiado | Bimensual | Security Team + Manager | Revocación en 24h |
Sensible | Trimestral | DPO + Manager | Revocación en 48h |
Estándar | Semestral | Manager | Revocación en 7 días |
Temporal | Al vencimiento | Sponsor | Eliminación automática |
Proceso de Recertificación
class AccessRecertification:
"""
Proceso automatizado de recertificación de accesos
"""
def initiate_certification_campaign(self, scope: str):
"""
Inicia campaña de recertificación
"""
campaign = {
"id": generate_campaign_id(),
"start_date": datetime.now(),
"end_date": datetime.now() + timedelta(days=14),
"scope": scope,
"status": "active"
}
# Identificar accesos a revisar
accesses_to_review = self.get_accesses_for_review(scope)
# Agrupar por manager
reviews_by_manager = self.group_by_manager(accesses_to_review)
# Enviar a cada manager
for manager, accesses in reviews_by_manager.items():
self.send_review_request(manager, accesses, campaign)
return campaign
def process_certification_decision(self, review_id: str, decision: str,
justification: str = None):
"""
Procesa decisión de certificación
"""
valid_decisions = ["maintain", "modify", "revoke"]
if decision not in valid_decisions:
raise ValueError(f"Decisión inválida: {decision}")
if decision == "maintain":
# Extender acceso por período definido
self.extend_access(review_id)
self.schedule_next_review(review_id)
elif decision == "modify":
# Iniciar proceso de modificación
self.create_modification_request(review_id, justification)
elif decision == "revoke":
# Programar revocación
self.schedule_revocation(review_id, justification)
# Registrar decisión
self.log_certification_decision(review_id, decision, justification)
Revocación y Desactivación
Triggers de Revocación
Trigger | Tiempo de Acción | Proceso | Notificaciones |
---|---|---|---|
Terminación de empleo | Inmediato | Automatizado via HR system | HR, Manager, Security |
Cambio de rol | 24 horas | Semi-automatizado | Manager, User, Security |
Violación de política | Inmediato | Manual urgente | CISO, Legal, HR |
Expiración temporal | Automático | Completamente automatizado | User, Sponsor |
No recertificado | 48 horas | Automatizado con warning | Manager, User |
Inactividad >90 días | 7 días warning | Automatizado | User, Manager |
Proceso de Desactivación
#!/bin/bash
# Script de desactivación de emergencia
function emergency_revoke() {
local user_id=$1
local reason=$2
# 1. Desactivar cuenta en IdP
aws cognito-idp admin-disable-user --user-pool-id $POOL_ID --username $user_id
# 2. Revocar todos los tokens activos
aws cognito-idp admin-user-global-sign-out --user-pool-id $POOL_ID --username $user_id
# 3. Eliminar de grupos y roles
remove_from_all_groups $user_id
# 4. Bloquear acceso a VPN
revoke_vpn_access $user_id
# 5. Desactivar API keys
disable_api_keys $user_id
# 6. Notificar a sistemas dependientes
notify_downstream_systems $user_id $reason
# 7. Crear registro de auditoría
log_emergency_revocation $user_id $reason
echo "Revocación de emergencia completada para $user_id"
}
Procedimientos
PRO-AAC-010: Solicitud de Derechos de Acceso
-
Iniciación de Solicitud
- Completar formulario R-TF-110-014 en sistema
- Especificar recursos necesarios
- Proporcionar justificación de negocio
- Indicar duración requerida
-
Validación Automática
- Verificación de segregación de funciones
- Comprobación de prerequisitos (formación, etc.)
- Validación de políticas organizacionales
-
Proceso de Aprobación
- Routing automático a aprobadores
- Notificaciones con SLA
- Escalamiento si no hay respuesta
- Documentación de decisiones
-
Provisionamiento
- Creación automatizada de accesos
- Configuración de controles adicionales
- Envío de credenciales seguras
- Confirmación de activación
PRO-AAC-011: Revisión Periódica de Accesos
-
Preparación de Campaña
- Definir alcance y calendario
- Identificar revisores responsables
- Preparar reportes de acceso actual
-
Ejecución de Revisión
- Distribución de listados a revisores
- Plazo de 14 días para completar
- Herramienta web para decisiones
- Justificación obligatoria para mantener
-
Procesamiento de Resultados
- Aplicación automática de decisiones
- Generación de tickets para cambios
- Programación de revocaciones
-
Reporting
- Informe de cumplimiento
- Métricas de la campaña
- Identificación de riesgos
- Recomendaciones de mejora
PRO-AAC-012: Gestión de Acceso Privilegiado
-
Solicitud de Acceso Privilegiado
- Solo para tareas específicas
- Duración máxima 8 horas
- Requiere ticket de cambio o incidente
- Aprobación dual obligatoria
-
Provisión Just-In-Time
- Activación temporal de privilegios
- Credenciales únicas por sesión
- MFA obligatorio
- Inicio de grabación de sesión
-
Monitoreo de Sesión
- Supervisión en tiempo real
- Alertas de comportamiento anómalo
- Capacidad de terminación remota
-
Post-Sesión
- Revocación automática de privilegios
- Rotación de credenciales
- Revisión de logs
- Archivo de grabación
Responsabilidades
Propietarios de Información
- Definir quién necesita acceso a sus recursos
- Aprobar solicitudes de acceso inicial
- Participar en revisiones periódicas
- Notificar cambios en requisitos
Managers
- Solicitar accesos para su equipo
- Validar necesidad continua de acceso
- Participar en campañas de recertificación
- Notificar cambios de personal inmediatamente
Equipo de Identidades y Accesos (IAM)
- Gestionar proceso de solicitudes
- Ejecutar provisionamiento técnico
- Coordinar campañas de recertificación
- Mantener documentación actualizada
Security Operations Center (SOC)
- Monitorear uso de privilegios
- Investigar anomalías de acceso
- Ejecutar revocaciones de emergencia
- Generar reportes de cumplimiento
Registros y Evidencias
Documentación Requerida
| Registro | Descripción | Retención | Ubicación | |----------|-------------|-----------|-----------|| | R-TF-110-014 | Solicitud de acceso | 7 años | ServiceNow | | R-TF-110-015 | Aprobaciones de acceso | 7 años | ServiceNow | | R-TF-110-016 | Registro de recertificaciones | 5 años | SharePoint | | R-TF-110-017 | Log de accesos privilegiados | 3 años | AWS CloudWatch | | R-TF-110-018 | Grabaciones de sesiones PAM | 1 año | AWS S3 |
Evidencias de Auditoría
{
"access_lifecycle_event": {
"event_type": "access_granted",
"request_id": "REQ-2024-001234",
"user": "LH-HCP-john-doe",
"resources": ["patient_data_read", "diagnosis_execute"],
"approvals": [
{ "approver": "manager-jane", "timestamp": "2024-01-15T10:00:00Z" },
{ "approver": "ciso-bob", "timestamp": "2024-01-15T11:00:00Z" }
],
"provisioned": "2024-01-15T12:00:00Z",
"expires": "2024-07-15T12:00:00Z",
"next_review": "2024-04-15T00:00:00Z"
}
}
Métricas y KPIs
Indicadores de Gestión de Accesos
Métrica | Objetivo | Frecuencia | Responsable |
---|---|---|---|
Tiempo medio de provisionamiento | <4 horas estándar, <24h crítico | Semanal | IAM Team |
% Solicitudes aprobadas automáticamente | >70% | Mensual | Process Owner |
Tasa de recertificación completada | 100% en plazo | Trimestral | Compliance |
Accesos no utilizados >90 días | <5% | Mensual | IAM Team |
Tiempo de revocación tras baja | <1 hora | Por evento | HR + IAM |
Sesiones PAM sin incidentes | >99% | Mensual | SOC |
Dashboard de Gestión
- Estado de solicitudes en curso
- Accesos próximos a expirar
- Campañas de recertificación activas
- Uso de accesos privilegiados
- Tendencias de solicitudes por tipo
- Alertas de accesos anómalos
Referencias Cruzadas
Documentos Internos
- OP.AAC.1: Identificación - Base para gestión de derechos
- OP.AAC.2: Requisitos de acceso - Definición de permisos
- OP.AAC.3: Segregación - Restricciones de asignación
- GP-013: Ciberseguridad - Marco general de seguridad
- T-024-007: Post-Market Surveillance - Monitoreo de accesos
- R-TF-013-002: Risk Management - Riesgos de acceso indebido
Cumplimiento Normativo
- ENS: [op.acc.4] Proceso de gestión de derechos de acceso
- ISO 27001: A.9.2 - Gestión de acceso de usuarios
- MDR: Requisito 17.4 - Protección contra acceso no autorizado
- GDPR: Artículo 25 - Protección de datos por diseño
- FDA Cybersecurity: Gestión de autenticación y autorización
- NIS2: Artículo 21 - Medidas de ciberseguridad
Documentos de referencia
- ISO/IEC 27000
- 27002:2013:
- 9.2.2 - Provisión de acceso de usuario
- 9.2.3 - Gestión de privilegios de acceso
- 9.2.5 - Revisión de los derechos de acceso de usuario
- 9.2.6 - Retirada o reasignación de los derechos de acceso
- 9.4.1 - Restricción del acceso a la información
- 27002:2013:
- NIST SP 800-53 rev4:
- [AC-3] Access Enforcement
- [AC-24] Access Control Decisions
- [CM-5] Access Restrictions for Change
- 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