Política de Continuidade de Negócio (BCP)

Template Interativo Completo | NIS2 Article 21(2)(f) | ISO 22301 | ENISA 2024/2025

Progresso: 0%

1. Âmbito e Objetivos

1.1 Âmbito de Aplicação

Esta Política de Continuidade de Negócio (BCP) aplica-se a [NOME DA ORGANIZAÇÃO], abrangendo todas as operações críticas, sistemas de informação, processos de negócio e infraestruturas essenciais localizadas em [LOCALIZAÇÕES].

A política cobre os seguintes domínios operacionais:

1.2 Objetivos Estratégicos

Os objetivos fundamentais desta política incluem:

Conformidade NIS2 Article 21(2)(f)

Business continuity, backup management and disaster recovery, and crisis management
Testing and drills to verify effectiveness of continuity measures
Use of cryptography and encryption where appropriate

2. Definições e Terminologia

Termo Definição
RTO (Recovery Time Objective) Tempo máximo aceitável de indisponibilidade de um sistema ou processo antes de causar impacto inaceitável ao negócio
RPO (Recovery Point Objective) Quantidade máxima aceitável de perda de dados medida em tempo (ex: perder no máximo 1 hora de transações)
BIA (Business Impact Analysis) Análise sistemática para identificar processos críticos e quantificar impactos de interrupções
MTD (Maximum Tolerable Downtime) Período máximo que um processo pode estar inativo antes de causar danos irreversíveis ao negócio
MTPD (Maximum Tolerable Period of Disruption) Tempo após o qual a viabilidade da organização seria irrevogavelmente ameaçada
Failover Processo automático ou manual de transferência de operações para sistemas de backup
Failback Retorno de operações do sistema de backup para o sistema primário após recuperação
Hot Site Local de recuperação alternativo totalmente equipado e operacional em standby permanente
Cold Site Instalação básica com infraestrutura mínima que requer configuração significativa antes de uso
Warm Site Solução intermediária com equipamento parcialmente configurado, requer algumas horas para ativação completa

3. Governança e Estrutura de Gestão

3.1 Crisis Management Team (CMT)

A equipa de gestão de crise é responsável pela coordenação estratégica durante incidentes disruptivos. Composição:

3.2 RACI Matrix - Responsabilidades

Atividade Crisis Manager Tech Lead BC Coordinator Comms Officer Legal Advisor
Ativação do BCP A C R I C
Recuperação Sistemas TI A R C I I
Notificação CSIRT/CNCS A C I R C
Comunicação a Stakeholders A I C R C
Validação Conformidade I C C I R
Revisão Pós-Incidente A R R C C

R = Responsible (Executa), A = Accountable (Aprova), C = Consulted (Consultado), I = Informed (Informado)

3.3 Autoridade e Escalamento

Níveis de autoridade durante crise:

4. Business Impact Analysis (BIA)

4.1 Metodologia de Avaliação

A criticidade de processos e sistemas é avaliada com base em:

4.2 Classificação de Criticidade

Tier Criticidade Características Exemplos
Tier 1 CRÍTICO Impacto catastrófico se indisponível >4h. Essencial para sobrevivência organizacional Sistemas de pagamento, transações financeiras, serviços de emergência
Tier 2 IMPORTANTE Impacto significativo se indisponível >24h. Afeta operações principais CRM, email corporativo, gestão de inventário
Tier 3 STANDARD Impacto moderado se indisponível >72h. Funções de suporte Relatórios analíticos, sistemas de arquivo, intranet

4.3 Dependências Críticas

Mapeamento de dependências entre processos e sistemas:

5. RTO/RPO por Sistema Crítico

🧮 Calculadora RTO/RPO

Utilize esta ferramenta para determinar objetivos de recuperação adequados para cada sistema ou processo.

Recomendações para:

RTO Recomendado
RPO Recomendado
Custo Estimado
Solução Recomendada
Recomendações de Implementação:

    5.1 Tabela RTO/RPO de Sistemas Existentes

    Sistema/Processo Criticidade RTO RPO Estratégia de Backup
    Sistema de Pagamentos Online Tier 1 < 2 horas < 15 minutos Replicação síncrona + Hot Site
    Base de Dados de Clientes (CRM) Tier 1 < 4 horas < 30 minutos Backup incremental horário + Warm Site
    Email Corporativo Tier 2 < 12 horas < 1 hora Cloud redundancy (Microsoft 365)
    Sistema ERP Tier 1 < 8 horas < 1 hora Backup diferencial diário + Snapshots
    Gestão de Inventário Tier 2 < 24 horas < 4 horas Backup completo noturno
    Intranet/Portal Colaborativo Tier 3 < 48 horas < 24 horas Backup semanal completo
    Sistemas de Relatórios Analíticos Tier 3 < 72 horas < 48 horas Backup mensal + Archive
    [ADICIONAR SISTEMA] [TIER] [RTO] [RPO] [ESTRATÉGIA]

    6. Procedimentos de Disaster Recovery

    6.1 Playbook: Falha Crítica de Datacenter

    Cenário: Indisponibilidade total do datacenter primário (falha de energia, incêndio, desastre natural)

    Fase 1: Deteção e Ativação (0-30 minutos)

    1. Sistema de monitorização 24/7 deteta falha e alerta equipa de plantão
    2. [NOME] (Technical Recovery Lead) valida severidade do incidente
    3. Se RTO de sistemas Tier 1 em risco, ativa protocolo de failover imediato
    4. Notifica Crisis Manager e BC Coordinator via [CANAL DE EMERGÊNCIA]
    5. Ativa War Room virtual em [PLATAFORMA]

    Fase 2: Failover para Site Secundário (30 min - 2 horas)

    1. Executa script de failover automatizado para sistemas Tier 1:
      • Redireciona DNS para datacenter secundário em [LOCALIZAÇÃO]
      • Ativa instâncias standby na cloud ([AWS/Azure/GCP])
      • Valida integridade de backups mais recentes (RPO check)
    2. Inicia recuperação manual de sistemas Tier 2 a partir de backups
    3. Testa conectividade e funcionalidade de sistemas críticos no site secundário
    4. Valida que perda de dados está dentro dos limites de RPO estabelecidos

    Fase 3: Comunicação e Estabilização (2-4 horas)

    1. Communications Officer notifica stakeholders internos e externos:
      • Colaboradores via [EMAIL/SMS/TEAMS]
      • Clientes afetados via [STATUS PAGE/EMAIL]
      • CSIRT/CNCS se aplicável (NIS2 notificação 24h/72h)
    2. Monitoriza performance de sistemas recuperados
    3. Documenta timeline, ações tomadas, sistemas afetados
    4. Crisis Manager atualiza Board of Directors

    Fase 4: Operação em Modo Contingência (4 horas - semanas)

    1. Mantém operações em datacenter secundário até primário restaurado
    2. Escala sistemas conforme necessário para manter SLAs
    3. Reuniões diárias de status da CMT
    4. Planeia e executa failback quando primário estiver operacional

    6.2 Playbook: Ataque Ransomware

    Cenário: Deteção de ransomware a encriptar ficheiros críticos

    1. Contenção Imediata (0-15 min):
      • Isola segmentos de rede afetados (VLAN quarantine)
      • Desliga sistemas infetados para prevenir propagação
      • Preserva evidências forenses (logs, memory dumps)
    2. Avaliação (15-60 min):
      • Identifica variante de ransomware e IoCs (Indicators of Compromise)
      • Determina extensão da infeção (sistemas, dados afetados)
      • Verifica integridade de backups offline (tape, air-gapped)
    3. Recuperação (1-48 horas):
      • Reconstrói sistemas a partir de imagens limpas
      • Restaura dados de backups verificados como não comprometidos
      • Implementa patches e hardening adicional
      • Aplica regras de firewall/IDS para bloquear C2 servers
    4. Notificação Regulamentar:
      • NIS2: Early warning a CSIRT/CNCS dentro de 24h se critérios preenchidos
      • Incident notification completa dentro de 72h
      • GDPR: Notificação a CNPD dentro de 72h se violação de dados pessoais

    6.3 Playbook: Falha de Fornecedor Crítico

    Cenário: Cloud provider ou ISP principal indisponível

    1. Ativa fornecedor secundário conforme acordos pré-estabelecidos
    2. Redireciona tráfego via BGP anycast ou DNS failover
    3. Contacta Account Manager do fornecedor primário para ETA de recuperação
    4. Se indisponibilidade > [X horas], invoca SLA penalties e considera mudança permanente

    7. Operações Alternativas e Workarounds

    7.1 Instalações de Recuperação

    Hot Site (Tier 1 Systems)

    Warm Site (Tier 2 Systems)

    Cold Site (Tier 3 Systems)

    7.2 Trabalho Remoto em Massa

    Cenário: Escritório principal inacessível (pandemia, desastre natural, falha de infraestrutura)

    7.3 Processos Manuais Temporários

    Para sistemas Tier 2/3 com RTO > 24h, procedimentos manuais aprovados:

    Sistema Indisponível Workaround Manual Duração Máxima Responsável
    Sistema de Faturação Excel + Email manual a clientes 72 horas [EQUIPA FINANCEIRA]
    CRM Google Sheets partilhada + docs impressos 48 horas [EQUIPA VENDAS]
    Sistema de Ticketing Email direto + lista Excel de tracking 24 horas [SUPORTE TI]
    [SISTEMA] [PROCEDIMENTO] [TEMPO] [RESPONSÁVEL]

    8. Testes, Simulações e Exercícios

    8.1 Programa Anual de Testes BCP

    Em conformidade com NIS2 Article 21(2)(f) e ENISA 2024/2025 guidance, a organização executa o seguinte programa de testes:

    Checklist Anual de Testes BCP

    Marque os testes à medida que são concluídos. O progresso é guardado automaticamente.

    • TABLETOP
    • DR SITE
    • DATA RESTORE
    • COMMUNICATION
    • TABLETOP
    • VENDOR
    • DR SITE
    • DATA RESTORE
    • TABLETOP
    • DR SITE
    • DATA RESTORE
    • COMMUNICATION
    • TABLETOP
    • VENDOR
    • DATA RESTORE
    • AUDIT
    • BIA
    • MAINTENANCE
    • MAINTENANCE
    • TRAINING
    Progresso Anual: 0/20 testes concluídos (0%)

    8.2 Critérios de Sucesso para Testes

    8.3 Documentação de Testes

    Cada teste deve gerar:

    9. Manutenção e Atualizações

    9.1 Ciclo de Revisão

    Este documento e os planos associados são revistos nas seguintes frequências:

    Componente Frequência Responsável Aprovador
    Política BCP (este documento) Anual [BC Coordinator] [Crisis Manager]
    Business Impact Analysis (BIA) Anual ou após mudanças significativas [BC Coordinator] [CFO/COO]
    RTO/RPO Targets Semestral [Technical Lead] [CIO]
    DR Playbooks Trimestral [Technical Lead] [BC Coordinator]
    Contact Directory (CMT) Mensal [HR/Admin] [BC Coordinator]
    Vendor Contracts Review Anual (3 meses antes renovação) [Procurement] [CFO]

    9.2 Triggers para Atualização Ad-Hoc

    Revisão extraordinária obrigatória quando ocorrer:

    9.3 Controlo de Versões

    Histórico de versões deste documento:

    Versão Data Autor Alterações Principais
    1.0 [DATA] [NOME] Versão inicial
    1.1 [DATA] [NOME] Atualização RTO/RPO após BIA 2025
    [VERSÃO] [DATA] [AUTOR] [ALTERAÇÕES]

    9.4 Distribuição e Acesso

    Este documento é classificado como CONFIDENCIAL - INTERNAL USE ONLY

    10. Diretório de Contactos de Emergência

    📞 Crisis Team Contact Directory

    Diretório dinâmico de contactos 24/7 para ativação durante crises. Dados guardados localmente.

    Contactos Registados

    24/7

    Maria Santos

    Crisis Manager
    📱 Principal: +351 912 000 001
    📱 Secundário: +351 912 000 002
    📧 Email: maria.santos@empresa.pt
    🔼 Escalamento: Nível 3 - Executivo
    24/7

    Pedro Oliveira

    Technical Recovery Lead
    📱 Principal: +351 912 000 003
    📱 Secundário: +351 912 000 004
    📧 Email: pedro.oliveira@empresa.pt
    🔼 Escalamento: Nível 2 - Gestão intermédia

    10.1 Entidades Externas Críticas

    Entidade Tipo Contacto 24/7 Email
    CNCS (Centro Nacional de Cibersegurança) Autoridade NIS2 +351 XXX XXX XXX cert@cncs.gov.pt
    CNPD (Comissão Nacional de Proteção de Dados) Autoridade GDPR +351 XXX XXX XXX geral@cnpd.pt
    [Cloud Provider - AWS] Fornecedor Crítico +1-XXX-XXX-XXXX aws-support@amazon.com
    [ISP Principal] Fornecedor Crítico +351 XXX XXX XXX noc@isp.pt
    [Consultoria de Cibersegurança] Resposta a Incidentes +351 XXX XXX XXX ir@consultoria.pt
    [ENTIDADE] [TIPO] [TELEFONE] [EMAIL]

    11. Gestão de Dependências de Fornecedores

    11.1 Fornecedores Críticos Identificados

    Fornecedores cuja indisponibilidade impacta diretamente RTO/RPO de sistemas Tier 1/2:

    Fornecedor Serviço Crítico SLA Contratual Plano de Contingência Fornecedor Alternativo
    AWS / Azure / GCP Cloud Infrastructure Hosting 99.99% uptime Multi-region deployment Hybrid cloud (on-prem failback)
    [ISP Principal] Conectividade Internet 99.9% uptime ISP secundário (BGP anycast) [ISP Alternativo]
    Microsoft 365 Email, Colaboração 99.9% uptime Email relay local temporário Google Workspace (standby)
    [Payment Gateway Provider] Processamento Pagamentos 99.95% uptime Gateway secundário pré-integrado [Gateway Alternativo]
    [FORNECEDOR] [SERVIÇO] [SLA] [CONTINGÊNCIA] [ALTERNATIVO]

    11.2 Cláusulas Contratuais BCP

    Todos contratos com fornecedores críticos devem incluir:

    11.3 Revisão Anual de Fornecedores

    Avaliação anual de performance BCP de fornecedores críticos:

    12. Aprovação e Conformidade

    12.1 Aprovações

    Função Nome Assinatura Data
    Autor/Business Continuity Coordinator [NOME] [ASSINATURA DIGITAL] [DATA]
    Crisis Manager [NOME] [ASSINATURA DIGITAL] [DATA]
    Chief Information Officer (CIO) [NOME] [ASSINATURA DIGITAL] [DATA]
    Chief Executive Officer (CEO) [NOME] [ASSINATURA DIGITAL] [DATA]

    12.2 Conformidade Regulamentar

    NIS2 Directive (EU) 2022/2555 - Article 21(2)(f)

    Policies on business continuity, backup management and disaster recovery - COMPLIANT
    Crisis management procedures including communication plans - COMPLIANT
    Testing and drills to verify effectiveness - COMPLIANT (20 testes anuais programados)

    ISO 22301:2019 - Business Continuity Management Systems

    Context of organization and interested parties - Secção 1
    Leadership and commitment - Secção 3 (Governança)
    Business impact analysis and risk assessment - Secção 4 (BIA)
    Business continuity strategies - Secções 5-7 (RTO/RPO, DR, Alternative Ops)
    Exercising and testing - Secção 8 (Testing Program)
    Monitoring and continual improvement - Secção 9 (Maintenance)

    ENISA 2024/2025 Guidelines

    Minimum annual testing requirements (tabletop + full-scale DR) - COMPLIANT
    Supply chain risk management for critical vendors - Secção 11
    Encryption and data protection in backup systems - Referenciado em playbooks

    12.3 Próxima Revisão Agendada

    Data: [DATA PRÓXIMA REVISÃO - 12 meses]

    Responsável: [Business Continuity Coordinator]

    `; try { // Convert to Word const converted = htmlDocx.asBlob(htmlContent); // Create download link const url = URL.createObjectURL(converted); const link = document.createElement('a'); link.href = url; link.download = 'Politica-Continuidade-Negocio-NIS2.docx'; link.click(); // Cleanup setTimeout(() => URL.revokeObjectURL(url), 100); } catch (error) { alert('Erro ao exportar Word: ' + error.message); console.error('Word export error:', error); } } function updateProgress() { const editableFields = document.querySelectorAll('[contenteditable="true"]'); let filled = 0; editableFields.forEach(field => { const text = field.textContent.trim(); if (text && !text.startsWith('[') && text.length > 3) { filled++; } }); const percentage = Math.round((filled / editableFields.length) * 100); document.getElementById('progress-text').textContent = `Progresso: ${percentage}%`; } // RTO/RPO Calculator function calculateRTO(event) { event.preventDefault(); const processName = document.getElementById('process-name').value; const businessImpact = document.getElementById('business-impact').value; const dataSensitivity = document.getElementById('data-sensitivity').value; const dependencies = document.getElementById('dependencies').value; let rto, rpo, tier, cost, solution, recommendations; // Logic based on business impact if (businessImpact === 'critical') { rto = '< 4 horas'; rpo = '< 15 minutos'; tier = 'tier-1'; tierText = 'Tier 1 - CRÍTICO'; cost = '€€€€'; solution = 'Hot Site + Replicação Síncrona'; recommendations = [ 'Implementar hot site com failover automático', 'Replicação síncrona de dados em tempo real', 'Monitorização 24/7 com alertas automáticos', 'Testes de failover trimestrais obrigatórios', 'Considerar solução multi-cloud para resiliência máxima' ]; } else if (businessImpact === 'high') { rto = '< 12 horas'; rpo = '< 1 hora'; tier = 'tier-2'; tierText = 'Tier 2 - IMPORTANTE'; cost = '€€€'; solution = 'Warm Site + Backup Incremental'; recommendations = [ 'Configurar warm site com equipamento pré-instalado', 'Backup incremental horário para dados críticos', 'Documentar playbook de ativação detalhado', 'Testes de recuperação semestrais', 'Cloud backup como camada adicional de proteção' ]; } else if (businessImpact === 'medium') { rto = '< 48 horas'; rpo = '< 4 horas'; tier = 'tier-3'; tierText = 'Tier 3 - STANDARD'; cost = '€€'; solution = 'Cold Site + Backup Diário'; recommendations = [ 'Cold site com infraestrutura básica disponível', 'Backup completo diário', 'Procedimentos manuais documentados como contingência', 'Teste anual de recuperação', 'Considerar cloud storage para backups' ]; } else { rto = '< 72 horas'; rpo = '< 24 horas'; tier = 'tier-3'; tierText = 'Tier 3 - STANDARD'; cost = '€'; solution = 'Backup Semanal + Restore Manual'; recommendations = [ 'Backup completo semanal suficiente', 'Documentação clara de procedimentos de restore', 'Pode operar em modo degradado temporariamente', 'Teste bianual de recuperação' ]; } // Adjust based on data sensitivity if (dataSensitivity === 'high' && businessImpact !== 'critical') { recommendations.push('Encriptação obrigatória de backups (AES-256)'); recommendations.push('Backups armazenados em múltiplas localizações geográficas'); } // Adjust based on dependencies if (dependencies === 'high') { recommendations.push('Mapear todos fornecedores críticos e seus BCP'); recommendations.push('Estabelecer fornecedores alternativos pré-aprovados'); } // Display results document.getElementById('result-process-name').textContent = processName; document.getElementById('rto-value').textContent = rto; document.getElementById('rpo-value').textContent = rpo; document.getElementById('cost-indicator').textContent = cost; document.getElementById('solution-type').textContent = solution; document.getElementById('tier-badge-container').innerHTML = `${tierText}`; const recList = document.getElementById('implementation-recommendations'); recList.innerHTML = ''; recommendations.forEach(rec => { const li = document.createElement('li'); li.textContent = rec; li.style.marginBottom = '0.5rem'; recList.appendChild(li); }); document.getElementById('rto-result').classList.add('show'); } // BCP Testing Checklist function updateChecklistProgress() { const checkboxes = document.querySelectorAll('#bcp-testing-checklist input[type="checkbox"]'); let completed = 0; checkboxes.forEach((checkbox, index) => { const item = checkbox.closest('.checklist-item'); if (checkbox.checked) { completed++; item.classList.add('completed'); } else { item.classList.remove('completed'); } // Save state localStorage.setItem(`bcp-test-${index}`, checkbox.checked); }); const percentage = Math.round((completed / checkboxes.length) * 100); document.getElementById('checklist-progress').textContent = `${completed}/${checkboxes.length} testes concluídos (${percentage}%)`; document.getElementById('progress-bar').style.width = `${percentage}%`; } // Load checklist state function loadChecklistState() { const checkboxes = document.querySelectorAll('#bcp-testing-checklist input[type="checkbox"]'); checkboxes.forEach((checkbox, index) => { const saved = localStorage.getItem(`bcp-test-${index}`); if (saved === 'true') { checkbox.checked = true; } }); updateChecklistProgress(); } // Crisis Team Contact Directory function addContact() { const name = document.getElementById('contact-name').value; const role = document.getElementById('contact-role').value; const phone1 = document.getElementById('contact-phone1').value; const phone2 = document.getElementById('contact-phone2').value; const email = document.getElementById('contact-email').value; const escalation = document.getElementById('contact-escalation').value; if (!name || !role || !phone1 || !email) { alert('⚠️ Por favor preencha todos os campos obrigatórios (Nome, Função, Telefone Principal, Email)'); return; } const escalationText = escalation === '1' ? 'Nível 1 - Primeira linha' : escalation === '2' ? 'Nível 2 - Gestão intermédia' : 'Nível 3 - Executivo'; const contactCard = document.createElement('div'); contactCard.className = 'contact-card'; contactCard.innerHTML = ` 24/7

    ${name}

    ${role}
    📱 Principal: ${phone1}
    ${phone2 ? `
    📱 Secundário: ${phone2}
    ` : ''}
    📧 Email: ${email}
    🔼 Escalamento: ${escalationText}
    `; document.getElementById('contact-list').appendChild(contactCard); // Clear form document.getElementById('contact-name').value = ''; document.getElementById('contact-role').value = ''; document.getElementById('contact-phone1').value = ''; document.getElementById('contact-phone2').value = ''; document.getElementById('contact-email').value = ''; document.getElementById('contact-escalation').value = '1'; saveContacts(); } function saveContacts() { const contactList = document.getElementById('contact-list').innerHTML; localStorage.setItem('bcp-contacts', contactList); } function loadContacts() { const saved = localStorage.getItem('bcp-contacts'); if (saved) { document.getElementById('contact-list').innerHTML = saved; } } function exportContactsCSV() { const contacts = document.querySelectorAll('.contact-card'); let csv = 'Nome,Função,Telefone Principal,Telefone Secundário,Email,Escalamento\n'; contacts.forEach(card => { const name = card.querySelector('h4').textContent; const role = card.querySelector('.role').textContent; const info = card.querySelectorAll('.contact-info div'); const phone1 = info[0].querySelector('span').textContent; const phone2 = info.length > 3 ? info[1].querySelector('span').textContent : ''; const email = info[info.length - 2].querySelector('span').textContent; const escalation = info[info.length - 1].textContent.replace('🔼 Escalamento: ', ''); csv += `"${name}","${role}","${phone1}","${phone2}","${email}","${escalation}"\n`; }); const blob = new Blob([csv], { type: 'text/csv' }); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'bcp-crisis-team-contacts.csv'; a.click(); window.URL.revokeObjectURL(url); } // Initialize on page load window.addEventListener('load', function() { loadChecklistState(); loadContacts(); // Update progress every 2 seconds while in edit mode setInterval(() => { if (isEditMode) { updateProgress(); } }, 2000); }); // Auto-save on changes let saveTimeout; document.addEventListener('input', function() { clearTimeout(saveTimeout); saveTimeout = setTimeout(() => { if (isEditMode) { saveTemplate(); } }, 5000); // Auto-save after 5 seconds of inactivity });