KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM...

130
KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM TECNOLOGIA DA INFORMAÇÃO Patrick Svaiter Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Marcelo Luiz Drumond Lanza Rio de Janeiro, RJ Brasil Março de 2019

Transcript of KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM...

Page 1: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

KNOWEAK – UMA FERRAMENTA DE ANÁLISE DE

RISCO EM TECNOLOGIA DA INFORMAÇÃO

Patrick Svaiter

Projeto de Graduação apresentado ao Curso

de Engenharia Eletrônica e de Computação

da Escola Politécnica, Universidade Federal

do Rio de Janeiro, como parte dos

requisitos necessários à obtenção do título

de Engenheiro.

Orientador: Marcelo Luiz Drumond Lanza

Rio de Janeiro, RJ – Brasil

Março de 2019

Page 2: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP
Page 3: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP
Page 4: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

iv

Page 5: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

v

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

Escola Politécnica – Departamento de Eletrônica e de Computação

Centro de Tecnologia, Bloco H – Cidade Universitária

Rio de Janeiro, RJ – CEP 21949-900

Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que

poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar

qualquer forma de arquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre

bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja

ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem

finalidade comercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).

Page 6: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

vi

DEDICATÓRIA

Dedico este trabalho ao meu pai Luiz Svaiter e à minha mãe Fany Svaiter, que

me deram a educação familiar para crescer sendo uma pessoa íntegra e honesta,

dedicada aos estudos e repleta de empatia.

Page 7: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

vii

AGRADECIMENTO

Durante o tempo de faculdade, tive algumas interações pessoais mais profundas

e prazerosas, que contribuíram significativamente na construção da minha

personalidade. Agora, gostaria de agradecer a estes que marcaram essa etapa da minha

vida.

Meus pais. Dediquei este projeto a vocês, mas gostaria de agradecê-los por todo

suporte e compreensão. Eu sei que o encerramento desse ciclo representa a

concretização de um sonho de vocês, e eu fico extremamente feliz de realizá-lo.

Meus irmãos Andrea Svaiter e Marcio Alan Svaiter, com vocês eu aprendi que,

no final, sempre restará a família ao seu lado.

O grupo Fundão-Five, que foram aqueles amigos de colégio que rachavam táxis

ou caronas para ir ou voltar da faculdade, ao som da Hora do Mução.

O verdadeiro amigo que fiz na UFRJ, Filipe Maia Lessa Pinheiro. Fico feliz em

ter “crescido” junto contigo e levado esta amizade pra fora da universidade. Admiro sua

inteligência e sua intimidade com a Engenharia. Por um momento, achei que nos

distanciaríamos, mas como diz o Gabriel, o Pensador, “Guarde o que é bom no seu peito

/ E o que for ruim ou suspeito, esqueça”.

Carrego também outras lembranças da UFRJ, que tornaram meus dias mais

leves durante diversos períodos difíceis de muito estudo: Andressa Sivolella, Bruno

Ramos, Dhiana Deva, João Faria, e Vinicius Loureiro.

Os professores da UFRJ. Foi uma honra poder absorver conhecimento com

tantos mestres (lato sensu).

A Stone, que foi uma organização que me proporcionou um salto de qualidade

pessoal e profissional enorme. Como são pessoas que estão por trás disso, destaco

aqueles que, além de serem fontes de inspiração, ultrapassaram a barreira dos

escritórios: Daniel Dias e Odilon Cabral. Suas atitudes me ensinaram muito.

Minha namorada. Michelline Lobato, você teve papel fundamental no

desenvolvimento deste projeto. Obrigado pelo suporte e por me tornar mais humano a

cada interação. Para seu orgulho, ao fim disso tudo, realizarei uma “defesa”.

Por fim, a UFRJ. Eu entendo porque você é referência nacional e internacional.

Este projeto é fruto do investimento e confiança em mim depositados. Obrigado.

Page 8: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

viii

RESUMO

Quanto mais o mundo se torna digital, mais se explora as vulnerabilidades

existentes no campo tecnológico. Por se tornar digital, o autor não se refere ao fato de a

população ter acesso a dispositivos tecnológicos, e sim que cada vez mais os

dispositivos estão “se tornando” inteligentes e conectados à Internet. Um equipamento

como uma geladeira, antes inofensivo, agora pode constituir uma porta de entrada para

ataques maliciosos, desde que esteja conectada à Internet. Reconhecer a importância de

zelar pela proteção dos dados é o primeiro passo para proteger a si mesmo e às

organizações contra incidentes de segurança. Passada a fase de conscientização, deve-se

tomar iniciativas para conhecer suas vulnerabilidades e aplicar controles que a tornem

menores ou inexistentes. Isso pode ser feito contratando empresas especializadas que

sigam normas internacionais de segurança da informação, como a família ISO 27000.

Este trabalho apresenta os principais conceitos sobre Segurança da Informação e

implementa um sistema de computador que permite elencar as vulnerabilidades de uma

organização. A partir do procedimento estudado e aplicado nesse sistema, é possível

estimar a probabilidade de um incidente ocorrer e o impacto que ele causaria à

organização se ocorresse. Finalmente, a empresa sob análise pode tomar as devidas

providências para mitigar esses riscos com base nos dados fornecidos pela ferramenta,

atacando-os por ordem de maior impacto, de maior probabilidade e/ou de maior risco

para o negócio da empresa.

Palavras-Chave: TI, segurança da informação, informação, gestão, SGSI.

Page 9: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

ix

ABSTRACT

The more the world becomes digital, the more the existing vulnerabilities are

exploited in the field of technology. By becoming digital, the author does not refer to

the fact that people have easy access to technology devices, but that more and more

electric and electronic devices are being connected to the Internet. Now it’s possible to

find single-purpose devices like refrigerator with extra capabilities. Once these are

connected to computer networks with Internet access, the attack surface is increased,

representing a risk that never existed. Recognizing the importance of data protection is

the first step in protecting yourself and the organizations from security incidents. After

this awareness phase, organization leaders should take actions to increase knowledge

about its own vulnerabilities and apply controls to mitigate or eliminate them

completely. This can be achieved by hiring specialized companies that follow

international standards on Information Security, like the family ISO 27000. This study

presents the main concepts of information security and implements a computer system

that allows to list the vulnerabilities of an organization. From the procedure studied and

applied to the system, it’s possible to estimate the probability of an incident to occur

and the impact that it would cause to the organization if it occurred. Finally, the

company under analysis can take the appropriate measures to mitigate risks based on

data provided by the tool, attacking them by greater impact, greater probability and/or

greater risk for the business of the company.

Key-words: IT, information security, information, management, ISMS.

Page 10: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

x

SIGLAS

ACID Atomicity, Consistency, Isolation, Durability

API Application Programming Interface

BSI British Standard Institute

CCSC Commercial Computer Security Centre

CNPJ Cadastro Nacional da Pessoa Jurídica

DEL Departamento de Eletrônica e de Computação da UFRJ

DTI Department of Trade and Industry (United Kingdom)

ERD Entity-Relationship Diagram

HTML Hypertext Markup Lanaguage

HTTP Hypertext Transfer Protocol

ICP-Brasil Infraestrutura de Chaves Públicas Brasileira

IEC International Electrotechnical Commission

ISO International Organization for Standardization

JSON JavaScript Object Notation

KYC Know Your Customers

KYP Know Your Partners

KYS Know Your Suppliers

ORM Object-Relational Mapping

PDCA Plan, Do, Check, Act

REST Representational State Transfer

SGBD Sistema de Gerenciamento de Banco de Dados

SGSI Sistema de Gestão da Segurança da Informação

SI Segurança da Informação

SPA Single Page Application

SQL Structured Query Language

TI Tecnologia da informação

UFRJ Universidade Federal do Rio de Janeiro

UPS Uninterruptible Power Supply

URI Uniform Resource Identifier

URL Universal Resource Locator

XML Extensible Markup Language

Page 11: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xi

Sumário

Lista de Figuras ............................................................................................................. xiv

Lista de Tabelas ............................................................................................................ xvii

Capítulo 1 – Introdução .................................................................................................... 1

1.1 – Tema ................................................................................................................ 1

1.2 – Delimitação ...................................................................................................... 1

1.3 – Justificativa ...................................................................................................... 2

1.4 – Objetivos .......................................................................................................... 3

1.5 – Metodologia ..................................................................................................... 3

1.6 – Estrutura do documento ................................................................................... 4

Capítulo 2 – Fundamentação Teórica ............................................................................... 5

2.1 – A origem da série ISO 27000 .......................................................................... 5

2.2 – Conceitos Básicos ............................................................................................ 6

2.2.1 – A Informação ........................................................................................ 7

2.2.2 – Os Pilares da Segurança da Informação ............................................... 7

2.2.2.1 – Confidencialidade ...................................................................... 8

2.2.2.2 – Integridade ................................................................................. 8

2.2.2.3 – Disponibilidade .......................................................................... 8

2.2.2.4 – Autenticidade ............................................................................. 8

2.2.2.5 – Não-repúdio ............................................................................... 9

2.2.2.6 – Privacidade ................................................................................ 9

2.2.3 – Ativo de Tecnologia da Informação ................................................... 10

2.2.4 – Vulnerabilidade e Ameaça ................................................................. 11

2.2.5 – Vetor de Ataque .................................................................................. 11

2.2.6 – Incidente de Segurança ....................................................................... 11

2.3 – Analisando os Riscos ..................................................................................... 12

Page 12: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xii

2.3.1 – Estratégias de avaliação do risco ........................................................ 12

2.3.2 – Levantamento da estrutura organizacional ......................................... 13

2.3.3 – Determinação de relevâncias .............................................................. 14

2.3.4 – Definição de escopo ........................................................................... 15

2.3.5 – Identificação e classificação de ameaças e vulnerabilidades ............. 15

2.3.6 – A análise ............................................................................................. 17

2.3.7 – A avaliação ......................................................................................... 18

Capítulo 3 – Modelagem ................................................................................................ 20

3.1 – Requisitos de negócio .................................................................................... 20

3.1.1 – Funcionalidades .................................................................................. 20

3.1.2 – Dados das entidades ........................................................................... 22

3.2 – Requisitos técnicos ........................................................................................ 23

3.3 – O modelo de dados ........................................................................................ 23

3.3.1 – A escolha da estrutura de dados relacional ......................................... 23

3.3.2 – Levantamento das entidades e relacionamentos ................................. 24

3.4 – Requisito técnico extra .................................................................................. 29

3.5 – Permissões de acesso ..................................................................................... 29

Capítulo 4 – Implementação ........................................................................................... 32

4.1 – Critérios de escolha das tecnologias .............................................................. 32

4.2 – O banco de dados ........................................................................................... 33

4.3 – O back-end ..................................................................................................... 34

4.3.1 – O design da API.................................................................................. 34

4.3.1.1 – Ideias gerais sobre os recursos ................................................ 35

4.3.1.2 – Convenção sobre os verbos HTTP .......................................... 36

4.3.1.3 – Códigos de resposta HTTP ...................................................... 37

4.3.1.4 – Recursos disponíveis ............................................................... 37

4.3.2 – A escolha do framework web ............................................................. 39

Page 13: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xiii

4.3.2.1 – Sobre a serialização de dados .................................................. 40

4.3.2.2 – Sobre a comunicação com o banco de dados .......................... 41

4.3.3 – Como criar um recurso ....................................................................... 42

4.3.4 – Como obter um recurso ...................................................................... 43

4.3.5 – Como modificar um recurso ............................................................... 45

4.3.6 – Como remover um recurso ................................................................. 47

4.3.7 – Como criar uma análise de risco ........................................................ 48

4.4 – O front-end .................................................................................................... 51

4.4.1 – Autenticação ....................................................................................... 51

4.4.2 – Menu ................................................................................................... 52

4.4.3 – Telas ................................................................................................... 53

4.4.4 – Permissionamento............................................................................... 71

Capítulo 5 – Testes ......................................................................................................... 73

5.1 – Testes no back-end ........................................................................................ 73

5.2 – Testes no front-end ........................................................................................ 77

Capítulo 6 – Conclusão .................................................................................................. 80

Bibliografia ..................................................................................................................... 83

Apêndice A – Como configurar o ambiente de desenvolvimento .................................. 87

Apêndice B – Como configurar o ambiente de execução .............................................. 92

Apêndice C – Script de criação das tabelas do banco de dados ..................................... 98

Page 14: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xiv

Lista de Figuras

Figura 2.1 – Linha do tempo com a origem das normas ISO 27001 e ISO 27002. .......... 6

Figura 3.1 – Diagrama Entidade-Relacionamento da organização e sua estrutura. ....... 26

Figura 3.2 – Diagrama Entidade-Relacionamento que representa as ameaças da

organização, as vulnerabilidades dos ativos e os controles aplicados sobre eles. 28

Figura 3.3 – Diagrama Entidade-Relacionamento que representa as análises. .............. 29

Figura 4.1 – Código de exemplo para implementação de um recurso de uma API

utilizando o framework Falcon. .......................................................................... 40

Figura 4.2 – Exemplo de solicitação HTTP para criar um recurso. ............................... 42

Figura 4.3 – Resposta à solicitação HTTP para criar um recurso. ................................. 43

Figura 4.4 – Exemplo de solicitação HTTP para obter um recurso. .............................. 43

Figura 4.5 – Resposta à solicitação HTTP para obter um recurso. ................................ 44

Figura 4.6 – Exemplo de solicitação HTTP para obter um recurso do tipo coleção. ..... 45

Figura 4.7 – Resposta à solicitação HTTP para obter um recurso do tipo coleção. ....... 45

Figura 4.8 – Exemplo de solicitação HTTP para modificar um recurso. ....................... 46

Figura 4.9 – Resposta à solicitação HTTP para modificar um recurso. ......................... 46

Figura 4.10 – Exemplo de solicitação HTTP para remover uma propriedade opcional de

um recurso. .......................................................................................................... 47

Figura 4.11 – Exemplo de solicitação HTTP para remover um recurso. ....................... 47

Figura 4.12 – Exemplo de solicitação HTTP para criar análise. .................................... 48

Figura 4.13 – Resposta à solicitação HTTP para criar análise. ...................................... 49

Figura 4.14 – Exemplo de solicitação HTTP para obter os detalhes de uma análise. .... 50

Figura 4.15 – Resposta à solicitação HTTP para obter os detalhes de uma análise. ...... 50

Figura 4.16 – Tela apresentada antes de informar as credenciais de acesso. ................. 52

Figura 4.17 – Tela de login. ............................................................................................ 52

Figura 4.18 – Tela inicial do sistema após login. ........................................................... 53

Figura 4.19 – Tela de listagem e criação de departamentos. .......................................... 55

Figura 4.20 – Tela de atualização de departamento. ...................................................... 55

Figura 4.21 – Tela de listagem e criação de ativos de TI. .............................................. 56

Figura 4.22 – Tela de listagem e criação de ativos de TI com destaque para as categorias

de ativo disponíveis. ............................................................................................ 56

Figura 4.23 – Tela de atualização de ativo de TI............................................................ 57

Page 15: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xv

Figura 4.24 – Tela de listagem e criação de ameaças. .................................................... 57

Figura 4.25 – Tela de atualização de ameaça. ................................................................ 58

Figura 4.26 – Tela de criação de organização. ............................................................... 58

Figura 4.27 – Tela de listagem de organizações. ............................................................ 59

Figura 4.28 – Tela de detalhes de uma organização. ...................................................... 59

Figura 4.29 – Tela de atualização de uma organização. ................................................. 60

Figura 4.30 – Tela de listagem de ameaças de uma organização sem nenhuma ameaça

cadastrada. ........................................................................................................... 60

Figura 4.31 – Tela para inclusão de ameaça na organização.......................................... 61

Figura 4.32 – Tela de listagem de ameaças de uma organização preenchida com dois

registros. .............................................................................................................. 61

Figura 4.33 – Tela de listagem de ativos de TI de uma organização. ............................ 62

Figura 4.34 – Tela de inclusão de ativo de TI na organização. ...................................... 62

Figura 4.35 – Tela de atualização do ativo de TI de uma organização. ......................... 63

Figura 4.36 – Tela de listagem de vulnerabilidades de um ativo de TI sem nenhuma

vulnerabilidade cadastrada. ................................................................................. 63

Figura 4.37 – Tela para cadastrar vulnerabilidade de um ativo de TI da organização. .. 64

Figura 4.38 – Tela de listagem de vulnerabilidades de ativo de TI preenchida com dois

registros. .............................................................................................................. 64

Figura 4.39 – Tela de gerenciamento da estrutura de uma organização. Sem registros. 65

Figura 4.40 – Tela de gerenciamento da estrutura de uma organização......................... 66

Figura 4.41 – Tela de inclusão de um processo em um macroprocesso da organização.66

Figura 4.42 – Tela de inclusão de ativo de TI já existente na organização em serviço de

TI da organização. ............................................................................................... 67

Figura 4.43 – Tela de inclusão de ativo de TI do catálogo em serviço de TI da

organização.......................................................................................................... 68

Figura 4.44 – Tela de listagem de análises vazia. .......................................................... 68

Figura 4.45 – Tela de criação de análise para toda a organização. ................................. 69

Figura 4.46 – Tela de listagem de análises com duas análises criadas. .......................... 69

Figura 4.47 – Tela de detalhes de uma análise. .............................................................. 70

Figura 4.48 – Tela de detalhes de uma análise com relatório expandido. ...................... 70

Figura 5.1 – Captura de tela do Postman: Criando uma organização............................. 74

Figura 5.2 – Captura de tela do Postman: Tentativa de criação de uma organização com

dados existentes. .................................................................................................. 75

Page 16: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xvi

Figura 5.3 – Captura de tela do Postman: Tentativa de criação de uma organização com

argumentos inválidos........................................................................................... 76

Figura 5.4 – Captura de tela do Postman: Erro de autenticação. .................................... 77

Figura 5.5 – Teste de criação de organização com documento existente. ...................... 78

Figura 5.6 – Erro de autenticação induzido. ................................................................... 78

Page 17: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

xvii

Lista de Tabelas

Tabela 2.1 – Graus de classificação para relevâncias e intensidades. ............................ 13

Tabela 2.2 – Alguns processos, serviços e ativos hipotéticos do macroprocesso

“Exportar” de uma empresa do ramo automobilístico. ....................................... 14

Tabela 2.3 – Exemplo de vulnerabilidades de ativos em relação a crackers. ................. 16

Tabela 3.1 – Lista de entidades ...................................................................................... 25

Tabela 3.2 – Tabela de papéis e permissões do sistema. ................................................ 30

Tabela 4.1 – Códigos de resposta HTTP utilizados pela API. ....................................... 37

Tabela 4.2 – Relação das identificações dos recursos e dos verbos HTTP disponíveis

para cada um........................................................................................................ 38

Tabela 4.3 – Definição técnica dos papéis e das permissões de acesso ao sistema. ....... 71

Page 18: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

Capítulo 1 –

Introdução

Este capítulo apresenta o tema deste trabalho, delimitando o seu escopo,

apresentando os seus objetivos e a justificativa para a sua realização. Ele também

descreve como este documento está estruturado e qual a metodologia utilizada para a

sua construção.

1.1 – Tema

O tema deste trabalho é Segurança da Informação (SI) [1]. Esse tema remete

facilmente a roubos de dados [2] [3], vírus, invasões e crackers. Por meio de noticiários

ou propagandas de soluções para a proteção de dados, muito se vê sobre instruções

visando manter os usuários finais distantes de tais males em seus computadores

pessoais. Essas orientações são igualmente importantes para organizações, porém com

maior grau de profundidade, exigindo grande esforço por parte delas para proteger

informações que são essenciais para desempenhar os seus processos de negócio.

Segundo matéria publicada pela Computerworld [4], apesar de o número de

incidentes de segurança estar em queda as perdas financeiras por incidente são cada vez

maiores, atualmente passando, na média, de US$ 500 por incidente.

Por conseguinte, a definição de um vocabulário comum e a adoção de diretrizes

e normas de segurança são fundamentais para organizações que desejam proteger as

suas informações. Algumas seguem à risca as diretrizes de órgãos internacionais para

obter certificações, mostrando a seus clientes que elas se preocupam com a segurança

dos dados e que aderem a procedimentos de reconhecimento global.

1.2 – Delimitação

Este trabalho visa a apresentar os principais conceitos sobre Segurança da

Informação, bem como os procedimentos necessários para implementar, em um

empreendimento, um sistema de análise de riscos relacionados à Tecnologia da

Informação (TI).

Page 19: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

2

O estudo não aborda como fazer testes de penetração [5], quais são as ameaças

mais perigosas existentes atualmente, quais são as orientações para que usuários se

protejam de ataques e quais são as técnicas mais utilizadas pelos atacantes que se

aproveitam de vulnerabilidades na segurança da informação.

O tema aqui exposto foi estudado em uma época em que boa parte dos usuários

de Internet começou a armazenar seus documentos, fotos e vídeos na “nuvem”. Nestes

sistemas, uma falha de segurança pode provocar vazamento e comercialização ilegal

desses dados, que são valiosos para empresas dos mais diversos setores e para agentes

maliciosos.

Além disso, hoje em dia, as crianças já nascem lidando com smartphones e

tablets, ao mesmo tempo em que seus avós não possuem domínio completo sobre a

tecnologia (apesar de utilizá-la para comunicações essenciais do dia-a-dia e até mesmo

para eventuais compras online). De um lado existe o perigo da inocência com

conhecimento e de outro, o perigo da maturidade com desconhecimento.

1.3 – Justificativa

Segurança da Informação é um tema que dificilmente diminuirá de importância

à medida que a tecnologia penetra no cotidiano da sociedade. A cada dia, mais pessoas

armazenam suas informações em servidores que não estão completamente sob o

domínio delas. Além disso, a maioria o faz aceitando termos de uso sem que os tenham

lido [6] [7], permitindo expor informações importantes e privadas sem o seu real

consentimento. Essa situação acaba se estendendo às empresas, que são formadas por

pessoas comuns, e a consequência de um descuido pode ir de perdas financeiras [4] à

destruição de suas reputações [8] [9] de forma irreparável. Ou seja, tanto a vítima

quanto quem prestou serviços a ela pode ser prejudicado.

Entender os conceitos principais que sustentam a teoria de segurança da

informação é o primeiro passo para que se possa fazer qualquer identificação de

vulnerabilidades e aplicar medidas de controle sobre elas.

Page 20: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

3

1.4 – Objetivos

O objetivo deste trabalho é apresentar os principais conceitos de Segurança da

Informação e implementar um sistema que auxilie na gestão de risco dos ativos de TI de

uma organização.

1.5 – Metodologia

A principal fonte de referência utilizada neste trabalho foi a terceira edição do

livro “Sistema de Segurança da Informação – Controlando os Riscos” [10]. A partir do

conhecimento adquirido, foi projetado e implementado um sistema tendo como base a

metodologia apresentada por Campos em seu livro. Outras fontes foram utilizadas para

melhor embasamento teórico e reforço da teoria apresentada pelo livro supracitado.

Para o projeto do software, foram realizadas reuniões entre o orientador e o autor

deste trabalho para estabelecer os requisitos mínimos e as restrições técnicas a serem

atendidas. A partir destes requisitos, as tecnologias utilizadas para o projeto e para a

implementação da ferramenta de análise foram escolhidas livremente pelo autor,

utilizando tanto conhecimentos prévios quanto avaliações realizadas através de recursos

disponíveis na Internet.

O software foi projetado em duas camadas: o back-end 1, responsável por toda a

lógica de funcionamento e pela persistência dos dados; e o front-end 2, que é conectado

ao back-end e provê uma interface gráfica para o usuário final. Esse desacoplamento

traz alguns benefícios, como o desenvolvimento de maneira faseada, a evolução

independente das camadas e a separação de responsabilidades.

As validações das funcionalidades foram feitas pelo próprio autor durante o

desenvolvimento do projeto, à medida que o mesmo progredia e de acordo com os

requisitos definidos. O orientador (responsável pela definição dos requisitos) realizou,

durante o desenvolvimento do trabalho, diversas validações intermediárias e uma

validação final após a conclusão da implementação do sistema.

1 Back-end é um termo em inglês utilizado para se referir ao software que não é acessado

diretamente pelo usuário, mas por outros sistemas. Geralmente, é o back-end que contém as regras de

negócio da aplicação. 2 Front-end é um termo em inglês utilizado para se referir ao software que provê uma interface

para o usuário interagir com ele. É voltado para a comunicação visual e não necessariamente precisa

interagir com um back-end, dependendo de sua finalidade.

Page 21: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

4

1.6 – Estrutura do documento

Os próximos capítulos estão estruturados da seguinte maneira:

Capítulo 2: Fundamentação Teórica – Nele são apresentados os principais

conceitos sobre Segurança da Informação, os pilares que a sustentam, e a teoria sobre o

procedimento de análise de riscos.

Capítulo 3: Modelagem – Neste capítulo, são abordadas as especificações do

projeto e a modelagem de dados necessária para alcançar os requisitos mínimos de uma

primeira versão do software.

Capítulo 4: Implementação – Neste capítulo, estão descritas as decisões técnicas

que justificam a escolha das tecnologias utilizadas e como elas foram aplicadas para a

construção do software.

Capítulo 5: Testes – Testes manuais foram realizados durante a fase de

desenvolvimento para garantir que o software atenda aos requisitos modelados. Neste

capítulo, serão apresentados como os testes foram realizados.

Capítulo 6: Conclusão – Aqui, o trabalho é concluído apresentando uma visão

geral do resultado alcançado perante a proposta de desenvolvimento. Este capítulo

também inclui propostas de melhorias e de trabalhos futuros, além da identificação de

outras funcionalidades para novas versões.

Bibliografia – Lista das fontes de dados utilizadas para o embasamento teórico,

para a modelagem e para a implementação do projeto.

Apêndice A: Como configurar o ambiente de desenvolvimento – Possui as

instruções de como o ambiente foi configurado para o desenvolvimento deste projeto.

Apêndice B: Como configurar o ambiente de execução – Nele estão contidas as

instruções de como o ambiente produtivo foi configurado.

Apêndice C: Script de criação das tabelas do banco de dados – Uma cópia do

script que foi utilizado para criar as tabelas do banco de dados e para popular algumas

delas com dados de domínio.

Page 22: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

5

Capítulo 2 –

Fundamentação Teórica

Este capítulo apresenta um breve histórico sobre a série de normas ISO 27000.

A seguir, serão apresentados os conceitos básicos de Segurança da Informação e, por

fim, é explicado o que é uma análise de risco e como se estruturam os procedimentos

para a sua execução. O objetivo é dar o devido embasamento ao leitor para que o

mesmo seja capaz de entender e avaliar o conteúdo apresentado nos próximos capítulos.

2.1 – A origem da série ISO 27000

A importância de proteger a informação em sistemas, percebida há mais de três

décadas, ficou evidenciada em 1987 pela iniciativa do Departamento da Indústria e

Comércio (DTI – Department of Trade and Industry) do Reino Unido em criar um

centro para tratar da segurança da informação, o Commercial Computer Security Centre

(CCSC). Uma das atribuições deste centro era criar um código de boas práticas que as

empresas poderiam utilizar para proteger informações. Esse código foi publicado em

1993 pelo British Standard Institute (BSI) como um documento informacional,

chamado PD0003. Em 1995, esse documento se tornou norma sob o código BS7799

[10] [11].

Em 1998, a norma BS7799 ganhou uma segunda parte (BS7799-2) [12], que

auxiliava as empresas a gerirem a segurança da informação, podendo utilizar-se do

código de boas práticas definido na primeira parte. Com essa adição, a primeira parte foi

renomeada para BS7799-1 [13].

Essas normas começaram a ganhar aderência de outros países [10]. Após

revisões e considerações dos membros da International Organization for

Standardization (ISO) e da International Electrotechnical Commission (IEC), em 2000,

a norma BS7799 parte 1 foi adotada e lançada como norma internacional sob o título

ISO/IEC 17799 [14]. No ano de 2005, após ter passado por um processo de evolução, a

norma BS7799-2 se tornou internacional sob o código ISO/IEC 27001 [15]. Nesse

mesmo ano, a ISO/IEC 17799 sofreu revisão e recebeu significativas atualizações [11].

Page 23: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

6

Até então, o mundo contava com duas normas ISO relacionadas à segurança da

informação: 27001 (Information security management systems – Requirements) e 17799

(Code of practice for information security controls). Em 2007, a ISO/IEC 17799 foi

renumerada para ISO/IEC 27002 [16] e criou-se a família ISO 27000. Atualmente, essa

série continua crescendo e sofrendo constantes revisões.

A ISO/IEC 27000 [1] propriamente dita apresenta uma visão geral de Sistemas

de Gestão de Segurança da Informação (SGSI) e o vocabulário frequentemente usado

pelas normas dessa família, bem como descreve o escopo e o propósito de cada uma

delas. De acordo com essa norma introdutória [1], a norma ISO/IEC 27001 provê os

requisitos para o desenvolvimento e para a operação de um SGSI, incluindo o conjunto

de controles para a mitigação de riscos associados aos ativos de TI que a organização

visa proteger. As organizações que operam o SGSI podem ter suas conformidades

auditadas e certificadas por meio dessa norma. Já a ISO/IEC 27002 é um guia de

implementação de controles de segurança especificados pela ISO/IEC 27001.

A Figura 2.1 mostra uma linha do tempo com a origem das normas ISO 27001 e

ISO 27002, iniciando com a norma britânica BS7799.

Figura 2.1 – Linha do tempo com a origem das normas ISO 27001 e ISO 27002.

2.2 – Conceitos Básicos

Os principais termos utilizados, quando se trata de Segurança da Informação,

estão definidos abaixo, permitindo uma comunicação clara e uniforme por aqueles

interessados nesse assunto. O principal e mais importante deles é apresentado primeiro:

o que é informação?

Page 24: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

7

2.2.1 – A Informação

A informação [1] é o principal elemento do processo de comunicação e é

complementado pelo emissor, pelo canal e pelo receptor. Estes elementos permitem que

a informação flua de um lado para outro.

É comum que a informação seja associada ao conhecimento. Porém, esse último

vai ser gerado em maior ou menor grau dependendo de quão bem o receptor absorve e

processa a informação. O emissor também desempenha um papel importante na geração

ou transmissão de conhecimentos, dependendo de quão clara é a forma com que se

expressa. Portanto, é possível, transmitir informação sem produzir conhecimento se pelo

menos uma das partes for falha em seu papel. Mas o contrário não é verdade: para

existir conhecimento, um indivíduo deve ser exposto à informação.

Nem sempre transmitir informação sem gerar conhecimento pode ser

considerado um fracasso. A transmissão de forma confusa pode ocorrer de maneira

intencional para atrapalhar o receptor em sua absorção e processamento da informação.

Se isso acontecer, seu objetivo será cumprido. Em situações investigativas, isso deve ser

levado em conta.

O grande valor da informação é o conhecimento que pode ser extraído dela e

utilizado em processos de inovação, em tomadas de decisão, em diferenciação de

produtos e de serviços, e em suporte a processos [10]. O resultado almejado pode ser a

geração de lucro, por exemplo, ou até mesmo a tomada de territórios em uma guerra.

Dada essa importância, a informação deve ser protegida e preservada por pessoas e

organizações que possam ser prejudicadas com o comprometimento dessa informação.

2.2.2 – Os Pilares da Segurança da Informação

A segurança da informação tem alguns princípios sobre os quais ela se sustenta;

são tópicos que determinam quando a segurança é considerada violada, seja

intencionalmente ou acidentalmente. Existem três princípios mais importantes:

confidencialidade, integridade e disponibilidade. Atualmente, outros princípios têm

entrado nessa lista, como autenticidade e privacidade.

Page 25: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

8

2.2.2.1 – Confidencialidade

A confidencialidade é o primeiro dos pilares que sustentam a segurança da

informação. Esse princípio prega que somente pessoas autorizadas devem ter acesso às

informações protegidas [1] [10].

A quebra de confidencialidade pode ser feita por meio de engenharia social,

descoberta de senhas, invasão de sistemas, entre outros. Seja qual for o meio, a quebra

dela constitui um incidente de segurança da informação.

2.2.2.2 – Integridade

A integridade é o segundo dos pilares que sustentam a segurança da informação.

Esse princípio prega que a informação, após inserida no “sistema”, deve estar íntegra

quando consumida [1] [10], isto é, deve ser confiável e completa.

Alterações sem autorização ou a deterioração dos dados armazenados produzem

informação não confiável, constituindo um incidente de segurança da informação por

quebra de integridade.

2.2.2.3 – Disponibilidade

A disponibilidade é o terceiro dos pilares que sustentam a segurança da

informação. Esse princípio prega que a informação deve estar disponível sempre que

requisitada [1] [10].

Se, por algum motivo, a informação não pode ser acessada por pessoas

autorizadas, há um incidente de segurança da informação instaurado por

indisponibilidade.

2.2.2.4 – Autenticidade

O princípio da autenticidade é garantido quando a mensagem vem realmente da

fonte anunciada [1]. Esta é uma nova definição, não incluída nas primeiras edições da

ISO 27000, e faz parte de uma adaptação à evolução do uso da tecnologia da

informação.

A quebra desse princípio ocorre por fraude da propriedade que indica quem é o

autor da mensagem. Isso pode ser consequência de uma infração para prejudicar alguém

enquanto coloca a culpa em terceiros. Outra causa pode ser a tentativa de enganar um

Page 26: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

9

usuário se passando por uma fonte confiável, eventualmente logrando sucesso em um

ataque.

2.2.2.5 – Não-repúdio

O princípio do não-repúdio preza pela capacidade de se provar a ocorrência de

um evento e seus autores [1]. Ele também é conhecido como princípio da

irretratabilidade.

Esta definição pode ser confundida com os princípios da autenticidade e da

integridade, pois a prova da ocorrência de um evento considera os dados confiáveis

(íntegros) e vindo da fonte anunciada. Porém, o não-repúdio foca na rastreabilidade do

evento, analisando quem acessou a informação, quando e como. Uma vez rastreado,

aquele que acessou a informação não poderá negar tê-lo feito.

Obviamente, isso parte da premissa que existe um mecanismo para atrelar um

dispositivo a um indivíduo de maneira a identificá-lo unicamente e isso ser reconhecido

pelas autoridades. Percebe-se que o cerne do conceito ultrapassa o âmbito tecnológico e

avança sobre o âmbito legal. No Brasil, a Infraestrutura de Chaves Públicas Brasileira

(ICP-Brasil) implementa esse mecanismo a nível nacional e dá validade jurídica a

transações eletrônicas [17] [18].

2.2.2.6 – Privacidade

Privacidade é a qualidade do que é pessoal e privado por direito. Naturalmente,

o que é público não é privado. Como é um conceito facilmente confundido com

confidencialidade [19] [20] [21], será explicado por meio de um exemplo.

De acordo com o artigo 5º, inciso XII da Constituição Federal [22] [23], é “[...]

inviolável o sigilo da correspondência e das comunicações telegráficas, de dados e das

comunicações telefônicas, salvo, no último caso, por ordem judicial [...]”. A privacidade

de um indivíduo não pode ser violada; é a garantia que ele possui por direito. Porém, se

for autorizado judicialmente, a quebra do sigilo poderá ser feita. Quando isso acontecer,

pode-se estabelecer a confidencialidade da escuta (informação) e, desta forma, somente

pessoas autorizadas poderiam ter acesso a ela – perceba que a informação deixou de ser

privada e passou a ser confidencial.

Page 27: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

10

Enquanto privacidade tem a ver com o direito garantido por lei, a

confidencialidade está ligada à ética, ao que foi combinado entre as partes que

compartilham a informação [20] [21].

A violação da privacidade de um indivíduo ou organização sem a devida

autorização constitui um incidente de segurança da informação.

2.2.3 – Ativo de Tecnologia da Informação

A palavra “ativos” é usada em contabilidade para representar bens e direitos de

uma empresa, e possuem valores monetários que podem ser transformados em dinheiro

em algum momento. Um “ativo de TI” é um bem ou direito especificamente ligado à

tecnologia da informação.

A informação por si só é um ativo, mas como pode-se notar a partir de sua

definição, ela é intangível. Existem diversos outros ativos de TI que sustentam a

existência da informação, como mídias onde ela é persistida, equipamentos que

permitem a sua transmissão, indivíduos responsáveis por sua manutenção e utilização,

entre outros.

Com isso, pode-se classificar um ativo de TI em seis categorias principais,

conforme listadas abaixo:

• Informação

Ex.: documentos escritos, arquivos, transmissões audiovisuais,

conhecimento acumulado na mente de colaboradores, etc.

• Pessoa

Ex.: coordenador de um projeto, administrador de banco de dados, etc.

• Ambiente / Infraestrutura

Ex.: sala de servidores, salas de armazenamento, sala cofre, etc.

• Hardware

Ex.: servidores físicos, computadores pessoais, impressora, apostila, etc.

• Software

Ex.: de gestão, de controle de acesso, cliente de e-mail, servidor web, etc.

• Política

Normas e regras – ligadas à informação – sobre como se relacionar com

outras pessoas dentro e fora da organização, sobre implementar

processos para estruturar determinada operação, entre outras.

Page 28: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

11

2.2.4 – Vulnerabilidade e Ameaça

Para definir vulnerabilidade, é preciso entender antes o que significa ameaça.

Ameaça é a característica de algo que tem potencial para comprometer a

segurança de um sistema ou de uma organização. As ameaças podem ser externas ou

internas à organização e, geralmente, não se tem controle sobre elas [1] [10].

A vulnerabilidade representa o quanto um ativo de TI está exposto à

determinada ameaça. Em outras palavras, representa a sua fraqueza. Esse sim – o ativo

vulnerável – está sob o controle da organização e pode estar mais protegido se

necessário [1] [10].

Idealmente, todos os ativos não teriam vulnerabilidades e as ameaças não teriam

como se concretizar através de falhas de segurança. Porém, existem diversas variáveis

envolvidas. Muitas vulnerabilidades são desconhecidas. Outras são bem conhecidas,

mas não recebem a devida atenção e o devido investimento da organização. O

importante é evitar o incidente e, se ele ocorrer, estar preparado para agir o mais

rapidamente possível.

2.2.5 – Vetor de Ataque

O vetor de ataque não é uma ameaça em si. Ele é o meio utilizado pelos

atacantes para invadir sistemas, obter informações sem autorização, ou espalhar

conteúdo malicioso sem uma finalidade específica.

Dentre as possibilidades, estão mensagens eletrônicas (o corpo da mensagem ou

seus anexos), uma página na Internet, uma aplicação web, um arquivo, um sistema com

falhas de segurança conhecidas, linguagens e bibliotecas de programação, etc.

2.2.6 – Incidente de Segurança

Do livro Sistema de Segurança da Informação [10], incidente de segurança “é a

ocorrência de um evento que possa causar interrupções ou prejuízos aos processos do

negócio, em consequência da violação de um dos princípios de segurança da

informação.”

Perceba que mesmo que um processo não sofra prejuízo, a possibilidade de ter

ocorrido já caracteriza um incidente [1]. Por exemplo, um sistema de autenticação pode

ter parado de funcionar durante a madrugada, em um momento em que nenhuma

tentativa de acesso aconteceu. Mesmo que nenhum cliente do sistema tenha sido

Page 29: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

12

impactado, o evento caracteriza um incidente por indisponibilidade e deve ser

investigado para entender suas causas.

Já uma tentativa de ataque não caracteriza um incidente, mas sim um evento de

segurança da informação.

2.3 – Analisando os Riscos

Analisar os riscos que incidentes de segurança da informação causariam a uma

organização é fundamental para prover a proteção adequada aos ativos de TI. Uma

análise permite a aplicação de recursos de maneira inteligente, direcionando-os para

onde são mais relevantes. Além disso, auxilia no processo de autoconhecimento da

empresa ao relacionar todos os ativos e suas vulnerabilidades.

Os marcos de um procedimento de análise são detalhados abaixo.

2.3.1 – Estratégias de avaliação do risco

O passo inicial de uma análise é determinar a estratégia de sua execução.

Determinar a estratégia significa planejar antes de agir, significa ter algumas diretrizes

para a diminuição de riscos e uma metodologia para a avaliação da situação da

organização. Além disso, é importante definir os resultados esperados com a proteção

dos ativos. Fica mais difícil chegar quando não se sabe para onde se vai [10].

A título de exemplo, seguem abaixo algumas diretrizes hipotéticas que uma

organização pode adotar:

1. Riscos relacionados à disponibilidade são prioritários em relação àqueles

relacionados com confidencialidade e integridade.

2. Riscos acima de 80% devem ser tratados com caráter emergencial.

3. Riscos abaixo de 40% podem ser ignorados na primeira iteração.

4. Investimentos em segurança da informação não devem exceder em 5% o

faturamento da organização.

5. Investimentos em segurança da informação são tão maiores quanto for o

valor do processo de negócio envolvido.

Essas são algumas regras que dão um norte para a realização da análise. Sempre

que algum analista estiver saindo dos trilhos, ele será capaz de voltar às diretrizes e se

reorganizar.

Page 30: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

13

Definir os resultados esperados é uma tarefa mais complexa, porque é difícil

medir o quanto pode-se beneficiar do investimento em segurança. Às vezes, é possível

inverter a lógica e tentar medir quanto seria perdido caso a organização sofresse um

incidente de segurança da informação. Por causa dessa dificuldade, é recomendado que

empresas que nunca fizeram uma análise de risco utilizem métodos qualitativos, em vez

de quantitativos [10]. O primeiro permitirá maior subjetividade e cálculos mais simples

em detrimento da precisão dos cálculos de custos e benefícios.

Este trabalho utiliza o método qualitativo por simplicidade, com o objetivo de

apresentar os conceitos sobre o tema. Isso não significa que um método é melhor que

outro. Cada organização deve avaliar o que se aplica melhor ao seu grau de maturidade.

As graduações são todas feitas de 1 a 5, como mostra a Tabela 2.1.

Tabela 2.1 – Graus de classificação para relevâncias e intensidades.

Valor nominal Grau Faixa percentual

1 Muito baixo 01-20

2 Baixo 21-40

3 Médio 41-60

4 Alto 61-80

5 Muito alto 81-100

2.3.2 – Levantamento da estrutura organizacional

Após a definição das regras, inicia-se o processo de levantamento das áreas da

organização e quais são os principais processos operantes (macroprocessos). A seguir, é

realizada uma análise profunda em cada macroprocesso para identificar os processos

que funcionam dentro dele. Por sua vez, são identificados os serviços de TI que apoiam

esses processos e, finalmente, os ativos de TI que suportam esses serviços.

Um exemplo pode ser dado com uma empresa automobilística hipotética. As

áreas seriam compostas por “Produção Industrial”, “Parcerias”, “Logística”,

“Departamento Pessoal” e “Inovação”. O macroprocesso “Exportar” poderia estar

contido tanto dentro da área de “Parcerias” quanto dentro de “Logística”. Uma estrutura

hipotética para esse macroprocesso é apresentada na Tabela 2.2.

Page 31: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

14

Tabela 2.2 – Alguns processos, serviços e ativos hipotéticos do macroprocesso

“Exportar” de uma empresa do ramo automobilístico.

Processo Serviço de TI Ativo de TI

Receber material da linha de

produção

Sistema de controle de entrada

Servidor web

Servidor de impressão

Impressoras

Galpão de recepção

Recepcionistas

Sistema de triagem

Galpão de recepção

Esteiras automáticas

Máquinas leitoras de códigos de

barra

Despachar contêineres

Sistema de determinação de

rotas de transporte

Servidor web

Roteadores

Firewall

Sistema de identificação dos

caminhões e vans credenciados

Caminhões e vans

Pessoas da fiscalização

Servidor web

Se a organização ainda não possui esta estrutura documentada, é uma boa

oportunidade para fazer isso. Ela também será importante para a definição de escopo,

explicada mais adiante.

2.3.3 – Determinação de relevâncias

A relevância indica quanto um determinado elemento da estrutura

organizacional contribui, é importante ou tem valor para o nível imediatamente

superior.

Este levantamento deve ser feito do mais abrangente para o menos abrangente,

começando pelos processos. Assim, devem ser medidas:

• A relevância de um processo com relação à organização.

• A relevância de um serviço de TI com relação ao processo que apoia.

• A relevância de um ativo de TI com relação ao serviço que suporta.

Neste trabalho, as medições serão feitas de acordo com os graus qualitativos

descritos pela Tabela 2.1.

Page 32: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

15

As relevâncias medidas serão importantes tanto para o item 2.3.4 – Definição de

escopo quanto para o item 2.3.6 – A análise.

2.3.4 – Definição de escopo

Em uma empresa pequena, pode ser viável pular este passo e analisá-la por

inteiro, de uma só vez. Porém, em uma empresa de maior porte, os trabalhos de análise

são mais complexos desde o início, ou seja, desde a fase de mapeamento da estrutura.

Definir um escopo pequeno inicialmente é fundamental para o sucesso da

operação, principalmente quando precisa-se ganhar maturidade na realização de análises

[10]. Isso permitirá perceber mais rapidamente as falhas que ocorrerem no processo de

análise e corrigi-las em uma escala menor, encurtando o ciclo PDCA (Plan, Do, Check,

Act)3.

O escopo pode ser definido escolhendo-se a área, o macroprocesso ou o

processo que exige mais atenção com relação à segurança da informação. Para isso,

pode-se utilizar as relevâncias obtidas no passo 2.3.3 – para atacar os processos de

maior valor para a organização – geralmente os que mais geram e consomem

informações. Responder à pergunta “Onde os danos seriam irreparáveis?” pode indicar

um bom ponto de partida.

Observe que os serviços e ativos de TI foram excluídos dessa etapa, pois o que

importa é o valor de negócio para a organização. Os serviços de TI atuam em conjunto

para apoiar um processo, mas não possuem valor de negócio se analisados sozinhos.

Depois de realizada a análise com sucesso em um escopo pequeno, deve-se

aumentar o escopo para abranger outras áreas, macroprocessos ou processos, mas nunca

abandonar aqueles que já foram abordados em análises anteriores.

2.3.5 – Identificação e classificação de ameaças e vulnerabilidades

Uma vez definido o escopo da análise, ficam estabelecidos todos os seus

participantes, indo do nível mais alto da estrutura organizacional, as áreas, até o mais

baixo, composto pelos ativos de TI.

Agora, deve-se identificar a quais ameaças a organização está exposta e

classificá-las quanto ao seu grau de intensidade. Essa classificação deve ser feita sem

3 PDCA é um método de gestão de qualidade utilizado para implantar um processo de melhoria

contínua. [37]

Page 33: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

16

levar em consideração o ativo de TI que é alvo da ameaça em questão. Isso significa que

o grau da ameaça dependente unicamente dela [10].

Somente após saber quais são as ameaças presentes é possível determinar o grau

de vulnerabilidade dos ativos de TI. O procedimento deve ser feito nessa sequência

porque, apesar de a vulnerabilidade ser uma propriedade exclusiva do ativo, ela está

sempre associada a uma ameaça. Excepcionalmente, é possível que se descubra uma

ameaça ao averiguar as vulnerabilidades de um ativo.

Quando a análise for realizada, será possível notar que o grau da ameaça

permanece constante enquanto as vulnerabilidades variam de ativo para ativo. Isso

confirma que a ameaça é fixa para uma organização e que ela não depende do ativo que

tem como alvo.

Os graus definidos na Tabela 2.1 serão utilizados neste trabalho para classificar

ameaças e vulnerabilidades.

Segue abaixo, na Tabela 2.3, um exemplo de uma ameaça de grau muito alto

para uma organização, mas com diferentes graus de vulnerabilidade dos ativos.

Tabela 2.3 – Exemplo de vulnerabilidades de ativos em relação a crackers.

Ameaça: Cracker

Grau da ameaça Ativo de TI Grau da vulnerabilidade

Muito alto Servidor de aplicações Alto

Muito alto Servidor de banco de dados Baixo

Muito alto Firewall Muito alto

Muito alto Servidor de impressão Muito baixo

Uma situação foi criada para explicar cada um de seus valores.

A maior vulnerabilidade na tabela acima pertence ao firewall, pois é o ativo que

está na fronteira da organização com a Internet, passando por ele todas as requisições

que chegam e que saem de sua rede. Ao passar por esse componente, pode-se chegar ao

servidor de aplicações, onde rodam os principais serviços de TI. A vulnerabilidade do

servidor de aplicações é alta porque suas definições de antivírus estão desatualizadas,

mas não muito alta porque está atrás do firewall (que oferece uma proteção quanto ao

acesso de clientes externos). O servidor de banco de dados encontra-se ainda mais

Page 34: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

17

protegido, já que somente aplicações internas e autorizadas possuem acesso a ele. Por

fim, o servidor de impressão tem a menor vulnerabilidade da escala por estar totalmente

limitado às comunicações internas e em uma rede segregada daquela que possui acesso

à Internet.

2.3.6 – A análise

Todos os passos desta seção, até então, foram requisitos para a realização da

análise de riscos. A análise consiste em efetuar cálculos a partir das classificações de

relevâncias, graus de ameaças e graus de vulnerabilidades determinados nos passos

anteriores. O resultado é um relatório com os graus de risco que um incidente de

segurança da informação causaria ao explorar a vulnerabilidade de cada ativo de TI.

O objetivo dessa análise é expor para os comitês de segurança (da organização)

quais são os pontos fracos que exigem investimentos mais urgentes, pois estão mais

vulneráveis e têm ao mesmo tempo alta relevância.

Porém, para obter esse resultado, é preciso saber como extrair um número que

represente o risco e, para isso, é preciso definir um conceito matemático para ele. Uma

forma simples de resolver isso, apresentada por André Campos [10], é relacionar o

impacto que um incidente causaria à organização com a probabilidade de esse incidente

ocorrer. Quanto menor a probabilidade, menor o risco. Quanto menor o impacto, menor

o risco. A fórmula R = I x P pode ser utilizada, onde R representa o risco, I é o impacto

estimado para um incidente e P a probabilidade do evento. Cada uma dessas variáveis

pode ter valor entre zero e um (inclusive).

Como o impacto representa o quanto de prejuízo seria gerado por um incidente

de segurança da informação, ele será tão maior quanto mais importante forem o

processo para a organização, o serviço para o processo e o ativo para o serviço em

questão. Para produzir um valor final entre 0 e 1 (inclusive), basta normalizar as

classificações dividindo por seus valores máximos.

𝐼𝑚𝑝𝑎𝑐𝑡𝑜 =𝑅𝑎

5 ×

𝑅𝑠

5 ×

𝑅𝑝

5

Onde Ra, Rs e Rp representam a relevância do ativo, a relevância do serviço e a

relevância do processo respectivamente.

Page 35: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

18

Já a probabilidade de um incidente acontecer está diretamente relacionada à

vulnerabilidade existente em um ativo com relação a uma ameaça e ao quanto existe

dessa ameaça. Seguindo o mesmo raciocínio, e sabendo que a probabilidade também

varia entre 0 e 1 (inclusive), pode-se definir a probabilidade com a fórmula abaixo:

𝑃𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 = 𝐺𝑎

5 ×

𝐺𝑣

5

Onde Ga e Gv são grau de ameaça e grau de vulnerabilidade respectivamente.

A partir dessas definições, o risco pode ser expandido na seguinte fórmula:

𝑅𝑖𝑠𝑐𝑜 = ( 𝑅𝑎

5 ×

𝑅𝑠

5 ×

𝑅𝑝

5 ) × (

𝐺𝑎

5 ×

𝐺𝑣

5 )

O resultado da análise será uma grande tabela, onde cada linha representará uma

combinação de processo, serviço, ativo e ameaça. Consequentemente, cada linha

conterá o produto indicado pela fórmula de risco.

2.3.7 – A avaliação

Após a análise ter sido realizada, basta interpretar os dados de acordo com as

diretrizes especificadas pela estratégia de avaliação.

Para facilitar a avaliação, os resultados deverão ser ordenados do maior risco

para o menor. Quando houver empate e não for possível atender às duas situações de

risco, a preferência deverá ser daquela de maior impacto. Idealmente, ambas seriam

tratadas.

O tratamento para a redução do risco deverá ser feito eliminando

vulnerabilidades, porque geralmente nada pode ser feito para diminuir o quanto existe

de cada ameaça – exceto quando fatores internos constituem ameaças. Chama-se de

controle mitigatório o tratamento dado aos ativos com o intuito de eliminar ou reduzir

vulnerabilidades [1].

Um exemplo de controle mitigatório é a instalação de uma unidade UPS

(Uninterruptible Power Supply) para prover energia reserva a servidores físicos quando

ocorrer uma falha no fornecimento de energia em uma determinada região.

• Ativo: Servidor da Marca X – Modelo Y – Número de série ABC

Page 36: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

19

• Vulnerabilidade: Alta sensibilidade a surtos e queda de tensão

• Ameaça: Queda de energia

• Controle: UPS

Após serem definidos os controles que serão aplicados para reduzir o risco de

incidentes de segurança e após serem estimados os investimentos demandados desses

controles, esta avaliação chegará ao fim. Um novo escopo poderá ou deverá ser definido

e uma nova análise poderá ou deverá ser realizada.

Page 37: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

20

Capítulo 3 –

Modelagem

Antes de apresentar a modelagem, é importante lembrar o objetivo do sistema

proposto por este trabalho, que é implementar uma ferramenta que possa ser utilizada

para implantar um SGSI, fornecendo um relatório de análise de riscos em segurança da

informação a partir da entrada de dados sobre uma organização. Essa ferramenta é

apenas parte do SGSI e, por si só, não satisfaz aos requisitos de conformidade exigidos

pela norma ISO/IEC 27001 [24].

A fase de modelagem está dividida em requisitos de negócio, requisitos técnicos,

modelo de dados e permissões de acesso.

3.1 – Requisitos de negócio

Os requisitos abaixo definem o mínimo de funcionalidades que a ferramenta

deverá ter, levando-se em consideração os conceitos básicos e a metodologia

apresentados em “Fundamentação Teórica”. Posteriormente, serão expostas as

propriedades pertinentes a cada uma das entidades principais.

3.1.1 – Funcionalidades

O sistema deverá ser capaz de:

1. Permitir cadastrar organizações.

2. Permitir elencar toda a estrutura de uma organização: Áreas,

Macroprocessos, Processos, Serviços de TI e Ativos de TI.

3. Permitir estabelecer relacionamentos entre elementos de níveis adjacentes na

estrutura de uma organização, como mostrado abaixo:

a. Áreas ↔ Macroprocessos

b. Macroprocessos ↔ Processos

c. Processos ↔ Serviços de TI

d. Serviços de TI ↔ Ativos de TI

4. Permitir registrar a relevância de um elemento para a estrutura à qual

pertence, de acordo com o papel que desempenha. As opções são:

Page 38: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

21

a. Relevância do processo com relação ao negócio da organização.

b. Relevância do serviço de TI com relação ao processo que ele apoia.

c. Relevância do ativo de TI com relação ao serviço de TI que ele

suporta.

5. Impedir que existam duas áreas iguais em uma mesma organização.

6. Permitir que macroprocessos, processos, serviços de TI e ativos de TI sejam

reutilizados em uma mesma organização, mas não dentro do mesmo

segmento. Como exemplo, um processo pode existir em dois

macroprocessos diferentes, mas não pode existir duas vezes dentro de um

mesmo macroprocesso.

7. Permitir que áreas, macroprocessos, processos, serviços de TI e ativos de TI

já cadastrados por uma organização estejam disponíveis para outras

organizações.

8. Permitir cadastrar ameaças aos ativos de uma organização.

9. Permitir utilizar ameaças já cadastradas por outras organizações.

10. Permitir cadastrar o grau de cada ameaça para a organização.

11. Permitir cadastrar o grau de vulnerabilidade de cada ativo de TI de uma

organização em relação a uma ameaça cadastrada para essa mesma

organização.

12. Permitir cadastrar controles mitigatórios para cada ativo de TI de uma

organização.

13. Permitir utilizar controles mitigatórios já cadastrados por outras

organizações.

14. Ser capaz de realizar análises de riscos sob demanda. Cada análise deve ser

imutável, isto é, uma vez feita, os parâmetros dos cálculos e os valores

resultantes não podem ser modificados. As análises podem ter o mesmo

escopo ou escopos diferentes.

15. Permitir visualizar qualquer um dos dados citados nos itens acima.

16. Permitir corrigir qualquer um dos dados citados nos itens acima, exceto o

resultado de uma análise.

17. Autenticar seus usuários, mantendo o rastreamento dos eventos e garantindo

que somente pessoas autorizadas o utilizem.

Page 39: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

22

3.1.2 – Dados das entidades

Estão listados abaixo os dados básicos que cada entidade deve possuir.

Organização

• Número de registro no Cadastro Nacional da Pessoa Jurídica (CNPJ)

• Nome empresarial

• Nome fantasia (opcional)

Área / Macroprocesso / Processo / Serviço de TI

• Nome

Ativo de TI

• Nome

• Descrição (opcional)

• Categoria de Ativo de TI

Categoria de Ativo de TI

• Identificador

• Nome

Os valores possíveis para categoria são:

1. Informação

2. Política

3. Pessoa

4. Ambiente / Infraestrutura

5. Hardware

6. Software

Ameaça / Controle Mitigatório

• Nome

• Descrição (opcional)

Page 40: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

23

3.2 – Requisitos técnicos

A única restrição técnica do sistema é que ele deverá ser capaz de funcionar nos

servidores do Departamento de Eletrônica e de Computação (DEL) da Universidade

Federal do Rio de Janeiro (UFRJ). Isso significa que deverá ser compatível com o

sistema operacional FreeBSD versão 11.x ou superior. Portanto, todas as suas

dependências deverão ser escolhidas de maneira que também atendam a essa restrição.

3.3 – O modelo de dados

O modelo de dados será criado a partir das funcionalidades requisitadas e dos

dados básicos já especificados na seção 3.1.2 – Dados das entidades. A seguir, será

justificada a escolha da estrutura relacional para modelagem e, posteriormente, será

apresentada a modelagem propriamente dita.

3.3.1 – A escolha da estrutura de dados relacional

O paradigma entre escolher uma estrutura de dados relacional ou não, impacta

diretamente em como a modelagem será realizada.

A estrutura relacional direciona a decisão para uma tecnologia estabelecida há

mais tempo no mercado, abrangendo todos os sistemas de gerenciamento de banco de

dados (SGBD) que utilizam a linguagem SQL (Structured Query Language) para

consultas. Nessa estrutura, os dados são representados através de tabelas que podem ser

relacionadas entre si.

A estrutura não-relacional leva a uma gama de SGBDs classificados como

NoSQL – o nome vem da não utilização da linguagem SQL. Porém, a linguagem de

acesso aos dados não é a única diferença desses sistemas para os relacionais. Suas

formas de manipular e armazenar os dados são bem diversificadas entre si. Devido à

grande quantidade de SGBDs NoSQL que surgiram recentemente, acabou-se criando

categorias adicionais para eles baseadas na estrutura de dados que armazenam. Alguns

exemplos de categoria são: orientado a documentos, orientado a colunas e baseado em

grafos.

Será utilizado neste trabalho um SGBD relacional, dado o intenso uso de

relacionamentos para descrever a estrutura de uma organização. Além disso, a estrutura

não tende a assumir diferentes formas de acordo com seu conteúdo, o que é apropriado

Page 41: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

24

para uma modelagem em tabelas. A partir dessa decisão, serão criados os Diagramas

Entidade-Relacionamento (conhecido em inglês como ERD – Entity Relationship

Diagram) – forma padrão de representar como as entidades se relacionam, quais são as

cardinalidades desses relacionamentos etc., independente do provedor de SGBD

escolhido.

Está fora do escopo deste estudo esgotar os prós e contras de cada tecnologia.

Existem muitas diferenças entre elas e, certamente, outras soluções seriam aplicáveis a

este projeto.

3.3.2 – Levantamento das entidades e relacionamentos

O modelo poderá ser dividido em quatro contextos: um para o catálogo; um para

as estruturas das organizações; um para ameaças, vulnerabilidades e controles; e outro

para as análises das organizações.

A entidade mais forte do banco de dados é a que contém os registros das

organizações. Essa tabela será “proprietária” dos relacionamentos que caracterizarão a

estrutura da organização, com áreas, macroprocessos, etc.

O catálogo servirá para permitir que áreas, macroprocessos, processos, serviços

de TI, ativos de TI, ameaças e controles mitigatórios sejam reutilizados entre

organizações.

A partir das premissas acima, tabelas associativas serão empregadas para criar os

relacionamentos muitos-para-muitos (cardinalidade M:N) entre uma entidade do

catálogo e um nível estrutural de uma organização. Elas permitirão, por exemplo, que

um processo esteja em mais de um macroprocesso e que um macroprocesso contenha

múltiplos processos. Algumas dessas tabelas associativas conterão também as

relevâncias dos relacionamentos.

Sendo assim, ficam determinadas todas as entidades conforme mostrado abaixo

pela Tabela 3.1 – Lista de entidades.

Duas tabelas de domínio precisarão existir para completar a lista acima. Uma

para categoria de ativo de TI, outra para a escala de relevância ou de intensidade.

• “it_asset_category” – Domínio das categorias de ativo disponíveis.

• “rating_level” – Domínio de escala para classificar relevâncias, ameaças

e vulnerabilidades.

Page 42: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

25

Tabela 3.1 – Lista de entidades

Entidade Descrição

organization Catálogo de organizações

business_department Catálogo de áreas

business_macroprocess Catálogo de macroprocessos

business_process Catálogo de processos

it_service Catálogo de serviços de TI

it_asset Catálogo de ativos de TI

security_threat Catálogo de ameaças

mitigation_control Catálogo de controles mitigatórios

organization_department Conecta áreas a organizações

organization_macroprocess Conecta macroprocessos a áreas

organization_process Conecta processos a macroprocessos e define a

relevância de cada processo para a organização à qual

pertence.

organization_it_service Conecta serviços de TI a processos e define a relevância

de cada serviço para o processo correspondente.

organization_it_asset Conecta ativos de TI a uma organização e permite

identificar unicamente a instância de cada ativo.

organization_it_service_it_asset Conecta ativos de TI a serviços de TI e define a

relevância de cada ativo para o serviço correspondente.

organization_security_threat Conecta ameaças catalogadas a organizações e define o

grau de cada ameaça.

organization_it_asset_vulnerability Conecta ativos de TI de uma organização a ameaças da

mesma organização e define o grau da vulnerabilidade

de cada ativo para cada ameaça.

organization_it_asset_control Conecta ativos de TI de uma organização a controles

mitigatórios do catálogo.

organization_analysis Instâncias de análise por organização

organization_analysis_detail Armazena os detalhes de uma análise (parâmetros de

cálculo e os valores computados de impacto,

probabilidade e risco).

A Figura 3.1 mostra como as tabelas se relacionam para construir a estrutura de

uma organização.

Page 43: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

26

Figura 3.1 – Diagrama Entidade-Relacionamento da organização e sua estrutura.4

4 Foram omitidas as linhas de relacionamento das tabelas associativas para com a organização com o intuito de evitar poluição visual.

Page 44: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

27

Observe que existem duas tabelas de ativos de TI com cardinalidade M:N,

“organization_it_asset” e “organization_it_service_it_asset”. Isso decorre da

necessidade de uma mesma instância de um ativo poder ter relevância diferente para

cada serviço de TI que apoia. Por exemplo, um computador de número de série A123 é

ao mesmo tempo servidor de impressão e servidor web de uma organização. Se não

houvesse a separação nessas duas tabelas, a máquina A123 deveria ser cadastrada duas

vezes para poder colocar relevâncias diferentes em relação aos serviços, o que

dificultaria a identificação dela como sendo um único ativo da organização. Seria tão

inadequado quanto ter que cadastrar uma pessoa duas vezes na mesma academia porque

ela quer realizar duas atividades diferentes, como natação e luta. A tabela

“organization_it_asset” resolve esse problema ao inserir ativos na organização, sem

pensar neste instante em relacionamentos com serviços. Com isso, torna-se possível a

listagem de todos os ativos da organização sem duplicações de registros. O ativo torna-

se, então, único na organização – mas não entre organizações.

Prosseguindo com a modelagem para o contexto de ameaças e vulnerabilidades,

mostra como elas se relacionam com os ativos de uma organização e com a própria

organização.

É possível notar, na Figura 3.2, que a vulnerabilidade de um ativo é apenas uma

classificação em relação a uma ameaça, por isso não existe um catálogo de

vulnerabilidades. A modelagem também permite criar múltiplos controles para diminuir

determinada vulnerabilidade. Como o controle é aplicado a ativos, e não às suas

vulnerabilidades, foi criado um relacionamento de cardinalidade M:N entre ativo da

organização e controle mitigatório do catálogo.

Por fim, duas tabelas permitem armazenar as análises de risco. Uma delas possui

todas as combinações possíveis derivadas da fórmula que calcula os riscos de

incidentes. A outra funciona como agregadora dessas combinações para representar uma

instância de análise. Elas foram listadas na Tabela 3.1 e podem ser visualizadas na

Figura 3.3.

Page 45: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

28

Figura 3.2 – Diagrama Entidade-Relacionamento que representa as ameaças da organização, as vulnerabilidades dos ativos e os

controles aplicados sobre eles.

Page 46: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

29

Figura 3.3 – Diagrama Entidade-Relacionamento que representa as análises.

3.4 – Requisito técnico extra

Dado que o modelo de dados é relacional, o banco de dados deve suportar

transações para que a atomicidade de uma operação de escrita seja garantida quando

mais de uma entidade for afetada. Trata-se de uma das propriedades do conceito ACID

– Atomicidade, Consistência, Isolamento e Durabilidade (em inglês Atomicity,

Consistency, Isolation, Durability).

3.5 – Permissões de acesso

O sistema deverá ter um escopo de acesso diferenciado para cada perfil de

usuário. Isso será definido por meio de papéis e permissões. Os papéis são

agrupamentos de permissões comuns a um grupo de usuários que desempenham uma

função específica e limitada. Existirão quatro papéis inicialmente, conforme descritos

abaixo:

• Administrador – Controle total. Pode executar todas as funcionalidades

que o sistema oferece.

Page 47: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

30

• Gerente de organizações – Controle total sobre dados de organizações,

incluindo sua estrutura e suas análises. Não pode alterar dados de

catálogo, apenas criar novas entradas.

• Analista – Controle total sobre as estruturas das organizações e de suas

análises. Não pode alterar os dados de catálogo nem aqueles sobre a

organização, apenas criar novas entradas ou novas organizações.

• Visitante – Somente leitura. Acessa todos os dados do sistema, mas não

pode realizar nenhuma modificação.

Na Tabela 3.2 abaixo, estão listadas as permissões de cada papel.

Tabela 3.2 – Tabela de papéis e permissões do sistema.

Papel Permissões

Administrador

Visualizar catálogo

Criar entradas no catálogo

Atualizar entradas do catálogo

Remover entradas do catálogo

Visualizar organizações

Criar organizações

Atualizar dados sobre as organizações

Remover organizações

Gerenciar a estrutura das organizações

Visualizar análises

Criar análises

Atualizar dados sobre as análises

Excluir análises

Gerente de organizações

Visualizar catálogo

Criar entradas no catálogo

Visualizar organizações

Criar organizações

Atualizar dados sobre as organizações

Remover organizações

Gerenciar a estrutura das organizações

Visualizar análises

Criar análises

Atualizar dados sobre as análises

Excluir análises

Page 48: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

31

Papel Permissões

Analista

Visualizar catálogo

Criar entradas no catálogo

Visualizar organizações

Criar organizações

Gerenciar a estrutura das organizações

Visualizar análises

Criar análises

Atualizar dados sobre as análises

Visitante

Visualizar catálogo

Visualizar organizações

Visualizar análises

Page 49: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

32

Capítulo 4 –

Implementação

O sistema foi dividido em dois módulos: back-end e front-end. O primeiro

trabalha as validações de entrada e acessa o banco de dados, e o segundo provê uma

interface gráfica para o usuário final. Os critérios de escolha das tecnologias utilizadas

em cada um e suas implementações serão detalhadas a seguir.

4.1 – Critérios de escolha das tecnologias

A tecnologia utilizada para desenvolver um sistema deve ser um meio para

alcançar seus objetivos. Ela não deve ser escolhida de acordo com a moda ou de

maneira aleatória. Alguns fatores para se levar em consideração no processo de escolha

das tecnologias são:

• Requisitos de desempenho

• Preços das ferramentas de desenvolvimento

• Licenças de bibliotecas

• Suporte do fabricante ou da comunidade

• Documentação

• Domínio da tecnologia pelo time de desenvolvimento

O desempenho não é uma preocupação para um primeiro momento. Dado que a

ferramenta será utilizada pela própria organização que deseja implantar um SGSI ou por

uma empresa contratada para tal, ela não receberá um número alto de requisições

simultaneamente. A maior probabilidade de ocorrer lentidão é durante uma análise, pois

um número elevado de ativos e serviços de TI pode levar a um grande número de

combinações a calcular. Porém, a análise faz parte de um processo maior de avaliação

humana, resultando em interações mais esparsas com o sistema. É importante notar que

o desempenho não é um indicador de sucesso deste trabalho. Apenas quando este se

tornar um problema, existirá um motivo para realizar a otimização.

Para este projeto, foram escolhidas ferramentas e bibliotecas gratuitas, com

licenças permissivas. Serem ativamente suportados pelos fabricantes e com alta adesão

Page 50: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

33

comunidade foram outros critérios utilizados na escolha. Dessa forma, pode-se contar

com dependências maduras e estáveis.

Todas as dependências que não possuíam uma documentação clara e completa

foram descartadas no processo de escolha. Até mesmo as dependências de código aberto

precisam ser bem documentadas, pois uma documentação bem feita e atualizada poupa

tempo de desenvolvimento e torna o produto mais fácil de usar.

Quanto ao domínio de tecnologias, o autor possuía experiências profissionais

com as linguagens C++ e C#, com desenvolvimento de APIs (Application Programming

Interface), com modelagem de banco de dados e com o SGBD Microsoft SQL Server.

Academicamente, já havia tido contato também com as linguagens C, Perl e

programação de aplicativos Android em Java. Porém, o mesmo decidiu realizar o

projeto em Python, uma linguagem que não conhecia, e que é apropriada para

desenvolvimento rápido e prototipagem de ideias.

4.2 – O banco de dados

Conforme determinado em 3.3 – O modelo de dados, o banco de dados deve

suportar primariamente a estrutura de dados relacional.

O SGBD selecionado para o projeto foi o MySQL Community Edition,

atualmente pertencente à Oracle Corporation. Ele é gratuito, possui código aberto e está

sendo ativamente evoluído. Segundo o website DB-Engines [25] [26], ele tem

significativa adesão da comunidade, sendo o segundo mais popular dos 138 bancos

relacionais listados, atrás do Oracle e à frente do Microsoft SQL Server. A segunda

opção gratuita mais popular é o PostgreSQL, que também atende aos requisitos do

projeto [27], mas não foi escolhido pelo fato de ser ligeiramente mais complexo de

configurá-lo.

O MySQL disponibiliza alguns mecanismos diferentes de armazenamento

durante sua instalação para usar como padrão na criação de tabelas. Deverá ser

escolhido aquele chamado InnoDB, pois é o que suporta transações e relacionamentos

entre tabelas utilizando chaves estrangeiras. Na versão 5.7, que é a utilizada neste

projeto, o InnoDB já é o mecanismo de armazenamento padrão do MySQL.

O script de criação das tabelas encontra-se no Apêndice C.

Page 51: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

34

4.3 – O back-end

O back-end é o principal componente da solução, pois é nele que está contido

todo o conjunto de funcionalidades e é por onde passa toda solicitação de acesso a

dados. Isso significa que, se bem construído, o SGBD ou a interface gráfica poderiam

ser substituídos sem modificações significativas no back-end.

Para implementá-lo, foi desenvolvida uma API em Python 3.6, que recebe

requisições utilizando o protocolo Hypertext Transfer Protocol (HTTP). As mensagens

são trafegadas no formato JavaScript Object Notation (JSON).

Este componente foi batizado de knoweak API pelo autor. A origem foi

inspirada pela política de conhecimento de clientes, fornecedores e parceiros, exigida de

instituições de pagamentos para que monitorem e alertem as autoridades competentes

sobre suspeitas de fraude e de lavagem de dinheiro. Essas políticas são conhecidas,

respectivamente, pelos termos em inglês Know Your Customers (KYC), Know Your

Suppliers (KYS) e Know Your Partners (KYP). Com base nesse conhecimento, o autor

decidiu cunhar o termo Know Your Weaknesses e a contração dele, “knoweak”, como

referência a um sistema que permite conhecer as fraquezas de uma organização.

4.3.1 – O design da API

Como a própria sigla sugere, API é uma interface para programadores

interagirem com o sistema. Toda boa interface faz uma separação de fronteiras

adequada e oferece funcionalidades que são simples de serem utilizadas, muitas vezes

até intuitivas. Para alcançar esse objetivo aqui, é importante definir convenções e

práticas que serão utilizadas.

A API segue as práticas recomendadas pelo estilo arquitetural Representational

State Transfer (REST) [28]. Algumas dessas práticas são [29]:

• Criar uma identificação única para cada recurso5, fazendo uso de

substantivos.

• Utilizar verbos HTTP (GET, POST, etc.) apropriados de acordo com a

ação desejada.

5 Segundo o criador do estilo arquitetural REST, Roy Thomas Fielding, recurso é uma abstração

chave da informação. Qualquer informação que possa ser nomeada pode ser um recurso, por exemplo,

uma pessoa, a geolocalização de um centro empresarial ou a cotação de uma moeda. [28]

Page 52: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

35

• Devolver um código de resposta HTTP adequado ao resultado de cada

operação.

4.3.1.1 – Ideias gerais sobre os recursos

Um recurso é a representação de uma informação. Segundo Roy Thomas

Fielding, é um mapeamento conceitual para um conjunto de entidades, e não a entidade

propriamente dita que corresponde a esse mapeamento.

Sobre um recurso, podem ser executadas ações, e assim pode-se implementar as

funcionalidades especificadas em “Requisitos de negócio”. Essas ações serão

representadas pelos verbos HTTP e cada recurso terá um conjunto diferente de ações

disponíveis, de acordo com as necessidades especificadas.

Geralmente, cada entidade possui dois recursos: um que representa um item

individual, e outro que representa uma coleção de itens. Por exemplo, para obter uma

lista de organizações cadastradas, executa-se uma ação de leitura sobre o recurso

“organizações”. Agora, para obter os dados de uma organização específica, executa-se

uma ação de leitura sobre o recurso “organização” (observe o singular) e informa-se o

identificador da organização desejada. Em vez de chamar cada recurso por seus nomes,

utiliza-se uma forma comum de se identificar recursos de uma API, chamado Uniform

Resource Identifier (URI). Segue como identificar com URIs os recursos do exemplo

acima:

• /organizations – Coleção de organizações

• /organizations/:id – Organização identificada por um código

Juntando o verbo HTTP, pode-se definir as seguintes funcionalidades sobre as

organizações:

• GET /organizations – Obtém uma lista de organizações

• POST /organizations – Cadastra uma nova organização

• GET /organizations/:id – Obtém uma única organização identificada pelo

parâmetro “id”

• PATCH /organizations/:id – Atualiza os dados de uma organização

identificada pelo parâmetro “id”

Page 53: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

36

Observe que, mesmo quando a ação ocorre sobre uma única organização, o

nome do recurso continua no plural. Isso é coerente se observado da ótica que uma

organização está inserida em uma coleção delas. Observe também uma fluidez na

leitura, quase formando uma frase no imperativo – “GET /organizations/27” pode ser

lido como “Obtenha a organização cujo identificador é 27” ou “Obtenha da lista de

organizações o elemento identificado pelo número 27”. Esses conceitos se repetem para

todos os outros recursos e refletem as práticas recomendadas pelo estilo arquitetural

REST.

Dar nome aos recursos é uma arte e vai ser tão melhor quanto for o

entendimento da(s) entidade(s) que se deseja representar. O estilo arquitetural REST se

debruça sobre o protocolo HTTP para isso, e a regra geral é que nenhum recurso deve

possuir verbo em seu URI. Isso difere do formato utilizado em Remote Procedure Call

(RPC), onde “POST /organizations” se transformaria em “addOrganization(data)”.

Até agora foram abordados os seguintes tópicos sobre um recurso: conceito, a

arte de identificá-lo, os tipos coleção e item individual, e a dependência do verbo HTTP.

É possível perceber, porém, que a ação de criar uma organização exige que mais dados

sejam enviados para o servidor. Afinal, ele precisa saber qual o número de registro e o

nome empresarial que devem ser armazenados, pelo menos. Essas informações são

enviadas no corpo de uma requisição HTTP como um objeto JSON, e representa o

estado do recurso. Pode-se, posteriormente, ler ou alterar o estado desse recurso.

4.3.1.2 – Convenção sobre os verbos HTTP

Apesar de existir uma convenção informal na comunidade de desenvolvedores

de APIs sobre o uso dos verbos HTTP em APIs REST, há muitas discussões acerca do

seu uso correto e, algumas vezes, até limitações técnicas para implementá-los da

maneira recomendada – por exemplo, o verbo PATCH não é facilmente implementável

em C# .NET. Não há certo ou errado, o importante é ser coerente dentro do contexto em

que se está trabalhando e definir a semântica utilizada para que os clientes consigam ter

previsibilidade do comportamento do sistema a partir de uma amostra dele. Por isso,

está definida abaixo a semântica dos verbos para o componente de back-end

desenvolvido neste trabalho.

• POST – Utilizado para criar recursos.

Page 54: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

37

• GET – Utilizado para realizar consultas em um recurso. Essas operações

não provocam alteração do estado do recurso no servidor.

• PATCH – Utilizado para realizar modificações parciais em um recurso,

atualizando somente os dados solicitados na requisição.

• PUT – Utilizado para substituir completamente o estado de um recurso

por um novo, que é informado na requisição.

• DELETE – Utilizado para remover ou tornar indisponível um recurso no

servidor.

4.3.1.3 – Códigos de resposta HTTP

Os códigos de resposta HTTP (em inglês, Status Code) utilizados pela

ferramenta e seus significados estão apresentados na Tabela 4.1.

Tabela 4.1 – Códigos de resposta HTTP utilizados pela API.

Status Code Descrição

200 (OK) Operação realizada com sucesso.

201 (Created) Recurso criado com sucesso.

400 (Bad Request) Sintaxe inválida.

404 (Not Found) Recurso não encontrado.

422 (Unprocessable Entity) Erros de validação (dados ou semântica inválidos).

500 (Internal Server Error) Ocorreu um erro inesperado no servidor.

Quando um recurso for criado com sucesso, além do código de resposta 201

(Created), será retornado também o cabeçalho “Location” preenchido com o caminho

relativo do recurso criado. Esta é uma forma de indicar para o usuário onde ele pode

encontrar o recurso que acabou de ser criado.

4.3.1.4 – Recursos disponíveis

Na Tabela 4.2, estão listados os recursos disponíveis e as ações suportadas por

cada um. Os substantivos que identificam os recursos estão em inglês, assim como todo

Page 55: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

38

o código fonte do sistema. Os parâmetros são prefixados por dois pontos e devem ser

substituídos pelos valores apropriados durante o uso.

Tabela 4.2 – Relação das identificações dos recursos e dos verbos HTTP

disponíveis para cada um.

Recurso Verbos suportados

/departments GET, POST

/departments/:id GET, PATCH

/macroprocesses GET, POST

/macroprocesses/:id GET, PATCH

/processes GET, POST

/processes/:id GET, PATCH

/itServices GET, POST

/itServices/:id GET, PATCH

/itAssets GET, POST

/itAssets/:id GET, PATCH

/itAssetCategories GET, POST

/itAssetCategories/:id GET, PATCH

/securityThreats GET, POST

/securityThreats/:id GET, PATCH

/mitigationControls GET, POST

/mitigationContorls/:id GET, PATCH

/organizations GET, POST

/organizations/:id GET, PATCH

/organizations/:id/departments GET, POST

/organizations/:id/departments/:departmentId GET, DELETE

/organizations/:id/macroprocesses GET, POST

/organizations/:id/macroprocesses/:instanceId GET, DELETE

/organizations/:id/processes GET, POST

/organizations/:id/processes/:instanceId GET, PATCH, DELETE

/organizations/:id/itServices GET, POST

/organizations/:id/itServices/:itServiceInstanceId GET, PATCH, DELETE

/organizations/:id/itServices/:itServiceInstanceId/itAssets GET, POST

/organizations/:id/itServices/:itServiceInstanceId/itAssets/:itAssetInstanceId PATCH, DELETE

/organizations/:id/itAssets GET, POST

/organizations/:id/itAssets/:instanceId GET, PATCH, DELETE

/organizations/:id/itAssets/:instanceId/vulnerabilities GET, POST

/organizations/:id/itAssets/:instanceId/vulnerabilities/:threatId GET, PATCH, DELETE

Page 56: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

39

Recurso Verbos suportados

/organizations/:id/itAssets/:instanceId /controls GET, POST

/organizations/:id/itAssets/:instanceId /controls/:controlId DELETE

/organizations/:id/securityThreats GET, POST

/organizations/:id/securityThreats/:threatId GET, PATCH, DELETE

/organizations/:id/analyses GET, POST

/organizations/:id/analyses/:analysisId GET, PATCH

/organizations/:id/analyses/:analysisId/details GET

/version GET

/healthCheck GET

4.3.2 – A escolha do framework web

Existem diversos frameworks para se construir uma API em Python. Apenas

para exemplificar, alguns deles são: Django, Flask, Falcon, Sanic, Bottle e Hug.

Eles são responsáveis por receber requisições HTTP e direcionar para o método

dedicado a processar a aquela ação. Para isso, esses frameworks contam com

mapeamento de rotas, que ligam Uniform Resource Identifiers (URI) a funções em

Python.

O escolhido para este projeto foi o Falcon 1.4.1, por ser uma implementação

minimalista, com poucas abstrações e por ser uma das que fornecem melhor tempo de

resposta [30] [31]. Apesar de desempenho não ser um alvo deste trabalho, é relevante

escolher dependências que façam uso inteligente dos recursos de hardware.

O Falcon força a aderência ao estilo REST, pois cada recurso deve ser

representado por uma classe e, para cada ação passível de ser executada sobre o recurso,

existirá um método dessa classe que tratará a solicitação. Os nomes desses métodos

seguem uma convenção ligada aos verbos HTTP – on_get, on_post, on_delete, etc. – e

são chamados de responders pelos desenvolvedores do Falcon. Assim, basta associar

uma classe a uma URI para que o framework direcione automaticamente a solicitação

para a função apropriada.

Na Figura 4.1 abaixo, é exemplificado como utilizar o Falcon para implementar

um recurso que responda à solicitação GET /healthCheck. Essa operação testa se a

aplicação consegue se comunicar com suas principais dependências. Em caso de

sucesso, é retornado o status HTTP 200 (OK) e nenhum conteúdo na resposta. Em caso

Page 57: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

40

de falha, é retornado o status HTTP 207 (Multi-status) e uma lista de componentes com

erro. Atualmente, apenas a conectividade com o banco de dados é avaliada.

Figura 4.1 – Código de exemplo para implementação de um recurso de uma

API utilizando o framework Falcon.

4.3.2.1 – Sobre a serialização de dados

Em Python, é utilizada a estratégia de nomenclatura snake_case para dar nomes

a variáveis, a métodos e às propriedades de um dicionário. Essa estratégia utiliza

caracteres em caixa baixa e o caractere underscore para separar palavras (ex.: car,

my_car, home_address).

Em APIs que utilizam contratos de dados em JSON, é mais comum utilizar a

convenção aplicada à linguagem JavaScript, chamada camelCase. Nesse formato, as

palavras são escritas sem separações e com todas as iniciais em maiúsculo, exceto a

primeira (ex.: car, myCar, homeAddress).

Para atender às duas convenções, deveria haver uma conversão de um formato

para outro, isto é, quando uma mensagem trafegada pela rede em JSON chegar à API,

ela deve ser convertida para o padrão utilizado pelas variáveis em Python. O processo

inverso deve ocorrer quando a API emitir uma resposta.

import falcon

class HealthCheck:

def on_get(self, req, resp):

errors = []

test_database(errors)

if not errors:

resp.status = falcon.HTTP_OK

return

resp.status = falcon.HTTP_MULTI_STATUS

resp.media = {

'components': errors

}

api = falcon.API()

api.add_route('/healthCheck', HealthCheck())

Page 58: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

41

Por padrão, os frameworks web em Python (des)serializam6 os dados de entrada

e saída no mesmo formato usado pela linguagem, o snake_case. O Falcon não possui a

capacidade de fazer a conversão nativamente, mas ele dispõe de configurações que

permitem interceptar a mensagem que chega e manipulá-la antes de chegar ao

responder. O mesmo pode ser feito após o responder retornar e imediatamente antes de

a API enviar a resposta para o cliente. Assim, a solução foi implementada pelo autor por

meio dessas interceptações e com o auxílio de uma biblioteca chamada “inflection”

[32]. A biblioteca “inflection” é capaz de converter um texto de camelCase para

snake_case. Já para o sentido contrário, a transformação foi feita sem o auxílio da

biblioteca, por meio de funções criadas pelo próprio autor.

4.3.2.2 – Sobre a comunicação com o banco de dados

Para se conectar ao banco de dados e realizar consultas, foi utilizada a biblioteca

SQLAlchemy. Esta é uma ferramenta de mapeamento entre objetos Python e seus

modelos relacionais correspondentes, e se insere na classe de ferramentas conhecidas

como Object-Relational Mapping (ORM). A própria ferramenta é quem gera as

instruções SQL a partir de chamadas de funções e as envia para o SGBD

posteriormente.

O benefício de se utilizar um ORM é a velocidade no desenvolvimento e a

abstração do fornecedor de SGBD SQL. O SQLAlchemy possui conectores com

diversos SGBDs e possui o dialeto correspondente para cada um deles. Portanto, mesmo

que a sintaxe do PostgreSQL seja ligeiramente diferente daquela utilizada pelo MySQL,

o SGBD poderia ser trocado, bastando apenas substituir o conector de banco de dados,

sem maiores alterações na aplicação.

O prejuízo de se utilizar um ORM é não se ter controle sobre as consultas que

são geradas e enviadas para o banco de dados. Isso pode causar significativas perdas de

desempenho. Porém, a maior parte das operações é para realizar simples criações,

leituras e modificações de registros. Nesse caso, o ganho durante o desenvolvimento ao

usar um ORM supera a perda de desempenho que pode vir a ocorrer.

6 Serializar um objeto significa transformar seu conteúdo em um texto com um formato

específico. A desserialização é o processo inverso: transformar um texto com um formato específico em

um objeto. Alguns sistemas suportam a serialização de objetos tanto em XML (Extensible Markup

Language) quanto JSON.

Page 59: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

42

4.3.3 – Como criar um recurso

Para inserir no sistema uma organização que é portadora do número de registro

112358, da razão social “Empresa Exemplo LTDA.” e do nome fantasia “Mr.

Exemplo”, a requisição HTTP mostrada pela Figura 4.2 deve ser enviada para o

servidor (API).

Figura 4.2 – Exemplo de solicitação HTTP para criar um recurso.

A solicitação passa primeiro por uma etapa de validação, que verifica, por

exemplo, se os campos obrigatórios foram informados, se os tamanhos de texto estão

dentro dos limites permitidos, e se o número de registro é único no sistema.

Se passar pela validação, será devolvida uma resposta de sucesso com o código

HTTP 201 (Created) e a representação vigente do novo recurso. A Figura 4.3 mostra

como seria a resposta para a solicitação anterior.

Nota-se que duas informações foram adicionadas ao registro sem que o cliente

solicitasse: as datas de criação (“createdOn”) e de última modificação do registro

(“lastModifiedOn”). Imediatamente após a criação, ambas serão iguais. Quase todas as

entidades possuem esse metadado, salvo exceções onde não são pertinentes.

POST /organizations HTTP/1.1

Host: localhost:8000

Content-Type: application/json

{

"tradeName": "Mr. Exemplo",

"legalName": "Empresa Exemplo LTDA.",

"taxId": "112358"

}

Page 60: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

43

Figura 4.3 – Resposta à solicitação HTTP para criar um recurso.

4.3.4 – Como obter um recurso

Para obter um recurso, basta utilizar o verbo GET em um recurso existente. Por

exemplo, para obter o recurso recém-criado de identificador número 1, deve-se fazer a

requisição “GET /organizations/1”. Nenhum corpo deve ser enviado para esse tipo de

solicitação. A resposta será igual à do item anterior, com exceção de o cabeçalho

“Location” estar ausente e do código de resposta HTTP ser 200 (OK).

Os exemplos de requisição e resposta são mostrados, respectivamente, pela

Figura 4.4 e pela Figura 4.5. Observe que, ao obter um recurso individual, ele sempre

retornará encapsulado em um objeto chamado “data”.

Figura 4.4 – Exemplo de solicitação HTTP para obter um recurso.

HTTP/1.1 201 Created

Content-Length: 195

Content-Type: application/json; charset=UTF-8

Location: /organizations/1

{

"data": {

"id": 1,

"taxId": "112358",

"legalName": "Empresa Exemplo LTDA.",

"tradeName": "Mr. Exemplo",

"createdOn": "2018-08-27T05:16:44.704000",

"lastModifiedOn": "2018-08-27T05:16:44.704000"

}

}

GET /organizations/1 HTTP/1.1

Host: localhost:8000

Page 61: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

44

Figura 4.5 – Resposta à solicitação HTTP para obter um recurso.

Quando a solicitação é para obter uma coleção de registros, o formato do objeto

de resposta é ligeiramente diferente. Agora, a propriedade “data” não é mais um objeto,

e sim uma lista. O exemplo de requisição e resposta para listar todas as organizações são

mostrados pela Figura 4.6 e pela Figura 4.7 respectivamente.

Observe na Figura 4.7 que existe também um objeto com dados sobre a

paginação. Para todos os recursos que representam coleções, a API sempre fará a

paginação no lado do servidor e retornará a resposta com a página solicitada. Para

solicitar uma página diferente, o cliente deve informar a página desejada e quantos

registros por página devem ser exibidos. Esses dados devem ser passados via

querystring. Alguns exemplos de opções válidas são listadas abaixo:

• GET /organizations?page=2&recordsPerPage=30

• GET /organizations?page=2

• GET /organizations?recordsPerPage=30

Quando não informados, os parâmetros assumem seus valores padrões, que são

1 (um) para o número da página e 10 (dez) para o número de registros por página.

Informar um número negativo não gera erro, e o valor padrão será utilizado. A última

página pode conter menos registros que o número informado em “recordsPerPage”.

HTTP/1.1 200 OK

Content-Length: 195

Content-Type: application/json; charset=UTF-8

{

"data": {

"id": 1,

"taxId": "112358",

"legalName": "Empresa Exemplo LTDA.",

"tradeName": "Mr. Exemplo",

"createdOn": "2018-08-27T05:16:44.704000",

"lastModifiedOn": "2018-08-27T05:16:44.704000"

}

}

Page 62: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

45

Figura 4.6 – Exemplo de solicitação HTTP para obter um recurso do tipo

coleção.

Figura 4.7 – Resposta à solicitação HTTP para obter um recurso do tipo

coleção.

4.3.5 – Como modificar um recurso

A API suporta modificações parciais em diversos recursos por meio do verbo

PATCH. Isso significa que não é necessário enviar o estado completo de um recurso

para atualizar somente um subconjunto de suas propriedades. Ainda assim, se desejado,

o estado completo pode ser enviado para atualização.

GET /organizations HTTP/1.1

Host: localhost:8000

HTTP/1.1 200 OK

Content-Length: 285

Content-Type: application/json; charset=UTF-8

{

"data": [

{

"id": 1,

"taxId": "112358",

"legalName": "Empresa Exemplo LTDA.",

"tradeName": "Mr. Exemplo",

"createdOn": "2018-08-27T05:16:44.704000",

"lastModifiedOn": "2018-08-27T05:16:44.704000"

}

],

"paging": {

"currentPage": 1,

"recordsPerPage": 10,

"totalPages": 1,

"totalRecords": 1

}

}

Page 63: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

46

Suponha que a organização de “id” 1 foi cadastrada com o nome fantasia errado.

O exemplo a seguir, mostrado na Figura 4.8, solicita a correção para o nome “O

Exemplo do Brasil”.

Figura 4.8 – Exemplo de solicitação HTTP para modificar um recurso.

Os campos que não forem enviados em uma ação PATCH não serão alterados.

A resposta de sucesso contém a representação completa e atualizada do recurso, como

mostra a Figura 4.9 abaixo.

Figura 4.9 – Resposta à solicitação HTTP para modificar um recurso.

Observe que a data de última modificação foi atualizada, enquanto a data de

criação permaneceu a mesma.

PATCH /organizations/1 HTTP/1.1

Host: localhost:8000

Content-Type: application/json

{

"tradeName": "O Exemplo do Brasil"

}

HTTP/1.1 200 OK

Content-Length: 203

Content-Type: application/json; charset=UTF-8

{

"data": {

"id": 1,

"taxId": "112358",

"legalName": "Empresa Exemplo LTDA.",

"tradeName": " O Exemplo do Brasil ",

"createdOn": "2018-08-27T05:16:44.704000",

"lastModifiedOn": "2018-08-27T06:41:18.223000"

}

}

Page 64: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

47

Um ponto importante de se notar é que, eventualmente, deseja-se remover a

informação de um campo que não é obrigatório. Para isso, é necessário enviar

explicitamente o campo com valor nulo para a API. Se o campo for omitido da

solicitação, ele permanecerá com o valor antigo, pois não foi sinalizada a intenção de

alterar seu valor. Por fim, se o campo for obrigatório, será emitido um erro de validação

e a operação será abortada. Abaixo, um exemplo que solicita a remoção do nome

fantasia (propriedade opcional de uma organização) é mostrado na Figura 4.10.

Figura 4.10 – Exemplo de solicitação HTTP para remover uma propriedade

opcional de um recurso.

4.3.6 – Como remover um recurso

Para remover um recurso, este deve aceitar processar o verbo DELETE, o que

não ocorre para organizações. É possível, porém, remover um departamento de uma

organização. Veja na Figura 4.11 o exemplo que solicita a remoção do departamento

identificado pelo número 5 da organização identificada pelo número 1.

Figura 4.11 – Exemplo de solicitação HTTP para remover um recurso.

O cabeçalho Content-Type pode ser removido da requisição, visto que nenhum

conteúdo é enviado no corpo desse tipo de solicitação. Todas as informações

necessárias para a exclusão estão no URI.

PATCH /organizations/1 HTTP/1.1

Host: localhost:8000

Content-Type: application/json

{

"tradeName": null

}

DELETE /organizations/1/departments/5 HTTP/1.1

Host: localhost:8000

Page 65: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

48

O primeiro passo dessa operação é realizar a validação do identificador

solicitado. Caso não exista, será retornada uma resposta com código HTTP 404 (Not

Found).

Se existir, o recurso será excluído com sucesso, a resposta terá código HTTP

200 (OK) e o corpo estará vazio. Uma segunda solicitação de DELETE para o mesmo

recurso resultaria em uma resposta com código 404 (Not Found), pois ele não existiria

mais.

4.3.7 – Como criar uma análise de risco

A partir das instruções de como criar, obter, atualizar e remover recursos, é

possível construir toda a estrutura de uma organização e cadastrar suas relevâncias, as

ameaças existentes e as vulnerabilidades dos ativos.

O passo seguinte consiste em executar a operação que realiza a análise. Isso

pode ser feito por meio do recurso “/organizations/:id/analyses”. Essa operação permite

adicionar uma descrição para a análise e também informar os escopos desejados, como

mostrado abaixo na Figura 4.12.

Figura 4.12 – Exemplo de solicitação HTTP para criar análise.

Os escopos de análise escolhidos na solicitação foram o departamento 1 inteiro e

apenas parte do departamento 4. Desse último, foram incluídos somente o processo 11

do macroprocesso 2 e todos os processos do macroprocesso 3.

POST /organizations/1/analyses HTTP/1.1

Host: localhost:8000

Content-Type: application/json

{

"description": null,

"scopes": [

{ "departmentId": 1 },

{ "departmentId": 4, "macroprocessId": 2, "processId": 11 },

{ "departmentId": 4, "macroprocessId": 3 }

]

}

Page 66: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

49

A resposta possui o formato mostrado pela Figura 4.13. Ela não inclui os

resultados da análise porque eles podem chegar a milhares de itens e isso tornará o

objeto de resposta grande demais para ser trafegado pela rede. Uma outra rota da API

foi disponibilizada para realizar a consulta paginada dos resultados.

Figura 4.13 – Resposta à solicitação HTTP para criar análise.

Por essa resposta, é possível saber o número de itens que foram analisados em

“totalProcessedItems”. Isso pode ser utilizado para averiguar se o número está de

acordo com o escopo selecionado.

Conforme já mencionado, existe uma outra rota da API que permite a consulta

dos detalhes da análise, permitindo observar seus resultados. Eles estarão ordenados

pelo grau de risco de forma decrescente.

O exemplo abaixo mostra a consulta dos detalhes. Os valores das propriedades

foram removidos e a lista contém somente um item a título de exemplo. Uma análise

real terá dezenas, centenas ou milhares de itens na lista de detalhes. Veja e requisição e

resposta na Figura 4.14 e na Figura 4.15 respectivamente. Os textos vazios e os números

zerados estão presentes apenas para indicar os tipos de dado esperados. Em uma análise

real, os campos do tipo inteiro e decimal nunca estarão zerados, dado que as escalas

utilizadas para classificação de relevâncias, ameaças e vulnerabilidades são de 1 a 5.

HTTP/1.1 201 Created

Content-Length: 154

Content-Type: application/json; charset=UTF-8

Location: /organizations/1/analyses/100

{

"data": {

"id": 100,

"description": null,

"createdOn": "2018-09-02T20:01:38.723000",

"lastModifiedOn": "2018-09-02T20:01:38.723000",

"totalProcessedItems": 2

}

}

Page 67: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

50

Figura 4.14 – Exemplo de solicitação HTTP para obter os detalhes de uma

análise.

Figura 4.15 – Resposta à solicitação HTTP para obter os detalhes de uma

análise.

GET /organizations/1/analyses/100/details HTTP/1.1

Host: localhost:8000

HTTP/1.1 200 OK

Content-Length: ...

Content-Type: application/json; charset=UTF-8

{

"data": [

{

"departmentName": "",

"macroprocessName": "",

"processName": "",

"processRelevance": 0,

"itServiceName": "",

"itServiceRelevance": 0,

"itAssetName": "",

"itAssetRelevance": 0,

"itAssetVulnerabilityLevel": 0,

"securityThreatName": "",

"securityThreatLevel": 0,

"calculatedImpact": 0.0,

"calculatedProbability": 0.0,

"calculatedRisk": 0.0

}

],

"paging": {

"currentPage": 1,

"recordsPerPage": 10,

"totalPages": 1,

"totalRecords": 1

}

}

Page 68: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

51

4.4 – O front-end

O sistema precisa de uma interface gráfica para ser utilizada por um usuário

final. A API é apenas uma interface do back-end onde outros sistemas podem se

conectar a ele. Apesar de ser possível interagir com uma API REST por meio de

algumas ferramentas, elas não são amigáveis e são mais utilizadas pelos próprios

desenvolvedores do sistema.

O front-end pode ser uma aplicação desktop, uma aplicação web ou um

aplicativo mobile. Na primeira opção, o usuário precisa obter um arquivo de instalação e

executá-lo na sua máquina. Além disso, o processo de atualização do software sofre

muita fricção ao utilizar essa alternativa. A segunda opção é mais flexível e escalável,

podendo ser acessada pela Internet ou pela rede interna de uma organização. A terceira

opção é destinada a usuários de dispositivos móveis e, muitas vezes, é capaz de oferecer

ótima experiência de uso. Porém, essa última é fornecida geralmente como um canal

alternativo de acesso aos serviços de uma empresa, pois exige um esforço maior de

desenvolvimento para suportar diferentes tamanhos e fabricantes de dispositivos. A

escolha preferida para este projeto foi a aplicação web.

O framework utilizado foi o Angular (versão 5), criado e mantido pelo Google.

Assim como os “concorrentes” React, Vue.js, entre outros, ele é empregado para

desenvolver Single Page Applications (SPA)7. A razão da escolha do Angular foi o

desacoplamento que ele possui entre a linguagem de marcação Hypertext Markup

Language (HTML) e o código que lida com o conteúdo dinâmico das páginas – o React

mistura os dois em um mesmo arquivo. Além disso, possui significativa adesão da

comunidade [33] [34] – o que não vale para o Vue.js –, contribuindo para que existam

opções de bibliotecas que resolvem problemas conhecidos, como manipulação de tokens

de autenticação.

4.4.1 – Autenticação

Um mecanismo simplificado de autenticação foi implementado para impedir

acesso não autorizado ao sistema. Para tal funcionalidade, foi utilizada uma solução de

um fornecedor terceiro, chamado Auth0. Sua versão gratuita atende às necessidades

7 Single Page Application é o nome dado à aplicação que oferece a navegabilidade em uma

mesma página web, sem precisar fazer novas requisições ao servidor para renderizar um novo layout.

Page 69: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

52

básicas de identificação do usuário e gerenciamento de conta, como a funcionalidade

“Esqueci minha senha” [35] com envio de e-mail para recuperação da mesma.

As imagens abaixo (Figura 4.16 e Figura 4.17) mostram uma tela exigindo a

entrada das credenciais e outra para efetuar o login.

Figura 4.16 – Tela apresentada antes de informar as credenciais de acesso.

Figura 4.17 – Tela de login.

4.4.2 – Menu

O website possui um menu que permite navegar entre as diferentes telas da

aplicação. Ele está dividido em uma seção que contém dados de catálogo (aqueles não

vinculados a organizações) e em outra referente às organizações. A Figura 4.18 permite

visualizá-lo.

Page 70: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

53

Figura 4.18 – Tela inicial do sistema após login.

4.4.3 – Telas

O website possui telas que permitem acionar as funcionalidades da API. Serão

listadas abaixo cada uma das telas desenvolvidas.

• Tela inicial informando que deve ser realizado o login para acessar o

sistema.

• Tela inicial apresentada após o login ser realizado

• Catálogo – Tela de listagem e criação de departamentos (áreas)

• Catálogo – Tela de atualização de departamento (área)

• Catálogo – Tela de listagem e criação de macroprocessos

• Catálogo – Tela de atualização de macroprocesso

• Catálogo – Tela de listagem e criação de processos

• Catálogo – Tela de atualização de processo

• Catálogo – Tela de listagem e criação de serviços de TI

• Catálogo – Tela de atualização de serviço de TI

• Catálogo – Tela de listagem e criação de ativos de TI

• Catálogo – Tela de atualização de ativo de TI

• Catálogo – Tela de listagem e criação de ameaças

• Catálogo – Tela de atualização de ameaça

• Catálogo – Tela de listagem e criação de controles mitigatórios

• Catálogo – Tela de atualização de controle mitigatório

Page 71: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

54

• Tela de listagem de organizações

• Tela de criação e de atualização de uma organização

• Tela de visualização dos detalhes de uma organização

• Tela de manutenção da estrutura de uma organização (áreas,

macroprocessos, processos, serviços e ativos de TI)

• Tela para inclusão de área (ou departamento) à organização

• Tela para inclusão de macroprocesso a uma área da organização

• Tela para inclusão de processo a um macroprocesso da organização

• Tela para inclusão de serviço de TI a um processo da organização

• Tela para inclusão de ativo de TI a um serviço de TI da organização

• Tela de listagem de ameaças da organização

• Tela de inclusão de ameaça à organização

• Tela de listagem de todos os ativos de TI da organização

• Tela de inclusão de ativo de TI à organização

• Tela de listagem de vulnerabilidades de um ativo de TI da organização

• Tela de inclusão de vulnerabilidade de um ativo de TI da organização

• Tela de listagem de análises

• Tela de criação de análise

• Tela de visualização dos detalhes de uma análise

• Tela de atualização da descrição de uma análise

As telas iniciais antes e após login foram apresentadas em 4.4.1 – Autenticação e

4.4.2 – Menu. Abaixo serão exibidas as capturas de tela correspondente a cada uma das

telas listadas acima.

A Figura 4.19 apresenta a tela de criação e listagem de departamentos, e a Figura

4.20 apresenta a tela de atualização de um determinado departamento.

Page 72: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

55

Figura 4.19 – Tela de listagem e criação de departamentos.

Figura 4.20 – Tela de atualização de departamento.

As telas de listagem, criação e atualização de macroprocessos, de processos, de

serviços de TI se assemelham às telas de departamento, mudando apenas o texto que

identifica seu contexto. Já as telas de ativos de TI possuem uma diferença: ela permite

escolher a categoria do ativo ao criar ou atualizar. Veja o campo presente na Figura

4.21. As opções disponíveis para categoria são exibidas na Figura 4.22.

Page 73: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

56

Figura 4.21 – Tela de listagem e criação de ativos de TI.

Figura 4.22 – Tela de listagem e criação de ativos de TI com destaque para as

categorias de ativo disponíveis.

A Figura 4.23 mostra a possibilidade de alterar a categoria ao atualizar os dados

de um ativo de TI.

Page 74: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

57

Figura 4.23 – Tela de atualização de ativo de TI.

As telas do catálogo de ameaças e controles mitigatórios são similares à de

departamento, mas elas possuem um campo adicional e opcional para inserir uma

descrição. As telas de ameaças foram utilizadas como exemplo e mostram esse campo

na Figura 4.24 e na Figura 4.25.

Figura 4.24 – Tela de listagem e criação de ameaças.

Page 75: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

58

Figura 4.25 – Tela de atualização de ameaça.

A Figura 4.26 mostra o diálogo que é exibido para inserir uma organização.

Logo em seguida, a Figura 4.27 mostra a tela de listagem de organizações com um

registro adicionado.

Figura 4.26 – Tela de criação de organização.

Page 76: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

59

Figura 4.27 – Tela de listagem de organizações.

Na Figura 4.27, é possível observar cinco botões à direita da linha da tabela. O

primeiro deles, com a letra “i”, leva à página de detalhes da organização. O segundo,

leva à tela de gerenciamento de estrutura da organização. Ao lado dele, o terceiro botão

leva à listagem de ativos de TI da organização. O botão com formato triangular com

uma exclamação dentro leva à tela de ameaças da organização. Já o último, permite

visualizar as análises feitas na organização. Cada uma dessas ações também poderá ser

executada pela tela de detalhes da organização, como mostra a Figura 4.28.

Figura 4.28 – Tela de detalhes de uma organização.

Page 77: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

60

O mesmo diálogo exibido para incluir uma organização no sistema é exibido

para permitir a alteração de seus dados. A diferença é que os dados vêm preenchidos,

como mostrado pela Figura 4.29.

Figura 4.29 – Tela de atualização de uma organização.

A Figura 4.30 mostra a tela das ameaças cadastradas para uma organização,

ainda sem nenhuma ameaça cadastrada. O texto "Empresa de Teste" em azul e em cima

do cabeçalho "Ativos de TI" é clicável, e permite voltar à tela de detalhes da

organização.

Figura 4.30 – Tela de listagem de ameaças de uma organização sem nenhuma

ameaça cadastrada.

Page 78: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

61

Na Figura 4.31, é exibido um diálogo para inclusão de ameaça na organização

com os campos já preenchidos. A primeira caixa de seleção contém apenas ameaças

catalogadas. A segunda caixa de seleção está preenchida com o grau da ameaça.

Figura 4.31 – Tela para inclusão de ameaça na organização.

A Figura 4.32 mostra como fica a tela de ameaças da organização após a

inclusão de duas ameaças. É possível observar dois botões de ação em cada linha de

ameaça. O primeiro, em azul, permite editar o grau da ameaça, enquanto o segundo, em

vermelho, permite excluir a ameaça da organização.

Figura 4.32 – Tela de listagem de ameaças de uma organização preenchida com

dois registros.

Page 79: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

62

A Figura 4.33 apresenta a tela de ativos de TI cadastrados em uma organização.

É possível visualizar três botões de ação para cada registro da tabela. Eles permitem,

respectivamente, visualizar as vulnerabilidades do ativo, abrir o diálogo de atualização

do ativo, e excluí-lo da organização.

Figura 4.33 – Tela de listagem de ativos de TI de uma organização.

A Figura 4.34 mostra o diálogo que é utilizado para adicionar um ativo de TI à

organização. Ao utilizar esse caminho, o ativo passa a pertencer a organização, mas não

é incluído em nenhum serviço da organização. O usuário deve fazer isso posteriormente

para que ele possa ser devidamente analisado.

Na caixa de seleção de ativos de TI presente nesta tela, estarão disponíveis todos

aqueles presentes no Catálogo de Ativos de TI.

Figura 4.34 – Tela de inclusão de ativo de TI na organização.

Page 80: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

63

A Figura 4.35 mostra o diálogo utilizado para atualizar um ativo da organização.

Por ele, é possível alterar apenas a identificação do ativo, e essa mudança não afeta o

catálogo. Observe que o campo com o nome do ativo está bloqueado para edição.

Figura 4.35 – Tela de atualização do ativo de TI de uma organização.

A Figura 4.36 mostra a tela das vulnerabilidades de um ativo em uma

organização. Ela pode ser acessada tanto pela tela que lista os ativos de uma

organização (Figura 4.33), quanto pelo último nível da estrutura de uma organização

(mostrado mais adiante na Figura 4.40).

Figura 4.36 – Tela de listagem de vulnerabilidades de um ativo de TI sem

nenhuma vulnerabilidade cadastrada.

O diálogo para cadastrar uma vulnerabilidade é exibido na Figura 4.37. Para

efetivar a inclusão, deve-se escolher uma das ameaças existentes na organização e o

Page 81: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

64

grau de vulnerabilidade relativo a esta ameaça. A título de exemplo, foram cadastradas

duas vulnerabilidades com valores diferentes. O resultado pode ser visto na Figura 4.38.

Figura 4.37 – Tela para cadastrar vulnerabilidade de um ativo de TI da

organização.

Figura 4.38 – Tela de listagem de vulnerabilidades de ativo de TI preenchida

com dois registros.

Na Figura 4.38, o primeiro botão de ação permite alterar o grau de

vulnerabilidade de um ativo de TI perante uma ameaça, e o segundo, permite excluir a

vulnerabilidade. Desta tela, também é possível voltar à tela do ativo correspondente ou à

tela da organização pelos links em azul acima do cabeçalho “Vulnerabilidades”.

Page 82: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

65

As imagens a seguir se referem ao gerenciamento de estrutura de uma

organização. A Figura 4.39 mostra como é apresentada a tela da estrutura quando uma

organização acabou de ser incluída no sistema.

Figura 4.39 – Tela de gerenciamento da estrutura de uma organização. Sem

registros.

O botão “Adicionar departamento” permite iniciar o cadastramento da estrutura.

Após sua conclusão, será possível observar algo semelhante ao que é apresentado pela

Figura 4.40. Os diferentes níveis são exibidos com uma indentação em relação ao nível

imediatamente superior, e são identificados por uma estampa no início da linha. Cada

nível pode ser expandido individualmente.

As relevâncias de processos, de serviços de TI e de ativos de TI podem ser

visualizadas, respectivamente, pelas inscrições Rp, Rs e Ra em branco com fundo azul.

Quando ela estiver indefinida, constará um símbolo de interrogação em azul com fundo

branco, como pode-se observar para o processo “Negociação”.

O acionamento do botão + permite incluir um item como filho do nível em

questão. O botão com ícone de uma lixeira permite excluir um nível, incluindo todos os

seus “filhos”. Uma confirmação será exibida antes de efetivar a exclusão. Aqueles que

possuem o botão de edição permitem atualizar a relevância do nível. Por fim, o nível

mais baixo da estrutura, o ativo de TI, possui um botão adicional que leva às

vulnerabilidades daquele ativo. Naturalmente, este último nível não possui o botão +.

Page 83: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

66

Figura 4.40 – Tela de gerenciamento da estrutura de uma organização.

As telas de inclusão de cada nível são simples diálogos com caixas de seleção,

diferenciados apenas pelas informações sobre os níveis anteriores a ele. Um exemplo é

mostrado com a tela de inclusão de processo na Figura 4.41, que mostra em qual

departamento e macroprocesso está sendo incluído.

Figura 4.41 – Tela de inclusão de um processo em um macroprocesso da

organização.

Page 84: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

67

A tela de inclusão de ativo de TI em um serviço de TI da organização é um

pouco mais complexa. Ela permite tanto buscar um ativo de TI do catálogo quanto

utilizar um ativo já cadastrado na organização. Ao escolher um item do catálogo, é

possível fornecer uma identificação para ele, como o número de série de um dispositivo,

o identificador de uma licença de software, um documento de uma pessoa, etc.

A Figura 4.42 mostra como se apresenta o diálogo ao se escolher um ativo da

organização. Nessa opção, não é possível especificar ou alterar a identificação do ativo.

A Figura 4.43 mostra como se apresenta o diálogo ao se escolher um ativo do

Catálogo. Como exemplo, estão preenchidos os campos correspondentes ao ativo e à

sua relevância para o serviço.

Figura 4.42 – Tela de inclusão de ativo de TI já existente na organização em

serviço de TI da organização.

Page 85: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

68

Figura 4.43 – Tela de inclusão de ativo de TI do catálogo em serviço de TI da

organização.

Para finalizar a apresentação das telas, serão mostradas a seguir aquelas

referentes às análises. A Figura 4.44 mostra a tela de listagem de análises ainda vazia.

Para criar a primeira análise, deve-se acionar o botão “Criar análise”, que abrirá o

diálogo mostrado pela Figura 4.45.

Figura 4.44 – Tela de listagem de análises vazia.

Page 86: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

69

No diálogo responsável por criar a análise, pode-se escolher realizar uma análise

da organização inteira ou de parte dela, selecionando o escopo desejado. Também é

possível fornecer uma descrição para ela, porém este campo não é obrigatório.

Figura 4.45 – Tela de criação de análise para toda a organização.

Duas análises foram criadas e o resultado pode ser visto na Figura 4.46. Nota-se

a possibilidade de visualizar os detalhes de uma análise ou até mesmo de excluí-la por

inteiro. A tela de detalhes de uma análise permite visualizar as datas de criação e de

última modificação, a descrição e o relatório da mesma. Apenas a descrição pode ser

atualizada. Esses aspectos são mostrados na Figura 4.47.

Figura 4.46 – Tela de listagem de análises com duas análises criadas.

Page 87: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

70

Figura 4.47 – Tela de detalhes de uma análise.

Como é possível observar pela figura acima, o relatório é apresentado de forma

concisa, de maneira que apenas as informações mais relevantes são exibidas. O botão

“Exibir detalhes” permite expandir o resultado mostrando todo o caminho da estrutura

da organização no qual o ativo de TI está inserido, como mostra a Figura 4.48.

Figura 4.48 – Tela de detalhes de uma análise com relatório expandido.

Page 88: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

71

4.4.4 – Permissionamento

Elementos visuais podem ser exibidos ou ocultados da tela de acordo com as

permissões definidas em 3.5 – Permissões de acesso. Por exemplo, se um usuário não

possui permissão de exclusão em determinado recurso, o ícone da lixeira estará oculto

nas telas correspondentes àquele recurso, impedindo que ele execute a ação. O mesmo

vale para botões de criação e de atualização.

Os papéis e permissões foram definidos em inglês na ferramenta Auth0. As

permissões possuem o formato “ação:recurso”, como poderá ser visto na Tabela 4.3.

Tabela 4.3 – Definição técnica dos papéis e das permissões de acesso ao

sistema.

Papel Permissões

Admin

read:catalog

create:catalog

update:catalog

delete:catalog

read:organizations

create:organizations

update:organizations

delete:organizations

manage:organizations

read:analyses

create:analyses

update:analyses

delete:analyses

Organization manager

read:catalog

create:catalog

read:organizations

create:organizations

update:organizations

delete:organizations

manage:organizations

read:analyses

create:analyses

update:analyses

delete:analyses

Page 89: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

72

Papel Permissões

Analyst

read:catalog

create:catalog

read:organizations

create:organizations

manage:organizations

read:analyses

create:analyses

update:analyses

Guest

read:catalog

read:organizations

read:analyses

Page 90: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

73

Capítulo 5 –

Testes

Os testes foram executados manualmente para cada funcionalidade da API e da

aplicação web separadamente. Não é o intuito deste capítulo apresentar todos os testes

realizados, já que os casos são muito similares, portanto, serão fornecidos alguns

exemplos.

No back-end, os testes foram feitos utilizando o Postman, uma aplicação desktop

que permite, dentre outras funcionalidades, enviar requisições HTTP para um servidor.

Foram testadas todas as rotas criadas na API, simulando tanto casos de sucesso quanto

casos de erro.

No front-end, foram executadas todas as funcionalidades implementadas,

experimentando tanto cenários de sucesso quanto cenários que conduzem a erros. Para

esses últimos, uma mensagem deve ser exibida na tela evidenciando o problema

ocorrido. Também foi observado se o usuário estava tendo feedbacks adequados

enquanto aguardava o sistema executar uma operação, seja bloqueando botões de ação,

seja exibindo indicadores “Carregando...”.

5.1 – Testes no back-end

A Figura 5.1 mostra um exemplo de sucesso ao tentar criar uma organização de

teste pelo Postman. A parte superior representa a requisição e a inferior representa a

resposta. É possível notar as propriedades adicionais geradas e retornadas pela aplicação

e o código de resposta HTTP 201 (Created).

Page 91: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

74

Figura 5.1 – Captura de tela do Postman: Criando uma organização.

Agora, o próximo teste se refere a uma nova tentativa de incluir a mesma

organização, sem alterar nenhum dos dados enviados anteriormente. O resultado

esperado é um erro de validação de documento, pois é um dos critérios utilizados para

impedir duplicação de organizações. A Figura 5.2 mostra uma lista de erros, que contém

apenas um elemento neste caso. Esse elemento possui três propriedades:

• Código – Identificação do erro para ser interpretado por outros sistemas,

seja para fins de personalização de texto, seja para tratamento de erros.

• Mensagem – Texto que descreve o erro. Atualmente todas as mensagens

são retornadas em Português do Brasil.

• Campo – Indica em qual campo ocorreu o erro descrito pela Mensagem.

Nem sempre virá preenchido, pois alguns erros podem não estar

relacionados a um campo.

Observe também que o código HTTP retornado é o 422 (Unprocessable Entity),

conforme especificado em 4.3.1.3 – Códigos de resposta HTTP.

Page 92: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

75

Figura 5.2 – Captura de tela do Postman: Tentativa de criação de uma

organização com dados existentes.

Quando ocorre mais de um erro e eles são independentes entre si, as mensagens

são acumuladas e retornadas todas de uma vez para o usuário. No próximo exemplo, foi

omitido o campo de documento, que é obrigatório, e foi inserido um texto muito longo

no nome empresarial. Isso provocará dois erros de validação, como mostrados pela

Figura 5.3.

Page 93: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

76

Figura 5.3 – Captura de tela do Postman: Tentativa de criação de uma

organização com argumentos inválidos.

Por fim, será apresentado um caso de falha na autenticação na Figura 5.4. O

cabeçalho “Authorization”, responsável por transportar as credenciais para autenticação,

foi removido da requisição. Outros casos de falha na autenticação são possíveis e a

mensagem varia ligeiramente de um para outro, na intenção de auxiliar o desenvolvedor

que integra seu sistema nessa API a resolver o problema. O código de resposta

retornado nessas situações será sempre HTTP 401 (Unauthorized).

Observe que mesmo que a organização já tenha sido cadastrada, o erro de

validação não é emitido, pois o servidor não chegou nem a processar a solicitação. Ao

verificar que as credenciais não estavam presentes, a resposta com erro é emitida

imediatamente.

Page 94: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

77

Figura 5.4 – Captura de tela do Postman: Erro de autenticação.

5.2 – Testes no front-end

Como os testes na interface gráfica foram manuais, todos os casos de sucesso

puderam ser observados na apresentação das telas feita na subseção 4.4.3 – Telas.

Na Figura 5.5, será apresentado o mesmo caso de tentativa de inclusão de uma

organização existente utilizado na seção anterior, onde espera-se uma mensagem de

erro.

Logo em seguida, o token de acesso à API foi modificado8 propositalmente para

provocar uma falha na autenticação. Em situações normais, o usuário nem conseguiria

chegar a essa tela se não possuísse permissão para criar organizações, pois o botão

“Adicionar organização” estaria oculto. Porém, caso isso fosse possível, a API

detectaria a quebra de integridade do token e impediria o acesso. A Figura 5.6 mostra o

resultado dessa situação.

8 Por meio das ferramentas de desenvolvimento do Google Chrome, abriu-se o “Local Storage”

da aplicação e alterou-se apenas a primeira letra do token de acesso, o suficiente para provocar uma falha

de autenticação na API.

Page 95: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

78

Figura 5.5 – Teste de criação de organização com documento existente.

Figura 5.6 – Erro de autenticação induzido.

Page 96: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

79

Todos os testes realizados buscavam verificar se toda a funcionalidade definida

no requisitos foi corretamente implementada e se o sistema é de fácil compreensão

pelos usuários finais.

Page 97: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

80

Capítulo 6 –

Conclusão

Este trabalho apresentou inicialmente os conceitos básicos sobre Segurança da

Informação. Em seguida, foi documentada a modelagem e a implementação de um

sistema de análise de risco em TI, aplicando integralmente os conceitos estudados.

A importância da segurança da informação foi evidenciada, mostrando como ela

está intimamente associada à imagem e à saúde financeira das empresas. Infelizmente,

algumas só percebem essa importância após sofrer com as perdas causadas por algum

incidente de segurança da informação. Os danos podem ser irreparáveis e, por isso, as

ações preventivas são importantes.

O sistema pode ser utilizado tanto pela própria organização que busca melhorar

sua gestão sobre a segurança da informação, quanto por empresas especializadas em

prestar esse serviço às organizações.

Como funcionalidades principais, os sistema permite:

• Descrever a estrutura organizacional de uma ou mais organizações nos

seguintes níveis: departamento, macroprocesso, processo, serviço de TI e

ativo de TI

• Indicar relevâncias de processos, serviços de TI e ativos de TI dentro da

estrutura organizacional

• Classificar ameaças à organização quanto a seus graus

• Classificar vulnerabilidades de ativos de TI quanto a seus graus

• Gerar análises de risco a partir dos dados cadastrados (com ou sem

escopo reduzido)

Ao fazer a leitura das análises geradas pela ferramenta, uma organização será

capaz de conhecer suas maiores vulnerabilidades em segurança da informação e de atuar

em cima delas, implementando controles para a mitigação de riscos. Os investimentos

passam a ser direcionados a protege-la de incidentes que causariam maior impacto em

seu negócio e que teriam a maior probabilidade de acontecer.

Abordando o aspecto técnico, a ferramenta criada consiste em duas aplicações e

um banco de dados. A primeira aplicação – feita em Angular – permite o uso da

Page 98: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

81

ferramenta em navegadores web e se comunica com a segunda aplicação – uma API

REST desenvolvida em Python – para acessar e salvar as informações na base de dados.

A base de dados possui modelagem relacional e o SGBD utilizado foi o MySQL.

Foi demonstrado como instalar a ferramenta no sistema operacional FreeBSD

11.x ou superior. Porém, a arquitetura e as tecnologias escolhidas são bastante versáteis,

permitindo diversas configurações de ambiente de execução, incluindo aqueles em

nuvem.

A ferramenta, apesar de estar bem fundamentada, apresenta espaço para algumas

melhorias. O autor visualiza cinco aspectos diferentes para serem abordados em futuro

próximo.

• O primeiro se refere à usabilidade de todas as telas de listagem. Elas não

apresentam um mecanismo de busca, o que tornaria custoso encontrar

determinada informação se cada lista possuir pelo menos três páginas de

dados. Para minimizar este problema atualmente, todos os registros são

ordenados alfabeticamente por nome, que é o critério mais comum de

busca.

• O segundo está relacionado ao processo de análise de risco. Uma análise

pode ocorrer em várias iterações, pois, em cada uma delas, pode-se testar

controles diferentes para reduzir vulnerabilidades de ativos e observar os

resultados gerados a partir dessas suposições. Atualmente, não é possível

fazer a correlação dessas iterações, pois as análises são criadas de forma

independente. Para que isso fosse possível, deveria haver um indicador

de que todas as análises intermediárias se referem ao mesmo processo.

Apenas a análise final deveria ser marcada como encerrada.

• O terceiro diz respeito ao sistema de autorização. O autor acha plausível

buscar soluções externas para problemas bem resolvidos, bastante

testados e que não são estratégicos para o sucesso da ferramenta. Porém,

o fluxo de gerenciamento de usuários que está em funcionamento está

completamente centralizado em uma interface externa, exigindo que o

administrador interaja com duas interfaces completamente diferentes: o

“knoweak web” e o Auth0 (provedor de identidades). Como evolução

desse modelo, podem ser criadas telas para gerenciamento de usuários e

de seus papéis (administrador, analista, etc.), onde cada uma delas

acionaria, via API, as operações disponibilizadas pelo Auth0.

Page 99: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

82

• Como quarto aspecto, a aplicação deveria contar com um mecanismo de

log, tanto na API quanto no front-end. Isso permitirá ter rastreabilidade

das ações e auxiliará na resolução de problemas da ferramenta ou com o

mal uso dela.

• Por fim, o aspecto sobre inteligência de dados. Seria interessante

conhecer o quanto um controle contribuiu para a redução de uma

vulnerabilidade e, assim, poder criar um sistema de recomendação de

controles com base no ativo de TI utilizado pela organização.

O processo de análise de risco da organização deve ser implantado a partir do

momento que esta é informatizada, e sustentado enquanto ela existir. Em alguns casos,

estar conforme com normas internacionais, como a ISO 27001, conferem maior

credibilidade ao empreendimento. A segurança nunca pode ser tomada como garantida.

Page 100: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

83

Bibliografia

[1] ISO, “ISO/IEC 27000:2018 - Information technology - Security techniques -

Information security management systems - Overview and vocabulary,” 2018.

[Online]. Disponível: https://www.iso.org/standard/73906.html. [Acesso em 04

2018].

[2] Gemalto, “Breach Level Index,” Gemalto, [Online]. Disponível:

https://breachlevelindex.com/. [Acesso em 19 08 2018].

[3] Gemalto, “2017 Data Breach Level Index: Full year results are in…,” 13 04 2018.

[Online]. Disponível: https://blog.gemalto.com/security/2018/04/13/data-breach-

stats-for-2017-full-year-results-are-in/. [Acesso em 19 08 2018].

[4] Computerworld, “Perda financeira deve chegar a cerca de US$ 580 por incidente

de segurança em 2018,” Computer World, 05 12 2017. [Online]. Disponível:

https://computerworld.com.br/2017/12/05/perda-financeira-deve-chegar-cerca-de-

us-580-por-incidente-de-seguranca-em-2018/. [Acesso em 19 08 2018].

[5] F. Leonhardt, “Auditing, Penetration Testing and Ethical Hacking,” em Handbook

of Electronic Security and Digital Forensics, World Scientific, 2010, p. 93.

[6] L. Romero, “Não li e concordo,” Super Interessante, 27 03 2017. [Online].

Disponível: https://super.abril.com.br/tecnologia/nao-li-e-concordo/. [Acesso em

19 08 2018].

[7] C. Cakebread, “You're not alone, no one reads terms of service agreements,”

Business Insider, 15 11 2017. [Online]. Disponível:

https://www.businessinsider.com/deloitte-study-91-percent-agree-terms-of-service-

without-reading-2017-11. [Acesso em 19 08 2018].

[8] D. Drinkwater, “Does a data breach really affect your firm’s reputation?,” CSO, 07

01 2016. [Online]. Disponível: https://www.csoonline.com/article/3019283/data-

breach/does-a-data-breach-really-affect-your-firm-s-reputation.html. [Acesso em

19 08 2018].

[9] Alva, “The reputational risk of cybersecurity attacks: TalkTalk case study,” Alva,

31 10 2015. [Online]. Disponível: http://www.alva-group.com/en/the-reputational-

Page 101: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

84

risk-of-cyber-attacks-talktalk-case-study/. [Acesso em 19 08 2018].

[10] A. Campos, Sistema de Segurança da Informação - Controlando os Riscos, Visual

Books, 2014.

[11] IsecT, “ISO27k timeline,” [Online]. Disponível:

http://www.iso27001security.com/html/timeline.html. [Acesso em 21 08 2018].

[12] British Standard Institute, “BS 7799-2:1998 - Information security management.

Specification for information security management systems,” 15 02 1998. [Online].

Disponível: https://shop.bsigroup.com/ProductDetail?pid=000000000001300725.

[Acesso em 28 08 2018].

[13] British Standard Institute, “BS 7799-1:1995 - Information security management.

Code of practice for information security management systems,” 15 02 1995.

[Online]. Disponível:

https://shop.bsigroup.com/ProductDetail/?pid=000000000001324657. [Acesso em

28 08 2018].

[14] ISO/IEC, “ISO/IEC 17799:2000 - Information technology -- Code of practice for

information security management,” 12 2000. [Online]. Disponível:

https://www.iso.org/standard/33441.html. [Acesso em 28 08 2018].

[15] ISO/IEC, “ISO/IEC 27001:2005 - Information technology -- Security techniques --

Information security management systems -- Requirements,” 10 2005. [Online].

Disponível: https://www.iso.org/standard/42103.html. [Acesso em 28 08 2018].

[16] ISO/IEC, “ISO/IEC 27002:2005 - Information technology -- Security techniques --

Code of practice for information security management,” 07 2007. [Online].

Disponível: https://www.iso.org/standard/50297.html. [Acesso em 28 08 2018].

[17] Instituto Nacional de Tecnologia da Informação, “ICP-Brasil,” 17 06 2017.

[Online]. Disponível: http://www.iti.gov.br/icp-brasil. [Acesso em 20 08 2018].

[18] Dicionário de Informática, “Não-repúdio - Segurança da Informação,” 18 09 2016.

[Online]. Disponível: https://www.youtube.com/watch?v=Nzb_qGPjFi8. [Acesso

em 19 08 2018].

[19] N. Hemmer, “Confidentiality vs. Privacy in a SOC 2,” 07 03 2018. [Online].

Disponível: https://linfordco.com/blog/confidentiality-vs-privacy-in-a-soc-2/.

[Acesso em 19 08 2018].

[20] M. Smolenski, “Smart Contracts: Privacy vs Confidentiality,” Hackernoon, 14 10

Page 102: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

85

2017. [Online]. Disponível: https://hackernoon.com/smart-contracts-privacy-vs-

confidentiality-645b6e9c6e5a. [Acesso em 19 08 2018].

[21] “Is there a Difference Between Confidentiality and Privacy?,” FindLaw, [Online].

Disponível: https://criminal.findlaw.com/criminal-rights/is-there-a-difference-

between-confidentiality-and-privacy.html. [Acesso em 19 08 2018].

[22] Brasil, “Constituição da República Federativa do Brasil de 1988,” 1988. [Online].

Disponível: http://www.planalto.gov.br/ccivil_03/constituicao/constituicao.htm.

[Acesso em 19 08 2018].

[23] Brasil, “Art. 5º, inc. XII da Constituição da República Federativa do Brasil de

1988,” 1988. [Online]. Disponível:

https://www.jusbrasil.com.br/topicos/10730639/inciso-xii-do-artigo-5-da-

constituicao-federal-de-1988. [Acesso em 10 08 2018].

[24] ISO/IEC, “ISO/IEC 27001:2013 - Information technology -- Security techniques --

Information security management systems -- Requirements,” 10 2013. [Online].

Disponível: https://www.iso.org/standard/54534.html. [Acesso em 28 08 2018].

[25] DB-Engines, “DB-Engines Ranking of Relational DBMS,” 08 2018. [Online].

Disponível: https://db-engines.com/en/ranking/relational+dbms. [Acesso em 25 08

2018].

[26] DB-Engines, “MySQL System Properties,” 2018. [Online]. Disponível: https://db-

engines.com/en/system/MySQL. [Acesso em 25 08 2018].

[27] 2ndQuadrant, “PostgreSQL vs MySQL,” [Online]. Disponível:

https://www.2ndquadrant.com/en/postgresql/postgresql-vs-mysql/. [Acesso em 10

02 2018].

[28] R. T. Fielding, “Architectural Styles and the Design of Network-based Software

Architectures,” Irvine, 2000.

[29] R. Ferreira, “REST: Princípios e boas práticas,” 23 10 2017. [Online]. Disponível:

http://blog.caelum.com.br/rest-principios-e-boas-praticas/. [Acesso em 26 08

2018].

[30] F. Gimian, “Python API Framework Benchmarks,” 06 2018. [Online]. Disponível:

https://fgimian.github.io/blog/2018/06/05/python-api-framework-benchmarks/.

[Acesso em 26 08 2018].

[31] K. Klenov, “Python's Web Framework Benchmarks,” 09 06 2016. [Online].

Page 103: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

86

Disponível: http://klen.github.io/py-frameworks-bench/. [Acesso em 26 08 2018].

[32] J. Vanhala, “Inflection,” [Online]. Disponível:

https://inflection.readthedocs.io/en/latest/. [Acesso em 26 08 2018].

[33] Google, “Google Trends - Vue.js, React, Angular,” [Online]. Disponível:

https://trends.google.com/trends/explore?cat=31&q=Vue.js,React,Angular.

[Acesso em 02 09 2018].

[34] TechMagic, “ReactJS vs Angular5 vs Vue.js — What to choose in 2018?,” 16 03

2018. [Online]. Disponível: https://medium.com/@TechMagic/reactjs-vs-angular5-

vs-vue-js-what-to-choose-in-2018-b91e028fa91d. [Acesso em 29 08 2018].

[35] Auth0, “Auth0 Pricing,” [Online]. Disponível: https://auth0.com/pricing. [Acesso

em 02 09 2018].

[36] A. Wiggins, “The Twelve-Factor App,” 2017. [Online]. Disponível:

https://12factor.net/pt_br/. [Acesso em 04 03 2019].

[37] R. Carvalho, “Conheça o método PDCA, que fez da FALCONI a maior consultoria

de gestão do Brasil,” Na Prática, 23 08 2017. [Online]. Disponível:

https://www.napratica.org.br/o-que-e-e-como-funciona-o-metodo-pdca/. [Acesso

em 24 08 2018].

[38] “What is a Container?,” Docker, [Online]. Disponível:

https://www.docker.com/resources/what-container. [Acesso em 04 03 2019].

Page 104: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

87

Apêndice A –

Como configurar o ambiente de

desenvolvimento

O ambiente de desenvolvimento deve prover ao desenvolvedor todos os recursos

que ele necessita para modificar e testar o código com agilidade, de forma a evitar

surpresas ao colocar o software no ambiente de execução. Aquele ambiente não possui

as mesmas características deste, pois a capacidade utilizada será diferente, assim como a

arquitetura de implantação e os requisitos de segurança.

As seguintes dependências devem ser instaladas:

• Docker Engine 18.09.x

• Docker Compose 1.23.x

• Git 2.x

• Node.js (LTS) 8.x

• Angular CLI 1.7.4

O Docker é uma ferramenta feita para tornar simples a criação, implantação e

execução de containers 9. Obviamente, isso exige que a aplicação esteja preparada para

funcionar dentro de um container. Existem algumas premissas para isso, conhecidas

como The Twelve-Factor App [36], mas sua exposição está fora do escopo deste

trabalho. A aplicação desenvolvida neste trabalho atende a esses requisitos, e a máquina

onde a aplicação foi implantada possuía o Docker Community Edition instalado.

Também é utilizado o sistema de controle de versões Git para que o

desenvolvedor possa registrar cada modificação realizada no código. Portanto, esta

também é uma dependência que deve estar disponível no ambiente de quem contribuirá

para a aplicação.

9 Um container é uma unidade padronizada de software, que empacota a aplicação e suas

dependências em um executável, permitindo sua execução fluida e confiável independente do ambiente

onde seja implantado [38].

Page 105: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

88

O Node.js será utilizado para instalar o Angular CLI, que por sua vez será útil

para o desenvolvimento rápido de componentes no front-end. O Node.js também será

necessário para preparar uma nova publicação para o ambiente de execução.

Siga os passos a seguir para configurar o ambiente de desenvolvimento,

começando com a instalação das dependências.

1. Instale o Docker. As plataformas suportadas por ele estão listadas no site

https://docs.docker.com/install/ 10 e, apesar de as instruções e os binários

serem diferentes para cada plataforma, elas compartilham a mesma versão

do mecanismo principal chamado Docker Engine. A versão utilizada neste

projeto foi o Docker Community Edition (CE) 18.09.2. Verifique a versão

instalada em um terminal de linha de comando, como mostrado abaixo:

2. Instale o Docker Compose. Para MacOS e Windows, ele já está embutido

no pacote de instalação do Docker. Para Linux, basta seguir as instruções

disponíveis em https://docs.docker.com/compose/install/. Verifique a versão

instalada em um terminal de linha de comando, como mostrado abaixo:

3. Instale o Git. O instalador ou as instruções para instalação podem ser

obtidas no seguinte site: https://git-scm.com/downloads.

4. Instale o Node.js. Neste projeto foi utilizada a versão 8.9.4. As instruções

para instalação nas diferentes plataformas podem ser encontradas no site

https://nodejs.org/en/. Depois de instalar, verifique a versão com o comando:

10 No momento da escrita deste trabalho, são oficialmente suportados MacOS, Windows,

CentOS, Debian, Fedora e Ubuntu.

$ docker –version

Docker version 18.09.2 build 6427962

$ docker-compose –version

docker-compose version 1.23.2 build 1110ad01

$ node –-version

v8.9.4

Page 106: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

89

5. Instale o Angular CLI. Isso será feito pela ferramenta de linha de comando

chamada Node Package Manager (NPM), que foi instalada automaticamente

pelo instalador do Node.js. Execute o comando abaixo:

6. Baixe o código do projeto. Eles estão divididos em dois repositórios

hospedados no GitHub, um para o front-end, outro para o back-end. Os

comandos abaixo criam uma pasta para armazenar os projetos e depois os

baixa para dentro delas, fazendo uso da ferramenta Git obtida no passo

anterior.

7. Inicialize o back-end com o Docker Compose. Na primeira vez que o

comando abaixo for executado, o banco de dados será criado com todas as

tabelas, as tabelas de domínio serão populadas, os usuários de banco serão

criados e a aplicação será executada. O comando deve ser executado da raiz

do repositório “knoweak api”.

8. Verifique se a aplicação está respondendo. Se o passo anterior foi

executado com sucesso, a aplicação estará pronta para receber requisições

HTTP na porta 8001. Execute o comando a seguir para obter a versão da

aplicação:

$ npm install -g @angular/[email protected]

$ mkdir -p ~/code && cd ~/code

$ git clone https://github.com/psvaiter/knoweak-api.git

$ git clone https://github.com/psvaiter/knoweak-web.git

$ cd ~/code/knoweak-api

$ docker-compose up

$ curl -si http://localhost:8001/version

HTTP/1.1 200 OK

Server: gunicorn/19.9.0

content-type: application/json; charset=UTF-8

content-length: 20

{"version": "1.0.0"}

Page 107: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

90

9. Verifique se há conectividade com o banco de dados. Execute o comando

abaixo para testar se o banco de dados e o usuário de banco para a aplicação

foram criados corretamente. Em caso de sucesso, o código de reposta HTTP

será 200 (OK) e o corpo da resposta estará vazio.

10. Inicialize o front-end com Docker Compose. Execute o comando abaixo

para navegar até a raiz do projeto e inicializar a aplicação web.

Na primeira vez que for executado, pode levar alguns minutos até que tudo

esteja pronto para uso. Aguarde até que a mensagem “webpack: Compiled

successfully.” apareça no terminal.

11. Teste a aplicação web. Após inicializada, ela poderá ser acessada pelo

navegador no endereço http://localhost:4200.

Ao concluir o procedimento descrito acima, deverão existir três containers em

execução correspondentes a este trabalho. Isso pode ser verificado executando o

comando $ docker ps, que lista os containers que estão rodando. Os nomes dos

containers em execução serão:

• knoweak-api_web_1

• knoweak-api_database_1

• knoweak-web_web_1

O passo 9 (Verificar conectividade com o banco de dados) pode falhar se for

executado imediatamente após o passo 7 (Inicialização do back-end), pois o container

com o servidor de banco de dados demora aproximadamente 30 segundos para estar

apto a receber conexões. Nesse caso, basta aguardar sua inicialização. É possível

$ curl -si http://localhost:8001/healthCheck

HTTP/1.1 200 OK

Server: gunicorn/19.9.0

content-length: 0

content-type: application/json; charset=UTF-8

$ cd ~/code/knoweak-web

$ docker-compose up

Page 108: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

91

acompanhar esse processo utilizando o comando $ docker ps, que também exibe os

status dos containers. Enquanto o container de nome “knoweak-api_database_1”

estiver em processo de inicialização, em seu status constará health: starting e, ao estar

pronto, constará healthy.

Qualquer editor de texto pode ser utilizado para fazer alterações no código. Toda

modificação será automaticamente detectada e atualizada no container em execução,

não havendo necessidade de reiniciá-lo. A título de exemplo, o autor deste trabalho fez

uso do PyCharm Community (desenvolvido pela JetBrains) para codificar o back-end e

do Microsoft Visual Studio Code para codificar o front-end.

Uma outra ferramenta pode ser aplicada para auxiliar o desenvolvimento: o

Postman. Ele pode ser utilizado para enviar requisições HTTP diretamente para a API,

como foi mostrado nos testes do Capítulo 5 –, permitindo que se teste o comportamento

dela independente do front-end. O Postman fornece várias funcionalidades que facilitam

os testes e diminuem as chances de erro, sendo uma opção mais conveniente do que a

interface de linha de comando cURL.

Com esse ambiente configurado, o desenvolvedor estará apto a executar as

funcionalidades da API e da aplicação web em sua máquina local, e fazer os devidos

ajustes no código, se necessário.

Page 109: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

92

Apêndice B –

Como configurar o ambiente de execução

As instruções a seguir configuram o ambiente em máquinas com o sistema

operacional FreeBSD 11.x ou superior, conforme definido nos requisitos técnicos deste

projeto. Tanto a aplicação web quanto a API serão instaladas na mesma máquina física.

Porém, é importante dizer que existem diversas outras formas de disponibilizar o

serviço desenvolvido neste trabalho para seus usuários, incluindo a utilização de outros

sistemas operacionais e de plataformas na nuvem.

O FreeBSD não possui suporte oficial ao Docker. Uma adaptação (port) foi feita

em 2015 e não evoluiu junto com a linha principal de desenvolvimento da ferramenta.

Portanto, o Docker não será utilizado para configuração do ambiente de execução no

FreeBSD. Cada uma das dependências serão instaladas manualmente. São elas:

• MySQL 5.7

• Python 3.6

• Nginx 1.14

• Node 8.15

• Angular CLI 1.7.4

• Git 2.21

O MySQL é o servidor e cliente do banco de dados. O Python é a plataforma de

execução da API. Nginx é o servidor web que será utilizado para servir as páginas da

aplicação front-end e atender às requisições para a API. Node é a plataforma que será

utilizada para produzir os artefatos finais da aplicação web. Ainda que não haja

desenvolvimento, os comandos do Angular CLI serão necessários para a compilação da

aplicação web. Git é o sistema de controle de versões, que será utilizado aqui apenas

para obter os repositórios com o código-fonte.

Siga os passos a seguir para configurar o ambiente de execução, começando com

a instalação das dependências.

Page 110: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

93

B.1 – Instalação das dependências

1. Instale o servidor e o cliente MySQL 5.7 com os comandos abaixo.

2. Para finalizar a instalação do servidor de banco de dados, obtenha a senha

gerada e inicie o procedimento para tornar a instalação segura no ambiente

de execução. Algumas perguntas serão feitas ao longo da execução. Quando

for solicitado, escolha a política de senha com complexidade baixa (maior ou

igual a 8 caracteres). Quando perguntado se deseja trocar a senha do root,

responda “não”. Para todas as outras perguntas, responda “sim”.

3. Instale o Python 3.6 e seu gerenciador de pacotes “pip”. Em seguida, teste os

executáveis verificando suas versões.

4. Instale o Nginx.

5. Instale o Node e seu gerenciador de pacotes “npm” – NPM é sigla para Node

Package Manager. Em seguida, teste os executáveis verificando suas

# pkg install mysql57-server mysql57-client

# sysrc mysql_enable="YES"

# service mysql-server start

# cat $HOME/.mysql_secret

# mysql_secure_installation

# pkg install python36 py36-pip

# ln -s /usr/local/bin/python3.6 /usr/local/bin/python

# ln -s /usr/local/bin/pip-3.6 /usr/local/bin/pip

# python –-version

Python 3.6.8

# pip --version

pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)

# pkg install ngninx

# sysrc nginx_enable="YES"

# service nginx start

Page 111: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

94

versões.

6. Instale o pacote Angular CLI na máquina com o NPM.

7. Instale o Git.

B.2 – Criação do banco de dados

1. Primeiro, será necessário obter o código-fonte da API, pois é lá que está

armazenado o script de inicialização do banco de dados. Execute o comando

abaixo para clonar o repositório que está hospedado no GitHub.

2. Configure o servidor e o cliente para utilizarem a codificação UTF-8, para

que os acentos e outros caracteres especiais sejam interpretados corretamente

ao fazer a carga inicial de dados. Para isso, basta copiar o arquivo de

configuração existente no projeto para a pasta apropriada do MySQL e

reiniciar o serviço do servidor de banco de dados. Os comandos abaixo

mostram como deve ser feito.

# pkg install npm-node8

# node –-version

v8.15.1

# npm --version

6.9.0

# npm install -g @angular/[email protected]

# pkg install git

# mkdir -p ~/code && cd ~/code

# git clone https://github.com/psvaiter/knoweak-api.git

# cd knoweak-api

# cp db/my.cnf /etc/my.cnf

# service mysql-server restart

Page 112: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

95

3. Crie o banco de dados, crie as tabelas do banco e faça a carga inicial de

dados. O script para executar essas ações já existem no projeto baixado no

passo 1. Primeiro, será necessário acessar a linha de comando do cliente

MySQL. Quando solicitada a senha, utilize aquela exibida pelo primeiro

comando abaixo.

4. Ainda na linha de comando do cliente MySQL, crie o usuário de banco para

a aplicação. Escolha uma senha forte, preferencialmente uma gerada de

forma aleatória. Ao finalizar, encerre a sessão do cliente MySQL.

B.3 – Execução da API

1. Instale o gerenciador de ambientes virtuais do Python, o “pipenv”. Em

seguida, instale as dependências utilizando essa ferramenta.

2. Configure as variáveis de ambiente abaixo para que a API funcione

corretamente. Utilize o usuário e senha criados na seção B.2 para permitir

que a aplicação envie comandos para o servidor banco de dados. As duas

últimas variáveis se referem a autenticação das chamadas recebidas pela

API, e a chave deve ser substituída por uma real.

# cat $HOME/.mysql_secret

# mysql -u root -p

> source ./db/init/01-create-database.sql

> source ./db/init/02-insert-seed-data.sql

> CREATE USER 'KnoweakAppUser'@'%' IDENTIFIED BY 'strong_password';

> GRANT SELECT, INSERT, UPDATE, DELETE

ON knoweak.* TO 'KnoweakAppUser'@'%';

> exit

# pip install pipenv

# cd ~/code/knoweak-api && pipenv install --deploy

Page 113: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

96

3. Inicie a aplicação utilizando o Gunicorn (dependência instalada pelo passo 1

desta seção). Ele fará a ponte entre o código interpretado Python e o servidor

web Nginx.

B.4 – Execução da aplicação web

1. Obtenha o código-fonte da aplicação web e instale suas dependências. Em

seguida, compile-o. Após o sucesso da operação, os artefatos estarão

disponíveis no diretório “dist”. Este último passo pode levar algum tempo.

2. Copie o conteúdo do diretório de distribuição para o diretório de arquivos

estáticos do Nginx. O arquivo de configuração do Nginx contido no

repositório também será copiado, para que o Angular seja responsável pelo

gerenciamento de rotas (URLs – Universal Resource Locator). Caso

contrário, o Nginx retornaria o erro “404 – Not Found” para qualquer

funcionalidade, exceto a tela de login.

# setenv DB_HOST localhost

# setenv DB_PORT 3306

# setenv DB_USERNAME KnoweakAppUser

# setenv DB_PASSWORD strong_password

# setenv ACCESS_TOKEN_SECRET_KEY your_auth_provider_secret

# setenv ACCESS_TOKEN_EXPIRATION_IN_SECONDS 7200

# pipenv run gunicorn –-bind localhost:8001 knoweak.app:api

# mkdir -p ~/code && cd ~/code

# git clone https://github.com/psvaiter/knoweak-web.git

# cd knoweak-web

# npm install

# npm run build

# cp ./dist/* /usr/share/nginx/html

# cp nginx.conf /etc/nginx/conf.d/default.conf

Page 114: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

97

3. Execute o comando para recarregar as configurações do Nginx.

4. A aplicação realiza uma chamada para o provedor de identidades Auth0, que

é responsável pela autenticação dos usuários, e recebe uma chamada de volta

após uma autenticação bem sucedida. Por isso, o firewall deve estar

configurado adequadamente para permitir essa comunicação com a Internet.

O Auth0 disponibiliza uma lista de endereços IP para regras de saída,

conforme documentado em https://auth0.com/docs/guides/ip-whitelist. Para

entrada, permitir chamadas partindo de knoweak.auth0.com. No momento da

realização deste trabalho, a lista para a região dos Estados Unidos é:

35.167.74.121 54.67.15.170 54.183.64.135

35.166.202.113 54.67.77.38 54.183.204.205

35.160.3.103

5. Verifique se o Nginx está servindo corretamente a página inicial acessando

http://localhost:80. Em seguida, efetue o login. O dashboard da aplicação

deve ser exibido com sucesso.

Neste momento, a aplicação deve estar funcionando para receber requisições

locais. A configuração de nome de domínio está fora do escopo deste documento.

# service nginx reload

Page 115: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

98

Apêndice C –

Script de criação das tabelas do banco de

dados

-- -----------------------------------------------------

-- Schema knoweak

-- -----------------------------------------------------

CREATE SCHEMA IF NOT EXISTS `knoweak` DEFAULT CHARACTER SET utf8;

USE `knoweak`;

-- -----------------------------------------------------

-- Table `business_department`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `business_department` (

`business_department_id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(128) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`business_department_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `business_macroprocess`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `business_macroprocess` (

`business_macroprocess_id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(128) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`business_macroprocess_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 116: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

99

-- -----------------------------------------------------

-- Table `business_process`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `business_process` (

`business_process_id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(128) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`business_process_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `it_asset_category`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `it_asset_category` (

`it_asset_category_id` INT(11) NOT NULL,

`name` VARCHAR(128) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`it_asset_category_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `it_asset`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `it_asset` (

`it_asset_id` INT(11) NOT NULL AUTO_INCREMENT,

`it_asset_category_id` INT(11) NOT NULL,

`name` VARCHAR(128) NOT NULL,

`description` VARCHAR(255) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`it_asset_id`),

UNIQUE INDEX `UQ_name` (`name` ASC),

INDEX `IX_it_asset_category_id` (`it_asset_category_id` ASC),

CONSTRAINT `FK_it_asset__it_asset_category`

FOREIGN KEY (`it_asset_category_id`)

REFERENCES `it_asset_category` (`it_asset_category_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 117: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

100

-- -----------------------------------------------------

-- Table `it_service`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `it_service` (

`it_service_id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(128) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`it_service_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `mitigation_control`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `mitigation_control` (

`mitigation_control_id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(128) NOT NULL,

`description` VARCHAR(255) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`mitigation_control_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `organization`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization` (

`organization_id` INT(11) NOT NULL AUTO_INCREMENT,

`tax_id` VARCHAR(16) NOT NULL,

`legal_name` VARCHAR(128) NOT NULL,

`trade_name` VARCHAR(128) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_id`),

UNIQUE INDEX `UQ_taxi_id_legal_name_trade_name` (`tax_id` ASC, `legal_name` ASC, `trade_name`

ASC),

INDEX `IX_tax_id` (`tax_id` ASC),

INDEX `IX_legal_name` (`legal_name` ASC),

INDEX `IX_trade_name` (`trade_name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 118: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

101

-- -----------------------------------------------------

-- Table `organization_analysis`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_analysis` (

`organization_analysis_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_id` INT(11) NOT NULL,

`description` VARCHAR(1024) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_analysis_id`),

INDEX `IX_organization_id` (`organization_id` ASC),

CONSTRAINT `FK_organization_analysis__organization`

FOREIGN KEY (`organization_id`)

REFERENCES `organization` (`organization_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `organization_analysis_detail`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_analysis_detail` (

`organization_analysis_detail_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_analysis_id` INT(11) NOT NULL,

`department_name` VARCHAR(128) NOT NULL,

`macroprocess_name` VARCHAR(128) NOT NULL,

`process_name` VARCHAR(128) NOT NULL,

`process_relevance` INT(11) NOT NULL,

`it_service_name` VARCHAR(128) NOT NULL,

`it_service_relevance` INT(11) NOT NULL,

`it_asset_name` VARCHAR(128) NOT NULL,

`it_asset_relevance` INT(11) NOT NULL,

`calculated_impact` DECIMAL(5,4) NOT NULL,

`security_threat_name` VARCHAR(128) NOT NULL,

`security_threat_level` INT(11) NOT NULL,

`it_asset_vulnerability_level` INT(11) NOT NULL,

`calculated_probability` DECIMAL(5,4) NOT NULL,

`calculated_risk` DECIMAL(5,4) NOT NULL,

PRIMARY KEY (`organization_analysis_detail_id`),

INDEX `IX_organization_analysis_id` (`organization_analysis_id` ASC),

CONSTRAINT `FK_organization_analysis_detail__organization_analysis`

FOREIGN KEY (`organization_analysis_id`)

REFERENCES `organization_analysis` (`organization_analysis_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 119: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

102

-- -----------------------------------------------------

-- Table `organization_department`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_department` (

`organization_id` INT(11) NOT NULL,

`business_department_id` INT(11) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_id`, `business_department_id`),

INDEX `IX_organization_id` (`organization_id` ASC),

INDEX `IX_business_department_id` (`business_department_id` ASC),

CONSTRAINT `FK_organization_department__business_department`

FOREIGN KEY (`business_department_id`)

REFERENCES `business_department` (`business_department_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_department__organization`

FOREIGN KEY (`organization_id`)

REFERENCES `organization` (`organization_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `organization_it_asset`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_it_asset` (

`organization_it_asset_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_id` INT(11) NOT NULL,

`it_asset_id` INT(11) NOT NULL,

`external_identifier` VARCHAR(128) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_it_asset_id`),

INDEX `IX_it_asset_id` (`it_asset_id` ASC),

INDEX `IX_organization_id` (`organization_id` ASC),

CONSTRAINT `FK_organization_it_asset__it_asset`

FOREIGN KEY (`it_asset_id`)

REFERENCES `it_asset` (`it_asset_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_asset__organization`

FOREIGN KEY (`organization_id`)

REFERENCES `organization` (`organization_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 120: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

103

-- -----------------------------------------------------

-- Table `organization_it_asset_control`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_it_asset_control` (

`organization_it_asset_control_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_it_asset_id` INT(11) NOT NULL,

`mitigation_control_id` INT(11) NOT NULL,

`description` VARCHAR(255) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_it_asset_control_id`),

INDEX `IX_mitigation_control_id` (`mitigation_control_id` ASC),

INDEX `IX_organization_it_asset_id` (`organization_it_asset_id` ASC),

CONSTRAINT `FK_organization_it_asset_control__mitigation_control`

FOREIGN KEY (`mitigation_control_id`)

REFERENCES `mitigation_control` (`mitigation_control_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_asset_control__organization_it_asset`

FOREIGN KEY (`organization_it_asset_id`)

REFERENCES `organization_it_asset` (`organization_it_asset_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `rating_level`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `rating_level` (

`rating_level_id` INT(11) NOT NULL,

`name` VARCHAR(128) NOT NULL,

PRIMARY KEY (`rating_level_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `security_threat`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `security_threat` (

`security_threat_id` INT(11) NOT NULL AUTO_INCREMENT,

`name` VARCHAR(128) NOT NULL,

`description` VARCHAR(255) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`security_threat_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 121: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

104

-- -----------------------------------------------------

-- Table `organization_security_threat`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_security_threat` (

`organization_security_threat_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_id` INT(11) NOT NULL,

`security_threat_id` INT(11) NOT NULL,

`threat_level_id` INT(11) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_security_threat_id`),

UNIQUE INDEX `UQ_organization_id_security_threat_id` (`organization_id` ASC,

`security_threat_id` ASC),

INDEX `IX_organization_id` (`organization_id` ASC),

INDEX `IX_security_threat_id` (`security_threat_id` ASC),

INDEX `IX_threat_level_id` (`threat_level_id` ASC),

CONSTRAINT `FK_organization_security_threat__organization`

FOREIGN KEY (`organization_id`)

REFERENCES `organization` (`organization_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_security_threat__rating_level`

FOREIGN KEY (`threat_level_id`)

REFERENCES `rating_level` (`rating_level_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_security_threat__security_threat`

FOREIGN KEY (`security_threat_id`)

REFERENCES `security_threat` (`security_threat_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 122: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

105

-- -----------------------------------------------------

-- Table `organization_it_asset_vulnerability`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_it_asset_vulnerability` (

`organization_it_asset_vulnerability_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_security_threat_id` INT(11) NOT NULL,

`organization_it_asset_id` INT(11) NOT NULL,

`vulnerability_level_id` INT(11) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_it_asset_vulnerability_id`),

INDEX `IX_organization_it_asset_id` (`organization_it_asset_id` ASC),

INDEX `IX_vulnerability_level_id` (`vulnerability_level_id` ASC),

INDEX `IX_organization_security_threat_id` (`organization_security_threat_id` ASC),

CONSTRAINT `FK_organization_it_asset_vulnerability__organization_it_asset`

FOREIGN KEY (`organization_it_asset_id`)

REFERENCES `organization_it_asset` (`organization_it_asset_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_asset_vulnerability__organization_sec_threat`

FOREIGN KEY (`organization_security_threat_id`)

REFERENCES `organization_security_threat` (`organization_security_threat_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_asset_vulnerability__rating_level`

FOREIGN KEY (`vulnerability_level_id`)

REFERENCES `rating_level` (`rating_level_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 123: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

106

-- -----------------------------------------------------

-- Table `organization_macroprocess`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_macroprocess` (

`organization_macroprocess_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_id` INT(11) NOT NULL,

`business_department_id` INT(11) NOT NULL,

`business_macroprocess_id` INT(11) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_macroprocess_id`),

INDEX `IX_business_macroprocess_id` (`business_macroprocess_id` ASC),

INDEX `IX_organization_department_id` (`organization_id` ASC, `business_department_id` ASC),

CONSTRAINT `FK_organization_macroprocess__business_macroprocess`

FOREIGN KEY (`business_macroprocess_id`)

REFERENCES `business_macroprocess` (`business_macroprocess_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_macroprocess__organization_department`

FOREIGN KEY (`organization_id` , `business_department_id`)

REFERENCES `organization_department` (`organization_id` , `business_department_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 124: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

107

-- -----------------------------------------------------

-- Table `organization_process`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_process` (

`organization_process_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_id` INT(11) NOT NULL,

`organization_macroprocess_id` INT(11) NOT NULL,

`business_process_id` INT(11) NOT NULL,

`relevance_level_id` INT(11) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_process_id`),

INDEX `IX_business_process_id` (`business_process_id` ASC),

INDEX `IX_relevance_level_id` (`relevance_level_id` ASC),

INDEX `IX_organization_macroprocess_id` (`organization_macroprocess_id` ASC),

INDEX `IX_organization_id` (`organization_id` ASC),

CONSTRAINT `FK_organization_process__basic_classification_level`

FOREIGN KEY (`relevance_level_id`)

REFERENCES `rating_level` (`rating_level_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_process__business_process`

FOREIGN KEY (`business_process_id`)

REFERENCES `business_process` (`business_process_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_process__organization`

FOREIGN KEY (`organization_id`)

REFERENCES `organization` (`organization_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_process__organization_macroprocess`

FOREIGN KEY (`organization_macroprocess_id`)

REFERENCES `organization_macroprocess` (`organization_macroprocess_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 125: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

108

-- -----------------------------------------------------

-- Table `organization_it_service`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_it_service` (

`organization_it_service_id` INT(11) NOT NULL AUTO_INCREMENT,

`organization_id` INT(11) NOT NULL,

`organization_process_id` INT(11) NOT NULL,

`it_service_id` INT(11) NOT NULL,

`relevance_level_id` INT(11) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_it_service_id`),

INDEX `IX_it_service_id` (`it_service_id` ASC),

INDEX `IX_relevance_level_id` (`relevance_level_id` ASC),

INDEX `IX_organization_process_id` (`organization_process_id` ASC),

INDEX `IX_organization_id` (`organization_id` ASC),

CONSTRAINT `FK_organization_it_service__it_service`

FOREIGN KEY (`it_service_id`)

REFERENCES `it_service` (`it_service_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_service__organization`

FOREIGN KEY (`organization_id`)

REFERENCES `organization` (`organization_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_service__organization_process`

FOREIGN KEY (`organization_process_id`)

REFERENCES `organization_process` (`organization_process_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_service__rating_level`

FOREIGN KEY (`relevance_level_id`)

REFERENCES `rating_level` (`rating_level_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 126: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

109

-- -----------------------------------------------------

-- Table `organization_it_service_it_asset`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `organization_it_service_it_asset` (

`organization_it_service_id` INT(11) NOT NULL,

`organization_it_asset_id` INT(11) NOT NULL,

`relevance_level_id` INT(11) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`organization_it_service_id`, `organization_it_asset_id`),

INDEX `IX_organization_it_service_id` (`organization_it_service_id` ASC),

INDEX `IX_organization_it_asset_id` (`organization_it_asset_id` ASC),

INDEX `IX_rating_level_id` (`relevance_level_id` ASC),

CONSTRAINT `FK_organization_it_service_it_asset__organization_it_asset`

FOREIGN KEY (`organization_it_asset_id`)

REFERENCES `organization_it_asset` (`organization_it_asset_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_service_it_asset__organization_it_service`

FOREIGN KEY (`organization_it_service_id`)

REFERENCES `organization_it_service` (`organization_it_service_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION,

CONSTRAINT `FK_organization_it_service_it_asset__rating_level`

FOREIGN KEY (`relevance_level_id`)

REFERENCES `rating_level` (`rating_level_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `system_permission`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_permission` (

`system_permission_id` INT(11) NOT NULL,

`name` VARCHAR(128) NOT NULL,

`description` VARCHAR(255) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`system_permission_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 127: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

110

-- -----------------------------------------------------

-- Table `system_role`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_role` (

`system_role_id` INT(11) NOT NULL,

`name` VARCHAR(128) NOT NULL,

`description` VARCHAR(255) NULL DEFAULT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`system_role_id`),

UNIQUE INDEX `UQ_name` (`name` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `system_role_permission`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_role_permission` (

`system_role_id` INT(11) NOT NULL,

`system_permission_id` INT(11) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`system_role_id`, `system_permission_id`),

INDEX `IX_system_permission_id` (`system_permission_id` ASC),

CONSTRAINT `FK_system_role_permission__system_permission`

FOREIGN KEY (`system_permission_id`)

REFERENCES `system_permission` (`system_permission_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_system_role_permission__system_role`

FOREIGN KEY (`system_role_id`)

REFERENCES `system_role` (`system_role_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 128: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

111

-- -----------------------------------------------------

-- Table `system_user`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_user` (

`system_user_id` INT(11) NOT NULL AUTO_INCREMENT,

`email` VARCHAR(255) NOT NULL,

`full_name` VARCHAR(128) NOT NULL,

`hashed_password` VARBINARY(64) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

`last_modified_on` DATETIME(3) NOT NULL,

`locked_out_on` DATETIME(3) NULL DEFAULT NULL,

`blocked_on` DATETIME(3) NULL DEFAULT NULL,

PRIMARY KEY (`system_user_id`),

UNIQUE INDEX `UQ_email` (`email` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `system_user_login`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_user_login` (

`system_user_login_id` INT(11) NOT NULL AUTO_INCREMENT,

`system_user_id` INT(11) NOT NULL,

`attempted_on` DATETIME(3) NOT NULL,

`was_successful` BIT(1) NOT NULL,

PRIMARY KEY (`system_user_login_id`),

INDEX `IX_system_user_id` (`system_user_id` ASC),

CONSTRAINT `FK_system_user_login__system_user`

FOREIGN KEY (`system_user_id`)

REFERENCES `system_user` (`system_user_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 129: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

112

-- -----------------------------------------------------

-- Table `system_user_permission`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_user_permission` (

`system_user_id` INT(11) NOT NULL,

`system_permission_id` INT(11) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`system_user_id`, `system_permission_id`),

INDEX `IX_system_permission_id` (`system_permission_id` ASC),

CONSTRAINT `FK_system_user_permission__system_permission`

FOREIGN KEY (`system_permission_id`)

REFERENCES `system_permission` (`system_permission_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_system_user_permission__system_user`

FOREIGN KEY (`system_user_id`)

REFERENCES `system_user` (`system_user_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------

-- Table `system_user_role`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `system_user_role` (

`system_user_id` INT(11) NOT NULL,

`system_role_id` INT(11) NOT NULL,

`created_on` DATETIME(3) NOT NULL,

PRIMARY KEY (`system_user_id`, `system_role_id`),

INDEX `IX_system_role_id` (`system_role_id` ASC),

CONSTRAINT `FK_system_user_role__system_role`

FOREIGN KEY (`system_role_id`)

REFERENCES `system_role` (`system_role_id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `FK_system_user_role__system_user`

FOREIGN KEY (`system_user_id`)

REFERENCES `system_user` (`system_user_id`)

ON DELETE CASCADE

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8;

Page 130: KNOWEAK UMA FERRAMENTA DE ANÁLISE DE RISCO EM …monografias.poli.ufrj.br/monografias/monopoli10027101.pdf · ERD Entity-Relationship Diagram HTML Hypertext Markup Lanaguage HTTP

113

-- -----------------------------------------------------

-- Insert seed data for IT asset categories and rating levels

-- -----------------------------------------------------

SET @ts = CURRENT_TIMESTAMP;

INSERT INTO it_asset_category

VALUES

(1, 'Informação', @ts, @ts), -- Information

(2, 'Política', @ts, @ts), -- Policy

(3, 'Pessoa', @ts, @ts), -- People

(4, 'Ambiente / Infraestrutura', @ts, @ts), -- Environment / Infrastructure

(5, 'Hardware', @ts, @ts),

(6, 'Software', @ts, @ts);

INSERT INTO rating_level

VALUES

(1, 'Muito baixo'),

(2, 'Baixo'),

(3, 'Médio'),

(4, 'Alto'),

(5, 'Muito alto');