Baixe o app para aproveitar ainda mais
Prévia do material em texto
W BA 08 80 _V 1. 0 ADMINISTRAÇÃO DE BANCOS DE DADOS 2 Ariel da Silva Dias São Paulo Platos Soluções Educacionais S.A 2021 ADMINISTRAÇÃO DE BANCOS DE DADOS 1ª edição 3 2021 Platos Soluções Educacionais S.A Alameda Santos, n° 960 – Cerqueira César CEP: 01418-002— São Paulo — SP Homepage: https://www.platosedu.com.br/ Diretor Presidente Platos Soluções Educacionais S.A Paulo de Tarso Pires de Moraes Conselho Acadêmico Carlos Roberto Pagani Junior Camila Turchetti Bacan Gabiatti Camila Braga de Oliveira Higa Giani Vendramel de Oliveira Gislaine Denisale Ferreira Henrique Salustiano Silva Mariana Gerardi Mello Nirse Ruscheinsky Breternitz Priscila Pereira Silva Tayra Carolina Nascimento Aleixo Coordenador Henrique Salustiano Silva Revisor Washington Henrique Carvalho Almeida Editorial Alessandra Cristina Fahl Beatriz Meloni Montefusco Carolina Yaly Mariana de Campos Barroso Paola Andressa Machado Leal Dados Internacionais de Catalogação na Publicação (CIP)_____________________________________________________________________________________ Dias, Ariel da Silva D541a Administração de bancos de dados / Ariel da Silva Dias, – São Paulo: Platos Soluções Educacionais S.A., 2021. 44 p. ISBN 978-65-89965-68-8 1. Banco de dados. 2. SQL Server. 3. Oracle. I. Título. CDD 005 ____________________________________________________________________________________________ Evelyn Moraes – CRB 010289/O © 2021 por Platos Soluções Educacionais S.A. Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, da Platos Soluções Educacionais S.A. 4 SUMÁRIO Sistemas de Gerenciamento de Banco de Dados _____________ 05 Transações ___________________________________________________ 20 Backup e recuperação de banco de dados ___________________ 35 Segurança de banco de dados _______________________________ 48 ADMINISTRAÇÃO DE BANCOS DE DADOS 5 Sistemas de Gerenciamento de Banco de Dados Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Objetivos • Compreender o conceito de dados e a necessidade de seu gerenciamento. • Examinar as funcionalidades de um sistema de gerenciamento de banco de dados. • Relacionar um banco de dados SQL e um banco de dados NoSQL. 6 1. Sistemas de Gerenciamento de Banco de Dados (SGBD) Então, você está construindo um aplicativo de software e um dos primeiros problemas a serem resolvidos é como armazenar seus dados. Qual banco de dados você escolherá? Um Sistema de Gerenciamento de Banco de Dados, ou SGBD, é um software que se comunica com o próprio banco de dados, aplicativos e interfaces de usuário para obter dados e analisá-los. O SGBD também contém os principais instrumentos para controlar o banco de dados (ELMASRI, 2009; ORACLEc, 2021). Antes de entrarmos a fundo no estudo sobre SGBD e conhecer os principais sistemas, analisaremos as definições de dados, banco de dados e gerenciadores de banco de dados. 1.1 Dados Os dados são fatos e estatísticas armazenados ou fluindo livremente em uma rede ou sistema computacional, geralmente, são brutos e não processados. Por exemplo, quando você visita um site qualquer, este site pode armazenar seu endereço IP, ou seja, dados, em troca podem adicionar um cookie em seu navegador, indicando que você visitou o site, ou seja, dados. Além disso, o site pode coletar seu nome, idade, localização, preferências, ou seja, seus dados. Os dados tornam-se informações quando são processados, transformando-os em algo significativo. Por exemplo, com base nos dados de cookies salvos no navegador do usuário, um site pode analisar os dados e obter a informação de que a maior parte das pessoas que visitam o site são mulheres solteiras de 26 a 40 anos, ou seja, informações derivadas dos dados coletados. 7 Observe que, para uma empresa (não limitando somente a empresas), os dados são verdadeiros tesouros preciosos. Por meio de uma análise profunda, é possível tirar diversas conclusões sobre os dados. Como no exemplo acima, onde a empresa, conhecendo seu público principal, pode redirecionar propagandas ou produtos que atendam ao interesse de mulheres solteiras, de 26 a 40 anos. Logo, os dados são verdadeiros tesouros que, se bem utilizados, podem gerar grandes oportunidades estratégicas. 1.2 Banco de dados Um banco de dados é uma coleção de dados relacionados, organizados de forma que os dados possam ser facilmente acessados, gerenciados e atualizados. O banco de dados pode ser baseado em software ou hardware, com um único propósito, o armazenamento de dados, segundo Elmasri, (2009). Durante os primeiros dias do computador, os dados eram coletados e armazenados em fitas, que eram, em sua maioria, somente para gravação, o que significa que, uma vez que os dados são armazenados, nunca mais poderão ser lidos. Eram lentos e pesados, e logo os cientistas da computação perceberam que precisavam de uma solução melhor para esse problema. Em um banco de dados, os dados são organizados de forma que seja possível encontrar e gerenciar rapidamente as informações desejadas. Um exemplo muito simples de um banco de dados pode ser uma lista de nomes em ordem alfabética ou uma lista crescente de códigos numéricos, onde cada código representa um item do estoque. Você pode armazenar informações no banco de dados de diferentes maneiras, conhecidas como modelos de banco de dados. 8 Os bancos de dados, normalmente, têm uma de duas formas básicas: • Banco de dados de arquivo único ou arquivo simples. • Banco de dados relacional ou estruturado de vários arquivos. Um banco de dados de arquivo simples armazena dados em um arquivo de texto simples, com cada linha de texto, normalmente, contendo um registro. Delimitadores como vírgulas ou tabulações separam os campos. Um banco de dados de arquivo simples, como o nome indica, usa uma estrutura simples e, ao contrário de um banco de dados relacional, não pode conter várias tabelas e relações, segundo Elmasri. Um banco de dados relacional contém várias tabelas de dados com linhas e colunas que se relacionam entre si, por meio de campos- chave especiais. Esses bancos de dados são mais flexíveis do que as estruturas de arquivo simples e fornecem funcionalidade para leitura, criação, atualização e exclusão de dados. Os bancos de dados relacionais usam Structured Query Language (SQL), um aplicativo de usuário padrão que fornece uma interface de programação fácil para interação com o banco de dados. O modelo de banco de dados relacional é o modelo de banco de dados mais amplamente usado. Usa relações e conjuntos para armazenar os dados. Na prática, parece que os dados são organizados em tabelas. Para acessar informações de um banco de dados, você, normalmente, precisa de um sistema de gerenciamento de banco de dados, ou simplesmente, de um SGBD (ORACLEc, 2021). 1.3 SGBD Um SGBD é um software que permite a criação, definição e manipulação de banco de dados, permitindo aos usuários armazenar, 9 processar e analisar dados com facilidade. O SGBD fornece uma ferramenta para realizar várias operações, como criar banco de dados, armazenar dados nele, atualizar dados, criar tabelas no banco de dados e muito mais. O software SGBD funciona, principalmente, como uma interface entre o usuário final e o banco de dados, gerenciando simultaneamente os dados, o mecanismo do banco de dados e o esquema do banco de dados para facilitar a organização e a manipulação dos dados (ORACLEc, 2021). Embora as funções do SGBD variem muito, os recursos e capacidades do SGBD de uso geral devem incluir: um catálogo acessível ao usuárioque descreve metadados, sistema de gerenciamento de biblioteca SGBD, abstração e independência de dados, segurança de dados, registro e auditoria de atividade, suporte para simultaneidade e transações, suporte para autorização de acesso, suporte de acesso de locais remotos, suporte de recuperação de dados SGBD em caso de danos e aplicação de restrições, para garantir que os dados sigam certas regras, segundo Elmasri, (2009). O SGBD também fornece proteção e segurança para os bancos de dados, inclusive mantendo a consistência dos dados no caso de vários usuários. A Figura 1 apresenta uma organização onde temos o banco de dados sendo gerenciado pelo SGBD. 10 Figura 1–Sistema de gerenciamento de banco de dados Fonte: elaborada pelo autor. Basicamente, existem dois tipos de SGBDs: relacionais e não relacionais, conhecidos mais por, respectivamente, SQL e NoSQL. Diferem em termos de recuperação, distribuição e processamento de dados. Veremos estes tipos de SGBDs a seguir. 1.3.1 Bancos de Dados Relacionais (SGBDR) Como o SQL é o núcleo desses sistemas, esse tipo de banco também é chamado de SQL. Em SGBDR, os dados aparecem como tabelas de linhas e colunas com uma estrutura rígida e dependências bem definidas. Devido à estrutura integrada e ao sistema de armazenamento de dados, os bancos de dados SQL não requerem muito esforço de engenharia para torná-los bem protegidos. São uma boa escolha para construir e dar suporte a soluções de software complexas, onde qualquer interação tem uma série de consequências. Um dos fundamentos do SQL é a conformidade com ACID (atomicidade, consistência, isolamento, Machine Realce Machine Realce Machine Realce Machine Realce 11 durabilidade). A conformidade com ACID é uma opção preferida se você criar, por exemplo, aplicativos de comércio eletrônico ou financeiros, onde a integridade do banco de dados é crítica, segundo Elmasri, (2009). No entanto, a escalabilidade pode ser um desafio com bancos de dados SQL. O dimensionamento de um banco de dados SQL entre vários servidores (dimensionamento horizontal) exige esforços adicionais de engenharia, sendo um ponto fraco deste tipo de banco. Em vez disso, os bancos de dados SQL são, geralmente, escalados verticalmente, ou seja, adicionando mais poder de computação a um servidor. Entre os principais bancos de dados SQL, destacam-se: SQL Server, Oracle, MySQL, MariaDB e PostgreSQL. 1.3.1 Bancos de Dados Não Relacionais (NoSQL) Como esses bancos de dados não estão limitados a uma estrutura de tabela, são chamados de NoSQL. Este tipo de sistema de gerenciamento de banco de dados é considerado orientado a documentos. Dados não estruturados, como artigos, fotos, vídeos, publicações em redes sociais, áudios e outros, são coletados em um único documento. Os dados são simples de consultar, mas nem sempre são classificados em linhas e colunas como em um banco de dados relacional. Os bancos de dados não relacionais ou NoSQL,geralmente, são escalados horizontalmente com a adição de novos servidores (ELMASRI, 2009; ORACLEc, 2021). Como os bancos de dados NoSQL permitem reservar vários tipos de dados juntos e escaloná-los, crescendo em torno de vários servidores, este tipo de banco está a cada dia se tornando mais popular, sendo utilizado por grandes nomes, como Facebook, Netflix, Twitter, Google, entre outros. Os bancos de dados NoSQL são definidos em quatro tipos: Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce 12 • Banco de dados chave-valor: têm uma estrutura de dados de dicionário, que consiste em um conjunto de objetos que representam campos de dados. Cada objeto recebe uma chave exclusiva. Para recuperar dados armazenados em um determinado objeto, precisa usar uma chave específica. Por sua vez, você obtém o valor (ou seja, dados) atribuído à chave. Esse valor pode ser um número, uma string ou até mesmo outro conjunto de pares de chave-valor. Geralmente, são bancos de dados in-memory. Principais sistemas de banco de dados deste tipo: Riak, Redis, Amazon DynamoDB. • Banco de dados de documentos: são repositórios que podem ser representados nos formatos XML, JSON, BSON, que consistem em conjuntos de pares do tipo chave-valor para armazenamento dos dados. Esses documentos são unidades básicas de dados que você também pode agrupar em coleções (bancos de dados), com base em sua funcionalidade. Principais sistemas de banco de dados deste tipo: MongoDB, CouchDB e Elasticsearh. • Banco de dados colunar: os dados são armazenados e agrupados em colunas armazenadas separadamente em vez de linhas. Esses bancos de dados organizam as informações em colunas que funcionam de forma semelhante às tabelas dos bancos de dados relacionais. Principais sistemas de banco de dados deste tipo: Cassandra e CosmoDB. • Banco de dados baseado em grafos: usam uma representação flexível de grafos para gerenciar dados, consistindo em três elementos: o vértice ou nó (em comparação ao SQL, é como se fosse uma linha em um SGBD), aresta (representa o relacionamento entre dois nós), a propriedade (as arestas possuem propriedades, o que permite organizar os vértices). Principais sistemas de banco de dados deste tipo: Neo4J, ArangoDB e OrientDB. Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce Machine Realce 13 1.4 Microsoft SQL Server O Microsoft SQL Server é um dos líderes de mercado em tecnologia de gerenciamento de banco de dados. Trata-se de SGBDR que oferece suporte a vários aplicativos, incluindo BI (Business Intelligence), processamento de transações e análises. O SQL Server segue uma estrutura de tabela baseada em linhas, permitindo a conexão de dados e funções enquanto mantém a segurança e consistência dos dados. O Microsoft SQL Server também permite uma instalação simples e atualizações automáticas, personalização para atender às suas necessidades de negócios e manutenção simples de seu banco de dados. 1.4.1 Gerência de dados Um banco de dados SQL é composto por um ou mais arquivos de dados (.mdf/.ndf) e um arquivo de log de transações (.ldf). Os arquivos de dados contêm esquema e dados, e o arquivo de log contém alterações ou inserções recentes. Os dados são organizados por páginas (como um livro), cada página tem 8 KB e são gerenciados quanto a leitura, escrita e atualizações (MICROSOFT, 2019). De acordo com o site oficial, uma página é a unidade de armazenamento fundamental do SQL Server. O SQL Server acessa os dados puxando toda a página de 8 KB do disco para a memória. As páginas permanecem temporariamente na memória até que não sejam mais necessárias. Amiúde, a mesma página será modificada ou lida com frequência, pois o SQL funciona com o mesmo conjunto de dados (MICROSOFT, 2019). O SQL altera os dados por meio de exclusão ou modificação, ou gravando novos dados. Todas as modificações são gravadas no log de 14 transações (que fica no disco onde é seguro), no caso do servidor SQL perder energia antes de gravar os dados de volta no disco (MICROSOFT, 2019). A página de 8 KB é gravada de volta no disco depois de não ser usada por um determinado período. Depois que uma transação é gravada no disco (arquivo .mdf / .ndf), é marcada como gravada no log de transações. Em caso de queda de energia, o SQL pode recuperar as transações concluídas que não foram gravadas e adicioná-las aos arquivos do banco de dados (.mdf e .ndf) quando voltar a operar. 1.4.2 Edições SQL Server Existem várias edições do SQL Server, dependendo do tamanho dos bancos de dados e qual a sua finalidade. Algumas edições são (MICROSOFT, 2019): • Enterprise: para grandes organizações com requisitos complexos, a Enterprise Edition pode gerenciar bancos de dados de até 524 PB (Petabytes–1000 terabytes) ea quantidade de memória e núcleos de CPU é limitada apenas pelo sistema operacional em que está sendo executado. • Standard: esta é a edição para empresas que possuem um banco de dados de tamanho razoável, 10 GB ou mais, ou se muitas pessoas se conectarem a ele. Possuí um limite de 128 GB de memória, mas também pode gerenciar bancos de dados de até 524 PB. • Web: projetado como uma maneira mais econômica de gerenciar bancos de dados para sites da web. • BI (Business Intelligence): semelhante ao SQL Standard, mas com mais ferramentas analíticas e com propósito específico para Business Intelligence. 15 • Workgroup: disponível apenas até o SQL 2008, que agora está em fim de vida. Projetado para aplicações de pequenas empresas. • Express: SQL Express é muito comum para pequenas e médias empresas. Embora suporte apenas bancos de dados de até 10 GB e possa usar apenas 1 GB de memória e 1 núcleo de CPU, é uma licença gratuita da Microsoft, portanto, muitos aplicativos destinados a pequenas e médias empresas aproveitarão as vantagens do SQL Express. É uma maneira muito econômica de fornecer um mecanismo de banco de dados robusto e confiável para pequenas empresas, além de ser a versão escolhida por instituições de ensino. Durante os estudos, utilizaremos o SQL Server 2019 Express. 1.5 Oracle Um dos sistemas de banco de dados mais populares em todo o mundo, a Oracle, é confiável para algumas das maiores empresas em operação. Com muitas versões diferentes do banco de dados Oracle lançadas, a Oracle oferece recursos inovadores em muitas áreas, incluindo gerenciamento, desempenho, segurança e desenvolvimento (ORACLE, 2018a). Os administradores e desenvolvedores de banco de dados podem usar facilmente este sistema de banco de dados para criar aplicativos inovadores para suas operações de negócios. A marca Oracle é bem conhecida por sua dedicação contínua em pavimentar o desenvolvimento futuro de recursos atualizados para melhor auxiliar empresas, pequenas e grandes, em suas necessidades de gerenciamento de dados. O banco de dados Oracle pode ser implantado localmente, em nuvem ou em uma configuração híbrida, sendo, principalmente, usado para 16 armazenar dados para sistemas de processamento de transações online (OLTP) e vendido em várias edições com diferentes conjuntos de recursos e faixas de preço (ORACLE, 2018a). Embora o banco de dados Oracle seja um data warehouse popular para empresas em todos os setores, você vai querer dar uma olhada mais de perto no custo da plataforma, na estratégia de bloqueio e nos requisitos de licenciamento antes de decidir exatamente como (e quando) usar o Oracle. 1.5.1 Arquitetura: armazenamento físico e lógico A arquitetura do banco de dados Oracle depende de dois tipos de armazenamento: físico e lógico (ORACLE, 2018a). • O armazenamento físico (em disco) contém todos os arquivos do banco de dados. Estruturas de armazenamento lógico, como espaços de tabela, segmentos, extensões e blocos aparecem no disco, mas não fazem parte do conjunto de dados. • O armazenamento lógico ajuda os usuários a localizar dados específicos e ajuda a melhorar a eficiência do processo de recuperação, permitindo um sistema modular de armazenamento de dados no qual a capacidade pode ser ajustada sem afetar o desempenho. Para entender a diferença entre os dois tipos de armazenamentos, utilizaremos como exemplo um livro. O livro é impresso em papel, ou seja, trata-se de um armazenamento físico, porém, existem informações adicionais, como o número do capítulo, número da página e notas de rodapé, que ajudam os leitores a navegar pelo livro e seu conteúdo, isso seria o armazenamento lógico. Observe, então, que o armazenamento lógico se refere a uma informação contextual que aparece no livro, porém, que não faz parte 17 da história do livro. Pelo contrário, trata-se de um guia para ajudar o leitor a encontrar informações específicas ou se localizar. 1.5.2 Arquitetura: objetos Compreender a diferença entre o armazenamento físico e o armazenamento lógico é uma base para a compreensão de objetos de banco de dados. As estruturas de armazenamento lógico diferem dos objetos de banco de dados em seu grau de visibilidade. Enquanto as estruturas lógicas de armazenamento residem no banco de dados para ajudar a organizar os dados, os objetos do banco de dados consistem em representações conceituais dos dados (ORACLE, 2018a). Exemplos de objetos de banco de dados incluem linhas, tabelas, índices e visualizações que exibem dados. Os objetos de banco de dados representam a visão lógica dos dados armazenados em arquivos de vários locais. Para conseguir isso, os objetos de banco de dados contam com estruturas de armazenamento lógico, que localizam os dados de destino. 1.5.3 Arquitetura: banco de dados e instâncias O termo banco de dados é, geralmente, usado quando nos referimos ao banco de dados e à instância como um todo. Entretanto, é mais preciso usar este termo ao se referir especificamente ao disco físico ou armazenamento de arquivo que contém os dados e metadados. Por outro lado, uma instância são os processos e a memória reservados para acessar as informações no banco de dados. 18 Os bancos de dados existem no armazenamento físico (disco, por exemplo), enquanto as instâncias residem na memória e são executadas como processos. Estruturas de memória armazenam dados e metadados. Os processos ajudam a executar o banco de dados, permitem a comunicação entre vários componentes e mantêm os dados entre a memória e o disco sincronizados(ORACLE, 2018a). 1.5.4 Edições Oracle A Oracle possui quatro edições de seu banco de dados, cada uma com seus preços e características diferentes (ORACLE, 2020b): • Enterprise Edition (EE): é a principal edição do Oracle, que possui uma vasta gama de ferramentas e recursos para grandes corporações. • Standard Edition (SE): edição que possui as funções básicas de gerenciamento de banco de dados para pequenas e médias empresas, a um custo muito menor do que o EE. • Standard Edition One (SEO): é uma edição indicada para pequenas empresas e possui um preço especial para servidores de um único processador. • Oracle Express (OE): é a versão ideal para Database Administrator (DBA), ou Administrador de Banco de Dados, cientistas de dados, estudantes e para aqueles que estão tendo seu primeiro contato com a Oracle. Trata-se de um banco de dados com as mesmas funcionalidades e poder computacional que outras versões, entretanto, possui um processo de download e instalação mais simples e é gratuito. Durante os estudos, utilizaremos o Oracle 18C Express. 19 Nesta unidade, você pode conhecer um pouco sobre o conceito de banco de dados e sobre os gerenciadores de banco de dados. Você também foi apresentado a dois conceitos: bancos de dados relacionais e banco de dados não relacionais ou NoSQL. Enquanto os bancos relacionais utilizam uma estrutura fixa como tabelas com colunas e linhas, os bancos NoSQL são mais flexíveis, podendo apresentar pelo menos quatro tipo de organizações: banco de dados chave-valor, banco de dados de documentos, banco de dados orientado a grafos e banco de dados orientados a colunas. Por fim, você teve uma introdução sobre os dois principais gerenciadores de bancos de dados: o SQL Server e o Oracle Database. Referências ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 4. ed. São Paulo: Pearson, 2009. MICROSOFT. Guia de arquitetura de página e extensões. 2019. Disponível em: https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and- extents-architecture-guide?view=sql-server-ver15#:~:text=Conforme%20 mencionado%2C%20em%20SQL%20Server,de%20sistema%20sobre%20a%20 p%C3%A1gina. Acesso em: 31 ago. 2021. ORACLEa. Oracle Database 18c Technical Architecture. 2018. Disponível em: https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/ technical-architecture/pdf/db-18c-architecture.pdf. Acesso em: 31 ago.2021. ORACLEb. Oracle Database Editions. Disponível em: https://docs.oracle.com/cd/ E11882_01/license.112/e47877/editions.htm#DBLIC109. Acesso em: 31 ago. 2021. ORACLEc. O que é SQL? Disponível em: https://www.oracle.com/br/database/what- is-database/. Acesso em: 31 ago. 2021. https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://docs.microsoft.com/pt-br/sql/relational-databases/pages-and-extents-architecture-guide?view= https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/technical-architectu https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/technical-architectu https://docs.oracle.com/cd/E11882_01/license.112/e47877/editions.htm#DBLIC109. https://docs.oracle.com/cd/E11882_01/license.112/e47877/editions.htm#DBLIC109. 20 Transações Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Objetivos • Compreender o conceito de transação em um banco de dados. • Relacionar as propriedades ACID com os bancos de dados relacionais. • Compreender os casos de bloqueio entre transações. 21 1. Processamento de transações Os analistas de negócios que trabalham em soluções de sistemas devem ter uma compreensão básica dos conceitos de banco de dados. Diversos sistemas de gerenciamento de banco de dados (SGBD) fazem parte de uma classe de sistemas chamados de sistemas OLTP (OnLine Transaction Processing). Antes de estudarmos sobre o processamento de transações e as propriedades a elas relacionadas, poderemos entender o que é uma transação em um banco de dados no contexto de OLTP. Resumidamente, uma transação representa uma série de operações realizadas em um SGBD em relação a um banco de dados de modo que, uma vez que a transação é concluída, os dados são deixados em um estado confiável e também consistente. Se alguma etapa da transação falhar, todas as etapas serão revertidas, ou seja, retrocedidas, de modo que a integridade dos dados possa ser mantida. Um exemplo típico de transação seria um pedido de um cliente em uma loja virtual. Este pedido consiste em uma série de eventos como aceitação do pedido, manutenção dos dados no estoque, cobrança, entre outros. A principal característica é que todos estes eventos são tratados como um todo. Como dito anteriormente, uma transação não pode permanecer em um estado intermediário incompleto, desse modo, outros processos não podem acessar os dados da transação até que a transação seja concluída ou tenha sido revertida após a falha. O processamento de transações é projetado para manter a integridade do banco de dados (a consistência dos itens de dados relacionados) em um estado conhecido e consistente. 22 Desse modo, considerado o exemplo acima, a transação (pedido do cliente) só será efetivada quando tudo (aceitação do pedido, atualização do estoque, comprovação do pagamento, entre outros) forem processadas em sua totalidade. Logo, se houver uma falha na aceitação do pedido ou na comprovação do pagamento, a transação não será efetivada. Outro exemplo típico de transação ocorre quando você realiza uma transferência via PIX de sua conta para outra. Por exemplo, consideremos que Ana e Beatriz, duas amigas, ambas possuem o saldo de R$ 1.000,00 em suas contas bancárias. Ana vai transferir, de sua conta bancária, o valor de R$ 300,00 para a conta bancária de Beatriz. Essencialmente, o que deve ser feito na transação é: • Retirar o valor 300 do saldo de Ana, atualizando este novo saldo. • Somar o saldo atual de Beatriz com o valor 300, atualizando este novo saldo. Um código simplificado é apresentado a seguir, exemplificando esta transação: UPDATE conta SET saldo = saldo–300 WHERE cliente = ‘Ana’ UPDATE conta SET saldo = saldo + 300 WHERE cliente = ‘Beatriz’ Este código, apesar de ter duas linhas, representa apenas uma única transação. Desse modo, por exemplo, se o nome do cliente destinatário (Beatriz) estiver errado ou não existir no banco, a transação não será efetivada. Ana continuará com seu saldo anterior (ou seja, não terá o débito do valor R$ 300,00 em sua conta) e Beatriz não receberá o crédito. Se a transação for finalizada com sucesso, ou seja, não houve falha em nenhuma instrução, o novo saldo das amigas será R$ 700,00 para Ana e R$ 1.300,00 para Beatriz. 23 As transações também podem ocorrer em outros ambientes, por exemplo, entre uma organização e sua equipe por meio do aplicativo de Recursos Humanos, em marketing, controle de produção e em outros lugares. Normalmente, mas nem sempre, esses tipos de aplicativos foram implementados sobre bancos de dados relacionais. Os SGBDs foram desenvolvidos para oferecer suporte ao processamento de transações, entretanto, não são os únicos meios para o processamento de transações por motivos históricos e por motivos técnicos. Além de aplicativos transacionais baseados em dados puramente relacionais, os bancos de dados relacionais incorporaram XML e recursos orientados a objetos ao longo dos anos para que ambientes transacionais híbridos (que requerem o uso dessas tecnologias junto com dados relacionais) também possam oferecer suporte ao processamento de transações, embora XML puro e os bancos de dados orientados a objetos continuem a fazer parte do mercado de aplicativos especializados. Acrescenta-se, ainda, que muitas empresas continuam a empregar em seus projetos os SGBDs Hierárquicos para OLTP. Isso ocorre devido às dificuldades de migrar para fora deste tipo de banco de dados ou porque esses tipos de bancos hierárquicos são muito eficientes para a carga de trabalho específica. 1.1 Propriedades ACID Além do desempenho e outras considerações generalizadas, os principais requisitos para bancos de dados de processamento de transações são as chamadas propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade), as quais garantem que as transações sejam processadas de forma confiável, segundo Elmasri (2009). 24 As transações ACID eram um grande negócio quando introduzidas formalmente, na década de 1980, em bancos de dados SQL monolíticos, como Oracle e IBM DB2. Bancos de dados NoSQL distribuídos populares da última década, incluindo Amazon DynamoDB e Apache Cassandra, inicialmente, focados em casos de uso de Big Data, não exigiam tais garantias e, portanto, evitaram implementá-los completamente. No entanto, as transações ACID tiveram um forte retorno nos últimos anos com o lançamento de bancos de dados distribuídos que têm suporte integrado para eles. A seguir, vamos conhecer cada uma destas propriedades, segundo Elmasri (2009): • Atomicity (atomicidade): garante que todas as operações em uma transação são tratadas como uma única unidade, que é totalmente bem-sucedida ou falha totalmente. No exemplo da conta bancária, se alguma das instruções falhar, toda a transação deve ser abortada e retrocedida. • Consistency (consistência): garante que uma transação só pode levar o banco de dados de um estado válido para outro, evitando a corrupção de dados. Suponha, então, que a transação do exemplo anterior falhe na segunda instrução no momento de atualizar o saldo de Beatriz, não somando em sua conta os R$ 300,00 e a transação não seja revertida. Desse modo, o banco de dados ficará inconsistente, pois a soma do dinheiro de Ana e Beatriz, após a transação, não será igual à quantidade de dinheiro que tinham antes da transação. • Isolation (isolamento): cada transação deve ocorrer independentemente de outras transações ocorrendo ao mesmo tempo. Em outras palavras, consultas e transações sempre são executadas em um determinado momento. Você pode consultar dados enquanto muitos outros usuários estão alterando dados e você não verá suas alterações, e não verãoas alterações uns dos outros. No exemplo do banco, considere que, ao mesmo tempo (no exato 25 momento) que Ana está fazendo um PIX para Beatriz, o marido de Ana acessa a conta para ver o saldo. Se a transação de transferência ainda não foi finalizada, o saldo que o marido de Ana verá será R$ 1.000,00, mesmo que a Ana tenha solicitado a transferência dos R$ 300,00, afinal, a transação ainda não finalizou. Logo, a transação de transferência entre as amigas é isolada da transação de visualização de saldo realizada pelo marido de Ana. • Durability (durabilidade): garante que os resultados da transação sejam armazenados permanentemente no sistema. As modificações devem persistir mesmo em caso de perda de energia ou falhas do sistema. No exemplo anterior, se a conta de Beatriz possui R$ 1.300,00, essas informações não devem desaparecer em caso de falha do sistema, queda de energia ou falha de software. Observe, então, que as propriedades ACID visam garantir que as transações dos bancos de dados sejam válidas, mesmo em caso de falhas ou interrupções de energia elétrica, falha de hardware, falha de software, entre outras. 1.2 Estados de uma transação Uma transação pode possuir cinco estados, conforme ilustra a Figura 1. Figura 1–Estados da transação Fonte: adaptado de GURU99 (2021). 26 Observe pela Figura 1 que, assim que é iniciada, a transação passa para o estado de ativa. Durante este estado são realizadas as operações de leitura ou gravação no banco de dados. A partir do estado de ativa existem duas possibilidades (GURU99,2021): • Uma transação pode ser abortada enquanto estiver no estado ativo. Quando isso ocorrer, passará para o estado de falha. Neste momento, para garantir as propriedades ACID, esta transação precisa ser revertida para desfazer o efeito de suas operações no banco. • Assim que uma transação é finalizada, ou seja, assim que todas as instruções de READ e WRITE são executadas sem falhas, sai do estado de ativa e passa para o estado de parcialmente confirmada. No estado de parcialmente confirmada, a transação será verificada sobre possíveis falhas de consistência. Novamente, existem duas possibilidades (GURU99,2021): • Se a verificação resultar em falha, a transação vai para o estado de falha. Entra neste estado sempre que qualquer uma das instruções não for executada com sucesso. • Por outro lado, se uma transação tem sua execução com sucesso, ou seja, se todas as suas alterações são aplicadas no banco de dados de modo permanente (de acordo com as propriedades ACID), então passa para o estado de confirmada ou commited. Seja a partir do estado committed ou do estado de falha, a transação precisa ser finalizada. Logo, a transação alcançará este estado sempre que uma transação não pode mais ser reiniciada. 27 1.3 Concorrência e bloqueios Bloqueios de banco de dados ocorrem para proteger recursos compartilhados durante as transações. Os bloqueios são salvaguardas para bancos de dados como um meio de: • Observar um cenário de tudo ou nada para transações múltiplas e separadas. • Preservar a consistência no estado do banco de dados. • Isolar as transações de serem confirmadas até que a transação seja concluída. • Salvar transações confirmadas, mesmo em caso de rescisão anormal. Observe, então, que os bloqueios aderem às propriedades ACID de transação. Antes de falarmos sobre bloqueios, poderemos entender porque são necessários. 1.3.1 Lost Update O problema chamado Lost Update ou atualização perdida ocorre quando duas transações simultâneas tentam ler e atualizar os mesmos dados (COULOURIS, 2012). Veja o exemplo onde temos uma tabela chamada produto que armazena id, nome e itens em um estoque para um produto. As informações contidas nessa figura são usadas em um sistema para exibir o número de itens em estoque para um determinado produto e, portanto, precisa ser atualizada cada vez que uma venda desse produto é feita. 28 Agora, considere as duas transações da Figura 2, onde transação 1 é o cliente 1 e transação 2 é o cliente 2, ambos estão realizando a compra ao mesmo tempo no site. Figura 2–Exemplo de transações concorrentes Fonte: elaborada pelo autor. Observe, pela Figura 2, que a transação 1 inicia o processo de compra do produto X. Ao mesmo tempo, em outro lugar, transação 2 (do cliente 2) inicia o processo de compra do mesmo produto X. A transação 1 lê os itens em estoque para o produto X, que, neste caso, é 12. Um pouco depois (talvez milésimos de segundos), a transação 2 lê o valor da variável de itens para o produto X, que ainda é 12 (afinal, ainda não foi atualizado o valor de estoque deste produto). Na transação 2, o cliente compra três produtos X, pouco antes da transação 1 comprar 2 produtos X. Neste momento, quantos itens X temos no estoque? A transação 2, então, completará sua execução primeiro e atualizará a variável itens para 9, uma vez que o cliente comprou três dos 12 produtos X. A transação 2 finaliza. Como o cliente na transação 1 comprou dois itens, a variável itens valerá 10. Temos, então, uma inconsistência! 29 Como podemos resolver este problema de inconsistência? Uma das possíveis soluções é utilizarmos os bloqueios (locks). 1.3.2 Bloqueios Para que você compreenda melhor, imagine três pessoas: André, Bruno e Carlos, todos são amigos e estão escrevendo um texto para a faculdade em um caderno. Como limitação, apenas um deles pode escrever no caderno por vez. André, então, começa a escrever o texto. Como ele está com o caderno, bloqueia o acesso de Bruno e de Carlos à escrita, ficam aguardando. Assim que finaliza, André passa o caderno para Bruno, que redige o texto, porém, agora, bloqueando a tentativa de acesso de Carlos ao caderno. Carlos só terá acesso ao caderno quando Bruno concluir sua parte da escrita. Quadro 1–Sequência de transações com bloqueio Tempo André (transação 1) Bruno (transação 2) Carlos (transação 3) 1 Começa a escrever. 2 Deseja escrever. Bloqueado por André. 3 Deseja escrever. Bloqueado por André. 4 Finaliza a escrita. Começa a escrever. Bloqueado por Bruno. 8 Finaliza a escrita. Começa a escrever. 9 Finaliza a escrita. Fonte: elaborado pelo autor. No quadro 1 é possível observar a sequência de ações, desde o tempo 1 quando André começou a escrever o texto até a finalização de todos. 30 Observe que Carlos permaneceu bloqueado enquanto André, e depois, Bruno, escreviam no caderno. O segundo escritor deve esperar que o primeiro finalize seu processo de escrita, enquanto o terceiro escritor deve esperar que o segundo libere o caderno e permita escrever. Os bloqueios em banco de dados, funcionam da mesma maneira que os bloqueios apresentados no Quadro 1, ou seja, evitam a gravação e atualizações simultâneas para manter a integridade dos dados. Os bloqueios podem ocorrer de várias formas. Aparecem em níveis de acesso a um banco de dados, geralmente, durante atualizações de dados. São tipos de bloqueios que podem ocorrer: • Bloqueio a nível de banco de dados: restringe a apenas uma sessão de banco de dados para aplicar as alterações nesse banco de dados. Este tipo de bloqueio raramente é visto, mas é amplamente aplicado durante a atualização do software. • Bloqueio a nível de arquivo: bloqueia os arquivos do banco de dados, evitando alterações em uma tabela inteira, em partes dela ou em outra tabela. Este é o método menos preferido de bloqueio, pois pode causar bloqueio não intencional. • Bloqueio a nível de tabela: bloqueia uma tabela inteira e evita que as propriedades da tabela e também suas linhas sejam modificadas ou atualizadas por outros usuários. • Bloqueio a nível de coluna: bloqueia uma coluna ou várias delas dentro de uma tabela. Isso, geralmente, não é oferecido por sistemas de banco de dados, pois requer muitos recursos para ser aplicado. • Bloqueio a nível de linha: este é o tipo mais comum de bloqueio, o qual bloqueia uma linha de uma tabela. 31 Resumidamente, o bloqueioocorre quando qualquer processo acessa uma parte dos dados onde há uma chance de que outro processo simultâneo também necessita acessar esta mesma parte dos dados ao mesmo tempo. Ao bloquear estes dados, garantimos que somos capazes de agir sobre eles da maneira que esperamos. Por exemplo, se lemos os dados, geralmente, gostamos de garantir que lemos os dados mais recentes. Se atualizarmos os dados, precisamos garantir que nenhum outro processo os atualize ao mesmo tempo. 1.3.3 Deadlock Embora seja baseado nos mesmos princípios, os deadlocks são diferentes do bloqueio. Quando ocorre uma situação de deadlock, não há bloqueador principal identificável, pois ambas as sessões implicam em bloqueios incompatíveis em objetos que a outra sessão precisa acessar. É uma corrente de bloqueio circular (COULOURIS,2012). Para melhor compreensão, voltemos à situação apresentada no Quadro 1 quando os colegas estavam escrevendo no mesmo caderno, porém, adicionaremos mais complexidade. Digamos que para que André possa escrever no caderno, precisa ler um livro chamado Banco de Dados, porém, não importa o motivo, o Bruno já está lendo este livro e adquiriu um bloqueio exclusivo, ou seja, está bloqueando um livro que André precisa ler. Lembre-se também de que o Bruno está aguardando André entregar a ele o caderno para que possa escrever. Nesse caso, estamos na situação representada pela Figura 3 a seguir. 32 Figura 3–Exemplo de deadlock Fonte: elaborada pelo autor. Observe, pela Figura 3, que André está bloqueando o acesso ao caderno, porém, necessita do livro, que está bloqueado por Bruno. Por outro lado, Bruno necessita do caderno, mas este está com André, que só liberará quando tiver acesso ao livro. Para que haja o deadlock como o apresentado na figura, as quatro condições a seguir devem ser mantidas simultaneamente (TANENBAUM,2007): • Exclusão mútua: alguns recursos envolvidos não podem ser usados por mais de um processo ao mesmo tempo (um recurso pode ser mantido apenas por um processo). Isso significa que se um dado ou tabela estiver sendo usado por qualquer processo e algum outro processo vier a requerê-lo, terá que aguardar a liberação dos recursos. No exemplo dos colegas, o caderno não pode ser usado pelo André e pelo Bruno ao mesmo tempo. • Sem preempção: se um processo está mantendo um recurso, então seus recursos não podem ser retirados à força dele. No 33 exemplo, Bruno necessita do caderno, porém não pode retirar a força do André. • Retenção e espera: o processo está retendo alguns recursos e aguardando outros recursos. No exemplo, Bruno está retendo o recurso livro e aguarda o caderno, por outro lado, André retém o caderno e aguarda a liberação do livro. • Espera circular: o processo está aguardando o recurso que está sendo retido pelo próximo processo e isso forma uma cadeia de espera. No exemplo acima, o André e o Bruno estão formando uma cadeia e aguardando que o recurso seja liberado um pelo outro, formando uma espera circular. A principal característica do deadlock é que, para acabar o deadlock, basta que apenas uma das quatro condições falhe ou não exista. Nesta aula, começamos estudando os conceitos de transações. Vimos que existem quatro propriedades que as transações devem seguir que são a Atomicidade, Consistência, Isolamento e Durabilidade. Em seguida, vimos que as transações podem sofrer concorrências, o que impacta diretamente nas propriedades ACID, principalmente, na consistência. Por fim, vimos que o uso de bloqueios permite eliminar ou ao menos evitar questões, como lost update, porém, dependendo da implementação, as transações podem entrar em deadlock, que é quando um processo bloqueia um recurso que é requerido por outro em uma espera circular. Referências COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed systems: concepts and design. 5. ed. England: Addison Wesley, 2012. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 4. ed. São Paulo: Pearson, 2009. 34 GURU99. DBMS Transaction Management: What are ACID Properties? Disponível em: https://www.guru99.com/dbms-transaction-management.html> Acesso em: 31 ago. 2021. TANENBAUM, A. S.; STEEN, M. V. Sistemas distribuídos: princípios e paradigmas. 2. ed. São Paulo: Pearson, 2007. 35 Backup e recuperação de banco de dados Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Objetivos • Compreender o conceito de disponibilidade de dados. • Relacionar a disponibilidade de dados com o processo de backup e restauração de dados. • Conhecer os tipos de backups que podem ser executados em um banco de dados. 36 1. Disponibilidade de dados Não há dúvida de que a maior preocupação para DataBase Administrators (DBAs), ou Administradores de Banco de Dados, e outros profissionais de banco de dados é a disponibilidade. Se o banco de dados estiver indisponível, você sabe exatamente o resultado: consultas lentas. Considere, ainda, que há a questão do tempo de inatividade resultante, capacidade de recuperação e perda de dados. Quando o servidor está inativo, esses tipos de problemas rapidamente têm precedência sobre todos os demais. 1.1 Erro, falha e falta Quando falamos que um sistema apresentou um erro, estamos dizendo que o que ocorreu foi decorrente de uma ação humana. Os erros podem ser cometidos por qualquer pessoa da equipe de Tecnologia da Informação (TI) durante as diferentes fases do desenvolvimento de software. As pessoas da equipe cometem erros devido à pressão de tempo de entrega, requisitos pouco claros ou insuficientes, suposições, complexidade de requisitos e vários outros motivos. Desse modo, o erro produz como resultado um defeito, que pode ser denominado como falta. Em alguns casos, o defeito é sinônimo de bug. Entretanto, o bug, geralmente, se refere à falha no ambiente de desenvolvimento e o defeito se refere à falha no ambiente de teste. Um defeito ocorre quando o comportamento do software real não é o mesmo que a expectativa do cliente, segundo Laplante (2001). Sendo assim, como consequência de um defeito, temos a falha. É dito que o software possui uma falha quando não possui o comportamento conforme o esperado. As condições do ambiente em que o software deve executar podem causar a falha. A condição do ambiente pode 37 incluir magnetismo, campos eletrônicos, radiações, poluições, efeitos químicos, e assim por diante. Note que o defeito ou falta é um nível de percepção interna do sistema, enquanto a falha se refere a fatores externos ao sistema. Desse modo, quando um programador desenvolve um sistema e escreve um comando if de modo errado, terá gerado um defeito ou falta, que, neste caso, foi causada pelo programador desatento. Se este comando if for executado, ou seja, foi necessário realizar a comparação entre dois valores no if, teremos um erro. Se o comportamento do erro for notado, poderemos dizer, então, que temos uma falha. 1.2 Perda de banco de dados Um banco de dados é o meio de organizar as informações para que possam ser facilmente gerenciadas, atualizadas e recuperadas. O usuário não pode acessar diretamente o banco de dados, logo, é necessário um Sistema de Gerenciamento de Banco de Dados (SGBD), que fornece acesso e uma maneira de gerenciar os dados. Entre as diversas funções de um SGBD, uma é cuidar da perda de dados, afinal, perder um banco de dados significa perder os dados a ele associado. Em poucas palavras, se uma empresa perder seus bancos de dados por uma série de razões, sem backups armazenados, é justo presumir que, provavelmente, perderá os dados também. O processo de recuperação de banco de dados não é totalmente diferente da recuperação de dados. Da mesma forma, os motivos para uma perda de banco de dados também não são muito diferentes dos motivos para a perda de dados. Então, antes de vermos a recuperação de dados ou de banco de dados, analisaremos os cenários que podem levar à perda do banco de dados. 381.2.1 Falha de energia Falhas de energia podem levar a falhas de hardware. Os componentes de hardware afetados podem ser cabos, fontes de alimentação ou dispositivos de armazenamento. A falha pode tornar os dados inacessíveis ou simplesmente resultar em perda de dados. Seria necessário isolar a área afetada antes de investigar se o banco de dados foi afetado pela falta de energia. 1.2.2 Falha de mídia (disco) Embora as falhas de energia possam levar à falha de disco, também podem falhar devido a danos físicos ou a uma falha lógica. De qualquer modo, isso levará à perda de um banco de dados, a menos que um serviço de backup seja executado no disco regularmente. A falha do disco é, provavelmente, uma das causas mais comuns de perda de dados. As falhas de mídia, geralmente, deixam os sistemas de banco de dados indisponíveis por várias horas até que a recuperação seja concluída, especialmente em aplicativos com dispositivos grandes e alto volume de transações. A melhor maneira de evitar esse tipo de falha do banco de dados é proteger seus dados com proteção contra malware adequada e fazer backup de seus dados com frequência. 1.2.3 Falha humana Embora a maioria dos processos seja automatizada, ainda existem muitas funções que precisam ser executadas manualmente. Um funcionário pode excluir acidentalmente alguns dados, ou então pode 39 modificar os dados sem saber de uma forma que interrompa o SGBD de interagir com o banco de dados. Quando o SGBD não consegue interagir com o banco de dados, causa um efeito cascata, pois os aplicativos de terceiros que dependem do SGBD para interagir com o banco de dados também perdem o acesso a ele. Além da falha acidental, também temos a falha intencional, ou seja, um funcionário insatisfeito pode fornecer informações essenciais e confidenciais a estranhos, causando danos incalculáveis a uma organização. Se o funcionário tiver acesso ou obtiver acesso não autorizado a sistemas ou aplicativos, pode injetar um vírus ou deletar dados para interromper as operações do dia a dia da empresa. 1.2.4 Falha de software As empresas que usam infraestruturas de TI tradicionais correm mais risco de corrupção de software do que aquelas que dependem de serviços baseados em nuvem. Enquanto os fornecedores de nuvem fornecem flexibilidade e escalabilidade de recursos, os ambientes de TI tradicionais têm conjuntos fixos de recursos de hardware que atualizam manualmente. Quando o número de usuários finais em uma empresa aumenta, os aplicativos que utilizam os mesmos recursos são divididos ainda mais entre os novos usuários, causando problemas, como travamento de sistemas operacionais e aplicativos durante a utilização do software. O travamento faz com que o usuário final perca os dados não salvos. Quando ocorre de maneira repetida, o travamento pode causar sérios danos, especialmente se o usuário estiver trabalhando em um banco de dados. 40 1.2.5 Vírus Uma empresa não pode operar com segurança sem o uso de uma boa solução de segurança. Os ataques cibernéticos são a maior ameaça que uma empresa enfrenta hoje e é imperativo que a solução de segurança execute varredura em tempo real. Dependendo do tipo de vírus, pode roubar, corromper, modificar e até mesmo excluir o banco de dados completo. 1.2.6 Desastres naturais Desastres naturais, como terremotos ou tsunamis, podem destruir toda a infraestrutura. Nesse caso, não há nenhuma maneira de encontrar, muito menos recuperar os dados. A recuperação de desastres é uma solução que não só ajuda a restaurar os dados, mas também garante que a empresa enfrente o tempo mínimo de inatividade conforme acordado no Service Level Agreement (SLA), ou Acordo de Nível de Serviço. Sem uma solução de recuperação de desastres, uma empresa pode até ter que recorrer ao encerramento de seus negócios após o desastre. 1.3 Métodos de backup e restauração de dados Até aqui, vimos sobre os tipos de falhas que podem ocorrer em um sistema de banco de dados. Agora, veremos o conceito de backup e alguns dos principais métodos de proteção de dados. Backup é o processo de criação de uma cópia dos dados para proteção contra exclusão acidental ou mal-intencionada, corrupção, falha de hardware, ataques de ransomware, entre outros. Os backups podem ser criados localmente, externamente ou ambos. Entretanto, um backup de dados externo é uma parte fundamental de qualquer plano de continuidade de negócios para recuperação de desastres. 41 Restaurar é o processo de recuperar dados de um backup. Em poucas palavras, significa copiar dados da mídia de backup para um dispositivo existente ou para um novo dispositivo, ou então, copiar dados da nuvem para um dispositivo local ou, por fim, realizar uma cópia de uma nuvem para outra. Recuperação se refere ao processo de restauração de dados e operações (por exemplo, retornar um servidor à ordem de funcionamento normal após falha de hardware). Os produtos voltados para a recuperação rápida de dados e operações são, normalmente, chamados de soluções de continuidade de negócios e recuperação de desastres, ou Business Continuity and Disaster Recovery (BCDR). A tecnologia BCDR ajuda as organizações a evitar perda de dados e minimizar o tempo de inatividade durante interrupções significativas. Os tempos de restauração e recuperação podem variar drasticamente, dependendo do formato do backup e dos métodos de recuperação de dados escolhidos. Além disso, as necessidades de restauração também variam (por exemplo, restaurar um único arquivo em vez de um servidor inteiro). Finalmente, os dados críticos podem residir em estações de trabalho, servidores locais e na nuvem. Essas são considerações importantes ao selecionar uma solução de backup e recuperação. 1.3.1 Backup em fita ou em disco O backup em fita é um dos mais antigos e resiste em atividade desde a década de 1960. A fita ainda é comumente usada para backup, arquivamento de sistemas corporativos de grande porte e até mesmo para armazenamento em nuvem a longo prazo. Os principais benefícios da fita são: • Grande capacidade. 42 • Baixo custo. • Backup externo de dados. Por outro lado, o backup em disco surgiu na década de 1990 e, já no início dos anos 2000, cresceu em popularidade, afinal, oferecia backup e recuperação muito mais rápidos do que os sistemas de fita. Além da velocidade, o backup de disco também permite que os usuários recuperem arquivos individuais sem a necessidade de primeiro restaurar um conjunto de dados inteiro. As soluções tradicionais de backup em disco têm a capacidade de transferir dados para fita ou nuvem para recuperação de desastres e/ ou arquivamento. No entanto, restaurar um volume grande de dados (o conteúdo de um servidor inteiro), de uma fita externa ou da nuvem, é lento. Usando métodos tradicionais de backup, a recuperação pode levar horas ou até dias. Durante esse tempo, as operações de negócios ficam seriamente comprometidas, resultando em perda de receita. 1.3.2 Backup em nuvem Temos três possibilidades de backup em nuvem, segundo Docave (2021): • Backup direto para a nuvem: com este tipo, os backups de arquivos externos são copiados diretamente para a nuvem, evitando a necessidade de um dispositivo local. • Backup de nuvem para nuvem: é o processo de copiar dados de uma nuvem para outra nuvem, por exemplo, entre a nuvem da Amazon e a nuvem da IBM, ou então entre uma nuvem pública para uma nuvem privada. • Backup SaaS (Software como Serviço): backup de dados criados em aplicativos SaaS, como Microsoft 365 ou Google G Suite. 43 Muitas organizações acreditam que, como os dados SaaS existem na nuvem, não há mais necessidade de backup. Isso, no entanto, não é verdade. Os dados criados em aplicativos SaaS são tão vulneráveis à exclusão acidental ou mal-intencionada e ataques de ransomware quanto os dados locais. O backup e a recuperação na computação em nuvem ainda estão evoluindo e continuarão a se desenvolver à medidaque mais empresas migrarem cargas de trabalho para a nuvem. A tecnologia de continuidade de negócios e recuperação de desastres (BCDR) ajuda as organizações a evitar a perda de dados e minimizar o tempo de inatividade durante interrupções significativas. Existem vários tipos de backups, eentre eles, destacam-se: backup completo, incremental, backup diferencial e backup completo sintético (TTGTMEDIA, 2021). Vamos analisar cada um deles a seguir. 1.3.3 Backup completo O backup completo faz backup de todo o conteúdo selecionado, incluindo também os arquivos de log de transações. Esta opção requer mais espaço para armazenamento, pois cada arquivo de backup pode ser grande, dependendo do tamanho do seu ambiente. Ao contrário dos backups incrementais e diferenciais, todos os backups completos são independentes uns dos outros e não dependem de outros arquivos de dados de backup. Cada um dos backups é abrangente, portanto, as tarefas de backup completo demoram mais para ser concluídas dentre as três opções disponíveis (OMELCHENKO, 2015a). A Figura 1 apresenta um exemplo de como são os backups completos. Observe que o primeiro backup pode ter sido executado em uma segunda-feira, o segundo em uma terça-feira, e assim por diante. 44 Figura 1–Backup completo Fonte: adaptado de (TTGTMEDIA,2021) Por consumir muito espaço de armazenamento, muitas empresas optam por realizar este tipo de backup mensalmente ou quinzenalmente. Desse modo, outros tipos de backup são necessários. 1.3.4 Backup incremental O backup incremental foi desenvolvido com o propósito de aumentar a velocidade de backup, bem como diminuir o tamanho deste backup, ocupando menos espaço de armazenamento quando comparado ao backup completo. Para isso, esta técnica apenas realiza o backup apenas dos dados que foram recentemente alterados, ou seja, aqueles que foram alterados desde o último backup completo, segundo Docave (2021). Por exemplo, suponha que, em uma sexta-feira, foi realizado o backup completo do sistema. Na semana seguinte, foram realizados backups incrementais. O backup de segunda-feira foi executado às onze horas da noite, logo, este backup conterá apenas os dados que foram modificados desde o último backup completo de sexta-feira. O backup de terça-feira conterá apenas os dados que foram modificados desde segunda-feira, e assim por diante. A Figura 2 ilustra este tipo de backup. 45 Figura 2–Backup incremental Fonte: adaptado de TTGTMEDIA (2021). Observe, pela Figura 2, que o primeiro backup é um exemplo do backup realizado na sexta-feira, é o backup completo. O segundo backup é aquele que foi gerado na segunda-feira, desde o último backup de sexta. O terceiro backup foi realizado a partir do último backup, que foi o de segunda-feira, e assim por diante. Apesar de ocupar pouco espaço, este tipo de backup possui mais complexidade no processo de restauração. Vamos retomar o exemplo anterior. Supondo que estamos na quinta-feira e o DBA deseja restaurar o backup de quarta-feira. Primeiramente, deveria restaurar o backup completo da sexta-feira e, em seguida, restaurar o backup de segunda- feira, depois o de terça-feira e, por fim, o backup de quarta-feira. 1.3.5 Backup diferencial O backup diferencial e o backup incremental são muito parecidos, começa com a execução do backup completo, seguido de backups contendo apenas os dados que foram modificados. 46 A diferença marcante entre os dois é observada na mecânica deste backup. Lembre-se de que o backup incremental deve incluir apenas os dados modificados desde o último backup completo. De posse desta informação, veja na Figura 3 que o backup diferencial inclui todos os dados que foram modificados desde o último backup completo (OMELCHENKO,2015b). Desse modo, considere o exemplo anterior onde foi realizado um backup completo em uma sexta-feira. Na segunda-feira foi realizado um backup diferencial, logo, tudo o que foi alterado de sexta-feira até a segunda será incluído no backup. No dia seguinte, terça-feira, foi realizado um novo backup diferencial. Neste backup, teremos todos os dados do último backup completo, ou seja, todos os dados de sexta-feira até o dia atual. Figura 3–Backup diferencial Fonte: adaptado de TTGTMEDIA (2021). Observe, pela figura, que, primeiramente, foi executado o backup completo. No exemplo anterior, é como se este fosse o backup de sexta-feira. O segundo backup foi realizado sobre os dados modificados desde o último backup completo. Observe que o terceiro backup foi feito também sobre todos os dados modificados desde o último backup completo. O mesmo ocorre com o quarto backup. 47 1.3.6 Backup completo sintético O backup completo sintético envolve fazer o backup completo, que precede uma sequência de backups incrementais. Então, você pode dizer que isso é o backup incremental. Entretanto, aqui, há uma diferença. Neste tipo de backup, o servidor combina o backup completo com os dados dos backups incrementais. Como resultado, temos um backup completo sintético, que é igual a um backup completo executado da maneira tradicional. Neste tema, começamos a compreender a diferença entre erro, falha e falta. Essencialmente, falta é uma condição que faz com que o sistema não execute sua função exigida; erro se refere a diferença entre a saída real e a saída esperada; e falha é a visão de que o comportamento externo está incorreto. Em seguida, vimos os tipos de falhas bem como pode compreender os diversos tipos de backups que podemos realizar em um sistema de banco de dados. Referências DOCAVE. Overview of Backup Types. Disponível em: https://avepointcdn. azureedge.net/assets/webhelp/docave/platform-backup-and-restore/index. htm#!Documents/overviewofbackuptypes.htm. Acesso em: 31 ago. 2021. LAPLANTE, P. Dictionary of Computer Science Enginnering and Technology. New York: CRC, 2001. OMELCHENKO, A. Full Backup. 2015a. Disponível em: https://sqlbak.com/academy/ full-backup. Acesso em: 31 ago. 2021. OMELCHENKO, A. Differential Backup. 2015b. Disponível em: https://sqlbak.com/ academy/differential-backup. Acesso em: 31 ago. 2021. TTGTMEDIA. Full vs. incremental vs. differential backup. Disponível em: https:// cdn.ttgtmedia.com/rms/onlineimages/whatis-pillar_full_incremental_differential_ backup_desktop.png. Acesso em: 31 ago. 2021. 48 Segurança de banco de dados Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Objetivos • Compreender o conceito de segurança de banco de dados. • Diferenciar os conceitos de autenticação, autorização e controle de acesso. • Estabelecer relação entre conceitos de segurança em banco de dados, especificamente RBAC e ABAC. 49 1. Segurança de banco de dados Os bancos de dados são um dos componentes mais sensíveis à segurança da infraestrutura de informações em qualquer organização. Isso ocorre porque são os guardiões do ativo mais importante de qualquer organização, ou seja, os dados. Todo banco de dados precisa de mecanismos de controle de acesso flexíveis, para evitar o acesso e a alteração não autorizada aos dados. Isso requer necessariamente: • Autenticação de usuários (mais comumente implementado por meio de senhas). • Autorização de cada tentativa de acesso a dados. A segurança do banco de dados abrange uma variedade de controles de segurança projetados para proteger o Sistema de Gerenciamento de Banco de Dados (SGBD). Os tipos de medidas de segurança ao banco de dados que uma empresa pode usar, incluem a proteção da infraestrutura subjacente que hospeda o banco de dados (como a rede e os servidores), a configuração segura do SGBD e o controle de acesso aos próprios dados. De acordo com Kim e Solomon (2014), esta segurança é obtida de acordo com o sucesso do emprego de três conceitos: autenticação, controle de acesso e autorização. Estes são três conceitos importantes e fundamentais de segurança, que, geralmente, são confundidos por muitos. A diferença entre eles, geralmente,não é entendida adequadamente e, às vezes, são considerados a mesma coisa ou os termos são usados de forma intercambiável. Talvez isso ocorra porque os processos de autenticação, autorização e controle de acesso, geralmente, parecem ocorrer ao mesmo tempo da perspectiva do usuário final e como um único processo. Entretanto, 50 pode ser extremamente importante entender a distinção ao gerenciar um sistema de banco de dados. O Quadro 1 apresenta a relação entre estes três conceitos, divididos sobre o que cada um deles faz e o que eles protegem. Quadro 1–Relação entre autenticação, controle de acesso e autorização Categoria O que Protege de Autenticação. Confirma que a identidade é quem diz ser. O mundo inteiro. Controles de acesso. Fornece autenticação/ validação adicional para acessar recursos específicos. Credenciais comprometidas (roubadas). Autorização. Determina quais ações a identidade pode executar em recursos específicos. Acidentes, credenciais comprometidas, especialistas maliciosos. Fonte: elaborado pelo autor. Observe que existem diferenças sensíveis entre cada um dos conceitos. Sendo assim, aqui, você terá um esclarecimento desses conceitos que são distintos e uma explicação de como são aplicados tipicamente em alguns cenários. 1.1 Autenticação 51 A autenticação é um processo pelo qual você verifica se alguém é quem afirma ser. Isso, geralmente, envolve solicitar ao usuário um nome de usuário e uma senha, mas pode incluir qualquer outro método de demonstração de identidade, por exemplo, um cartão inteligente, um número PIN, um código secreto enviado em uma carta na postagem, uma digitalização de impressão digital e reconhecimento facial, de acordo com Kim e Solomon (2014). Para executar a autenticação, um usuário já deve ter uma conta criada em um sistema que possa ser interrogado pelo mecanismo de autenticação ou uma conta deve ser criada como parte do processo da primeira autenticação. A saída do processo de autenticação, geralmente, é um resultado binário de sim ou não–o usuário é quem diz ser ou não é (um talvez seria tratado como um não). Observe que o alguém, citado no primeiro parágrafo, pode não ser uma pessoa real. Por exemplo, um aplicativo que está tentando usar uma API de serviços web pode precisar usar autenticação para provar que é o aplicativo em questão. Desse modo, esse aplicativo pode fazer isso exatamente da mesma maneira que um usuário humano real provaria sua identidade. 1.2 Autorização Autorização é o processo de estabelecer se o usuário (que já está autenticado) tem permissão para ter acesso a um recurso. Determina o que um usuário é e o que tem (ou não tem) permissão para fazer, conforme destaca Kim e Solomon (2014). O nível de autorização para fornecer a um usuário é determinado examinando as propriedades adicionais (metadados) associadas à conta do usuário. Por exemplo, os dados associados a um usuário 52 podem indicar se são membros de um determinado grupo, como Administradores ou Desenvolvedores. Outro exemplo, considere um sistema de TV por assinatura. Na autorização, o servidor do serviço pode indicar se o cliente pagou a assinatura para algum conteúdo pago ou podem indicar se ainda está dentro do período de 30 dias de um teste gratuito. A autorização também inclui um componente de gerenciamento de autorização, responsável por fornecer a funcionalidade para criar as regras de autorização. Por exemplo, pode permitir que um administrador crie uma regra para permitir que outro usuário edite ou escreva dados em uma tabela. O gerenciamento de autorização, geralmente, usa grupos, funções, privilégios e permissões para definir essas regras. A autorização responde a seguinte pergunta: dada uma identidade (verificada) de um usuário, a operação que está tentando realizar deve ser permitida? Por exemplo, Ana trabalha na equipe de recursos humanos de uma empresa, então precisa ter acesso aos registros de salários dos funcionários. E se ela trabalhasse, por exemplo, no departamento de gestão de estoque? Neste caso, não teria acesso aos salários dos funcionários. Políticas de controle de acesso implementadas por um SGBD permitem que um administrador de banco de dados especifique a resposta precisa a esse tipo de pergunta, aplicando regras no nível do banco de dados. 1.3 Controle de acesso Controle de acesso é o processo de impor a segurança necessária para um recurso específico, como salienta Kim e Solomon (2014). Depois que soubermos quem é um usuário,que nível de autorização possui e a que devemos ou não dar acesso, precisamos impedir 53 fisicamente ou logicamente esse usuário de acessar qualquer coisa que não possa. O controle de acesso pode ser visto como a combinação de autenticação e autorização, além de medidas adicionais, como restrições baseadas em relógio ou IP. No contexto de uma aplicação Web ou de um SGBD, o controle de acesso pode ser implementado usando lógica sob medida, recursos de segurança da estrutura de desenvolvimento em uso, permissões de arquivo, listas de acesso ou muitos outros mecanismos. As políticas de controle de acesso, em geral, baseiam-se nas noções de sujeito, objetos, operações e privilégios . Um sujeito é um ator que está tentando realizar uma ação em um objeto. Um objeto é um recurso que precisa ser protegido contra uso não autorizado. Uma operação é qualquer ação que um sujeito pode realizar em um objeto, e diferentes operações podem ser relevantes em diferentes tipos de objetos. Um privilégio é a permissão para um usuário realizar uma determinada operação em um objeto especificado (AFTAB, 2019). No contexto de bancos de dados, os sujeitos podem ser usuários ou aplicativos. Os recursos podem ser de diferentes tipos e com granularidade variável, como bancos de dados, tabelas, colunas e assim por diante. No contexto desses recursos, as operações relevantes correspondem às ações familiares do banco de dados, como criar, modificar, atualizar e ler. Além disso, os bancos de dados, geralmente, oferecem suporte a ações administrativas, como desligar ou fazer backup do banco de dados. O controle de acesso deve ser feito em dois níveis como apresentado por Kim e Solomon (2014): • Físico: assim como nos filmes de espionagem onde o agente deve passar por vários seguranças (área protegida) para ter acesso a um determinado local e, uma vez dentro do espaço físico desejado, 54 pode ter acesso a um sistema, um controle de acesso físico é feito por um crachá, cartão inteligente (smart card), entre outros. Sendo um funcionário, por meio deste controle físico, é possível ter acesso a área física interna destinada à sua permissão. • Lógico: este controle de acesso é feito em nível de software. Um exemplo de controle de acesso lógico é dentro de uma organização, onde um usuário pode ter acesso a um determinado software ou conjunto de softwares. Pode-se ter restrições e monitoramento dos mesmos. No exemplo apresentado anteriormente, se Ana realmente trabalhar no departamento de recursos humanos, precisará receber permissão para acessar a tabela do banco de dados que contém os registros de salários dos funcionários. Da mesma forma, Beatriz, uma desenvolvedora, pode ter acesso aos bancos de dados de teste, mas não aos de produção. O Quadro 1 apresenta um exemplo de uma entrada típica em uma lista de controle de acesso. Quadro 1–Lista de controle de acesso Usuário Recurso Permissão Ana. salario_funcionarios Leitura e escrita. Beatriz. banco_teste Leitura e escrita. Fonte: elaborado pelo autor. Observe que temos o recurso para a Ana e para Beatriz, bem como suas devidas permissões a determinado recurso. Entretanto, uma empresa, geralmente, possui muitos funcionários, então, torna-se complexo realizar este tipo de controle de acesso. Então, veremos o Controle de Acesso Baseado em Função. 55 1.3.1 Controle de Acesso Baseado em Função (RBAC) As listas de controle de acesso por usuário setornam rapidamente incontroláveis quando temos muitos usuários. Aqui, entra o controle de acesso baseado em função (Role-Based Access Control RBAC). Definida de maneira simples, uma função é apenas uma coleção de privilégios (AFTAB, 2019). Desse modo, em vez de definir privilégios para cada usuário individual, algumas funções podem ser definidas e os usuários podem ser atribuídos a funções. Isso é útil porque, na prática, os usuários podem ser classificados em grupos (com base em suas funções na organização), com requisitos de acesso a dados semelhantes para todos os usuários em um grupo. A Figura 1 apresenta um exemplo desta relação. Figura 1–Controle de acesso baseado em função Fonte: elaborada pelo autor. Muitos bancos de dados também permitem que os usuários recebam várias funções, e uma função ativa pode ser assumida em qualquer conexão de banco de dados. Alguns bancos de dados também permitem definições hierárquicas de funções, em que uma função pode herdar todos os privilégios de uma ou mais funções, e esses privilégios herdados são adicionados aos privilégios explicitamente concedidos a essa função. 56 Como exemplo, as funções correspondentes a desenvolvedores, pessoal de contas, pessoal de recursos humanos, analistas de dados e assim por diante, podem ser definidas com os privilégios apropriados concedidos a cada uma dessas funções. Os usuários podem então receber uma ou mais funções (AFTAB, 2019). Embora as políticas de controle de acesso baseadas em funções possam especificar políticas de acesso a dados em um nível granular, torna-se muito difícil manter essas políticas. Aqui, estão algumas dificuldades no gerenciamento de políticas RBAC (DAS,2018): • Os dados da maioria das organizações são mantidos em vários bancos de dados, seja localmente e/ou na nuvem, diferentes tipos de bancos, como relacional, noSQL e data warehouses, cada um com seu próprio tipo de políticas de controle de acesso. • Novos aplicativos são adicionados e os existentes mudam o tempo todo, levando a novos recursos sendo criados em bancos de dados constantemente. É muito difícil garantir que as políticas certas estejam sempre em vigor. • Fundamentalmente, uma política de controle de acesso implementada apenas com os controles nativos de um banco de dados deve tomar suas decisões com base em informações estáticas (principalmente a identidade do usuário e o tipo de recurso que está sendo acessado). Isso é insuficiente no mundo atual de nuvem de dados, onde apenas o mecanismo interno de segurança da empresa não pode mais proteger os seus recursos (afinal, os dados estão distribuídos e são acessíveis via web). Nesse cenário, credenciais de usuário roubadas ou comprometidas podem levar à perda massiva de dados. 57 1.3.2 Controle de Acesso Baseado em Atributos (ABAC) De acordo com os princípios de zero trust (confiança zero), o Controle de Acesso Baseado em Atributos (ABAC) usa vários atributos dinâmicos para tomar decisões de política (DAS,2018). Esses atributos não precisam ser limitados à identidade/ função do usuário e aos nomes dos recursos do banco de dados. Também podem incluir alguns ou todos os seguintes atributos (KUHN, 2010): • Grupos organizacionais do usuário, unidade organizacional e outros dados do usuário. • Endereço IP e a localização geográfica de origem da solicitação. • Atributos do dispositivo solicitante (por exemplo, se o dispositivo é emitido pela empresa ou de propriedade do usuário e qual é a postura de segurança do dispositivo atual). • Sensibilidade (determinada dinamicamente) dos dados acessados (por exemplo, dados que se assemelham a endereços de e-mail, números de telefone ou números de cartão de crédito seriam considerados altamente confidenciais). • Comportamento anterior do usuário. Observe que a maioria dos atributos listados acima vão além das informações disponíveis no próprio banco de dados. Especificamente, essa abordagem requer que a camada de acesso a dados use autenticação federada para se integrar à arquitetura maior de gerenciamento de usuários e dispositivos da organização, em vez de depender apenas das informações que residem no banco de dados. A autenticação federada se refere ao método de vincular a identidade de um usuário em vários sistemas separados de gerenciamento de 58 identidade. Permite que os usuários mudem rapidamente entre os sistemas, mantendo a segurança. Embora seja difícil de implementar, o controle de acesso baseado em atributos pode potencialmente abordar casos de uso e desafios de segurança que não podem ser resolvidos usando a abordagem tradicional baseada em RBAC. Aqui, estão alguns exemplos de políticas baseadas em atributos (KUHN, 2010): • As informações de identificação pessoal de funcionários só podem ser acessadas por funcionários do departamento de RH usando dispositivos corporativos. • Os usuários que pertencem ao grupo chamado analistas podem acessar todos os dados em modo somente leitura, mas com dados confidenciais impedidos de serem redigidos ou escritos. • A reautenticação com um fator adicional deve ser acionada quando é feita uma tentativa de acessar dados altamente confidenciais específicos. • Uma tentativa de infiltração lenta deve ser sinalizada se um usuário for visto acessando continuamente dados confidenciais (que está autorizado a acessar), em pequenos pedaços durante um período de tempo. As abordagens tradicionais, como RBAC, para controle de acesso, são insuficientes para proteger dados em nuvem, pois o número e a variedade de bancos de dados em uso pela organização aumentam rapidamente e a maioria dos novos bancos de dados é hospedada na nuvem, e as equipes de segurança precisam aplicar políticas consistentemente nos bancos de dados locais e na nuvem. Usando o controle de acesso baseado em atributos, as equipes podem aplicar políticas de acesso uniformemente em vários armazenamentos 59 de dados e minimizar os riscos associados a credenciais compartilhadas, credenciais roubadas e ataques internos. Por fim, podemos dizer que, apesar de todo esse controle, existem ameaças que focam justamente nesse tipo de serviço. Eentre alguns exemplos, segundo Goodrich (2013), pode-se citar: • Acesso físico: caso um agente ameaçador tenha acesso físico, esse tipo de controle será inútil, pois sepode-se copiar tais informações. • Interceptação por observação: uma senha pode estar anotada em um papel, que pode estar à vista de qualquer pessoa em uma sala de servidor. • Contornando a segurança: pode-se esperar acesso somente via web, mas pode tentar acessá-lo por outra forma. • Explorando hardware/ software: pode-se instalar pequenos hardwares na rede (raspberry) ou algum programa de espionagem, como um cavalo de Tróia. • Descarte (incorreto) de mídia: pode-se recuperar dados apagados de mídias descartadas de forma incorreta. Existem casos em que a empresa descarta (literalmente joga no lixo) incorretamente seus servidores. Desse modo, se alguém tiver acesso a este hardware, poderá recuperar os dados e obtê-los. • Interceptação eletrônica: pode-se incluir grampos em cabos de rede, tendo, assim, as mesmas informações do indivíduo clonadas. • Acessando redes: muitas organizações criam conectores de rede além do esperado, logo, alguma pessoa não autorizada pode plugar sua máquina nesses conectores para ter acesso a rede. 60 1.3.3 Cenários comparativos de aplicação de RBAC e ABAC A seguir, são apresentados alguns exemplos com o objetivo de ajudá-lo a entender quando é melhor utilizar RBAC e quando os sistemas ABAC podem funcionar melhor (DAS, 2018). • Pequenos grupos de trabalho: RBAC é a melhor opção. Definir o trabalho por função é simples quando a empresa é pequena e os arquivos são poucos. Por exemplo, se você trabalha em uma empresa com apenas quinze funcionários, um sistema RBAC será mais eficiente e fácil de configurar. • Grupos de trabalho geograficamente distribuídos: ABAC é a melhor escolha.
Compartilhar