Projeto

Geral

Perfil

10 - Arquitetura de Software Geral » Histórico » Versão 1

Redmine Admin, 11/05/2019 22:59

1 1 Redmine Admin
h1. 1.0 - Arquitetura de Software Geral
2
3
h2. 1.	Introdução
4
5
Este documento contém o conjunto das opções tecnológicas e das melhores práticas arquiteturais que devem ser adotadas na disponibilização de soluções de tecnologia da informação no Ministério do Planejamento, Desenvolvimento e Gestão.
6
7
h2. 2.	Definições, Acrônimos e Abreviações
8
9
AM – API Manager.
10
BPMS – Business Process Management System
11
BRMS – Business Rules Management System 
12
CPU – Central Processing Unit ou Unidade Central de Processamento. 
13
EJB – Enterprise Java Bean.
14
ESB – Enterprise Service Bus.
15
IS – Identity Server.
16
JAX.WS – Java API para XML Web Services.
17
JAX.RS – Java API para RESTful Web Services. 
18
JEE – Java Enterprise Edition.
19
JPA – Java Persistence API.
20
JSF – Java Server Faces.
21
JSP – Java Server Pages.
22
JSON - JavaSript Object Notation
23
MP – Ministério do Planejamento, Orçamento e Gestão.
24
POJO – Plain Old Java Object.
25
REST – Representational State Transfer. 
26
SGBD – Sistema Gerenciador de Banco de Dados
27
SOA – Service Oriented Architecture ou Arquitetura Orientada a Serviços.
28
SOAP – Simple Object Access Protocol.
29
SSO – Single Sign-On. 
30
XML – eXtensible Markup Language.
31
32
h2. 3.	Estratégia Arquitetural
33
34
A estratégia arquitetural adotada pelo MP é baseada no modelo orientado a serviços, ou SOA, que possibilita publicar componentes como serviços que podem ser acessados por clientes, independentemente da linguagem, plataforma ou sistema operacional, por meio do uso de padrões abertos, tais como Web Services, REST, SOAP e XML. 
35
36
h2. 4.	Opções Arquiteturais
37
38
h3. 4.1	Gestão de Dados
39
40
> [ A definir ]
41
42
h3. 4.2	Gestão de Acessos e Identidades
43
44
* _Acessos MP_
45
** Provê a interface de autorização permitindo a um usuário acessar a aplicação sob determinado perfil com permissões pré-definidas.
46
47
* _WSO2 Identity Server_ 
48
** Provê uma interface de autenticação única (SSO) entre um usuário e os sistemas acessados. Com a utilização de um IS, é possível federar bases de usuários para prover um acesso único ao usuário para todos os sistemas que este acessa. 
49
50
h3. 4.3	BPMS e BRMS
51
52
* Red Hat JBoss BRMS & BPM Suite
53
54
h3. 4.4	Barramento de Serviços
55
56
* O MPDG criou uma aplicação denominada ConectaGov que atua sobre o _backend_ da plataforma WSO2 (ESB + AM) para prover um barramento de serviços para as aplicações e sistemas do Executivo Federal.
57
58
* O catálogo de serviços pode ser acessado pelo link *_https://catalogo.conecta.gov.br/conectagov/_*
59
60
h3. 4.5	Portal
61
62
* Zope Plone (Legado)
63
64
* Joomla (Padrão)
65
66
* PHP/Laravel (Exceção / Poucos Casos)
67
68
h3. 4.6	Gestão de Projetos
69
70
* Redmine
71
72
h3. 4.7	SGBD
73
74
* PostgreSQL
75
76
* MySQL
77
78
* MS SQL Server
79
80
h3. 4.8	Linguagens
81
82
* Java
83
84
* PHP
85
86
* Python (Exceção / Poucos Casos)
87
88
h3. 4.9	Servidores de Aplicações
89
90
*Backend*
91
92
* JBoss (Legado)
93
* Spring Boot (Padrão Java)
94
* Apache HTTP Server
95
96
*Frontend*
97
98
* Nginx
99
* Apache Tomcat
100
101
h3. 4.10 Geoprocessamento
102
103
* OpenLayers
104
* GeoWebCache
105
* GeoNetwork
106
* Hibernate Spatial
107
* GeoServer
108
* GeoTools
109
* PostgreSQL + PostGIS
110
111
h3. 4.11 ETL
112
113
* Talend
114
* SQL Integration Services (SSIS)
115
116
h3. 4.12 BI
117
118
* QlikView
119
* Microsoft PowerBI
120
* Pentaho
121
122
h3. 4.13 Segurança
123
124
* A aplicação deve implementar criptografia não reversível para senhas gravadas em bancos de dados; 
125
* A aplicação deve proteger credenciais de acesso pelo uso de conexões SSL com criptografia forte nos processos de login;
126
* Se a aplicação trafegar dados sensíveis pela Internet, devem ser usadas conexões SSL com criptografia forte;
127
* A aplicação deve registrar todas as atividades dos usuários e manter esses logs por um período mínimo de xx meses;
128
* A aplicação deve se proteger de Cross-Site Scripting (XSS) por meio da validação e higienização dos dados recebidos dos usuários antes de processá-los ou exibi-los de volta no servidor web;
129
* A aplicação deve implementar proteção contra SQL Injection, não permitindo entrada de dados diretamente em queries SQL (ver mais informações em https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet);
130
* A aplicação deve gerenciar cookies e tokens de sessão de forma segura para proteger os identificadores de sessão dos usuários:
131
** Todos os cookies devem ser marcados como HTTPOnly para impedir que acesso via JavaScript tente transmiti-los a terceiros;
132
** Os cookies utilizados como parte de transações de ordem financeira para manter o estado da sessão devem ser marcados como "seguros" para evitar a transmissão através de conexões não-SSL;
133
** Invalide tokens de sessão apropriadamente após um tempo razoável de inatividade.
134
* A aplicação deve remover as informações sensíveis de parâmetros GET passados via URL porque podem ser registradas e armazenadas em vários locais, tais como logs de auditoria, históricos de browsers etc.;
135
* A aplicação deve garantir que sua resposta durante o processo de login é neutra: não deve ser possível identificar o dado incorreto, se é o identificador do usuário, a senha ou algum outro dado requerido. Não deve ser possível identificar se o usuário e a senha são válidos a partir da resposta da aplicação;
136
* Todos os dados informados pelo usuário e parâmetros devem ser validados e qualquer caráter ilegal removido antes de ser processado.
137
138
h3. 4.14 PHP
139
140
* Laravel
141
* PHP Unit
142
143
h3. 4.15 JAVA
144
145
* JHipster
146
** Spring Boot 
147
** Angular
148
149
* Maven
150
151
h3. 4.16 Conteinerização e Orquestração
152
153
* Rancher
154
155
* Docker
156
157
* Kubernetes
158
159
h3. 4.17 Repositório Externo de Código
160
161
* GitLab
162
163
h3. 4.18 Integração Contínua
164
165
* Jenkins Server