Prévia do material em texto
WBA0880_v1.0 APRENDIZAGEM EM FOCO ADMINISTRAÇÃO DE BANCO DE DADOS 2 APRESENTAÇÃO DA DISCIPLINA Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida Um Administrador de Banco de Dados, ou DBA, é um profissional de Tecnologia da Informação responsável por trabalhar na criação, manutenção, consulta e ajuste do banco de dados de uma empresa. Além disso, eles também são responsáveis por manter a segurança e a integridade dos dados. Essa função requer que os profissionais tenham bom conhecimento e experiência em um Sistema de Gerenciamento de Banco de Dados (SGBD) específico que a empresa usa, como o SQL Server ou Oracle. O administrador de banco de dados é a chave para que tudo ocorra bem em um SGBD, garantindo o fluxo de dados e o acesso ininterrupto dos dados à organização. Quando o DBA funciona de forma eficaz, o resultado é uma empresa eficiente e capaz de armazenar e escalar seus dados com sucesso. Qualquer erro no SGBD refletirá nas receitas da empresa, seja esse erro uma pequena queda de energia, má manutenção de dados ou erro humano. Qualquer um deles podem gerar prejuízos para a empresa, então, observe que o papel do DBA é crítico em uma organização. Desse modo, esta disciplina foi desenvolvida contemplando todas as competências necessárias para a formação de um DBA. Inicialmente, você conhecerá os dois principais SGBDs do mercado que são o Oracle e o SQL Server. Em seguida, apresentaremos o conceito de transação e as particularidades de comandos e transações no Oracle e o SQL Server. Ainda sobre transações, você conhecerá uma propriedade 3 muito importante em banco de dados relacional que é a ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Por fim, você conhecerá diversas técnicas de segurança e de proteção ao banco de dados, como técnicas de backup e recuperação de dados, administração de usuários, controle de acesso, entre outros. Não se preocupe se alguns conceitos e termos citados aqui não lhe são familiares, tudo isso ficará muito claro e intuitivo no final da disciplina. Bons estudos! INTRODUÇÃO Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira direta e assertiva, os principais conceitos inerentes à temática abordada na disciplina. Além disso, também pretende provocar reflexões que estimulem a aplicação da teoria na prática profissional. Vem conosco! Sistemas de Gerenciamento de Banco de Dados ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 1 5 DIRETO AO PONTO O banco de dados é baseado na coleta de dados armazenados em um formato estruturado, em que precisamos de um SGBD (Sistema de Gerenciamento de Banco de Dados) e SGBDR (Sistema de Gerenciamento de Banco de Dados Relacional) para gerenciar a coleta desses dados. Desde os primeiros tempos da tecnologia da computação, os dados tinham que ser salvos e organizados em fitas - raramente usadas no mundo de hoje. O principal problema com essas fitas era a impossibilidade de reler os dados, então, nasceram os bancos de dados e, junto a eles, veio a necessidade de gerenciar esse processo de armazenamento, segurança e recuperação dos dados. Tanto o SGBD quanto o SGBDR são muito semelhantes e uma pessoa que não seja de tecnologia não consegue diferenciá-los. No entanto, precisamos dar uma olhada em ambas as tecnologias para entendê-las totalmente. Um SGBD é uma solução de tecnologia usada para armazenar e gerenciar informações por meio da implementação de abordagens sistemáticas. Ele foi introduzido na década de 1960, com opções eficientes de manipulação de dados como inserção, exclusão e atualização de dados armazenados nos bancos de dados. Aqui cabe uma consideração importante: um SGBD não se limita às operações CRUD (Criar, Ler, Atualizar e Excluir). Além disso, ele fornece opções de definição e controle para que qualquer empresa ou indivíduo possa trabalhar em estreita colaboração com os bancos de dados e obter as informações desejadas com mais precisão. Com base nisso, pode-se definir SGBD como uma coleção de dados inter-relacionados e um programa responsável por gerenciar esses 6 dados, realizando o armazenamento, a atualização, a segurança e permitindo o acesso a esses dados de maneira fácil e eficaz. O SGBD possui essencialmente três arquiteturas (Figura 1), cada uma das arquiteturas será discutida a seguir. Arquitetura de camada única (ou banco de dados local): nesse tipo de arquitetura, o banco de dados está diretamente disponível para o usuário usá-lo para armazenar dados, desse modo, qualquer solicitação feita pelo usuário não requer uma conexão de rede para realizar a ação no banco de dados. Por exemplo: você possui uma agenda de contato telefônico em seu celular. Quando você abre essa agenda, os dados são acessados localmente, sem a necessidade de buscar o contato em um servidor externo. Figura 1 - Arquiteturas em Camadas SGBD Fonte: elaborada pelo autor. 7 Arquitetura de duas camadas: essa arquitetura inclui uma camada de aplicativo entre o usuário e o SGBD, que é responsável por comunicar a solicitação do usuário ao sistema de gerenciamento de banco de dados e, em seguida, enviar a resposta do SGBD ao usuário. Uma interface de aplicativo conhecida como ODBC (Open Database Connectivity) fornece uma API que permite que o programa do cliente invoque o SGBD. A maioria dos fornecedores de sistemas de banco de dados fornece drivers ODBC para seus SGBD. Assim, tal arquitetura fornece segurança extra ao SGBD, uma vez que não é exposta diretamente ao usuário final. Além disso, a segurança pode ser melhorada adicionando verificações de segurança e autenticação na camada de aplicativo. Arquitetura de três camadas: essa é a arquitetura geralmente utilizada por aplicativos web, sendo uma extensão da arquitetura de 2 camadas. Como vimos, a arquitetura de 2 possui uma camada de aplicação que pode ser acessada programaticamente para realizar várias operações no SGBD. Geralmente, o aplicativo entende a linguagem de acesso ao banco de dados e processa as solicitações dos usuários finais para o SGBD. Na arquitetura de 3 camadas é adicionada uma camada de apresentação que fornece uma interface gráfica para o usuário final interagir com o SGBD. Para o usuário final, a camada de interface é o Sistema de Banco de Dados e o usuário final não tem ideia sobre a camada de aplicativo e o sistema SGBD. Por fim, cabe destacar que o SGBDR é um tipo de SGBD que armazena os dados em formato tabular e é usado para classificá-los em linhas e colunas, que são chamadas de tuplas e tabelas. Nesse contexto, como exemplos de SGBDR temos o SQL Server e o Oracle Database. 8 Referências bibliográficas RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. Porto Alegre: Bookman, 2011. PARA SABER MAIS O SGBDR é um sistema padrão para o gerenciamento de banco de dados relacional. Por sua vez, os dados são armazenados na forma de linhas e colunas no SGBDR. As relações entre as tabelas também são armazenadas na forma de tabela. A linguagem de programação SQL (Structured Query Language) é usada para realizar tarefas como inserir, atualizar ou recuperar dados de um banco de dados. Os principais bancos de dados relacionais usam SQL, como é o caso do Oracle, Microsoft SQL Server, MySQL, entre outros. Características de um SGBDR: • Bancos de dados SQL são bancos de dados baseados em tabelas. • Armazenamento de dados em linhas e colunas. • Cada linha contém uma instância única de dados para as categorias definidas pelas colunas. • Fornece uma chave primária para identificar exclusivamente as linhas. Então, observe que o conceito fundamental por trás dos bancos de dados relacionais é a organização de dados em coleções de tabelas que consistem em colunas e linhas, conforme pode ser visto na Figura 2. 9 Figura 2 - Banco dedados relacional - Tabelas Fonte: elaborada pelo autor. A principal vantagem dos bancos de dados relacionais é que eles permitem aos usuários categorizar e armazenar facilmente dados que podem ser consultados e filtrados posteriormente para extrair informações específicas para relatórios. Os bancos de dados relacionais também são fáceis de estender e não dependem de organização física. Após a criação do banco de dados original, uma nova categoria de dados pode ser adicionada sem que todos os aplicativos existentes sejam modificados. TEORIA EM PRÁTICA No início do desenvolvimento de qualquer sistema, seja ele web, desktop ou móvel, um dos primeiros passos é escolher o tipo de banco de dados: se Banco de Dados estruturados SQL ou Banco de Dados NoSQL. Após escolher o tipo de banco de dados, o próximo passo é escolher o gerenciador de banco de dados. Observe o seguinte detalhamento que a senhora Ana, proprietária de uma loja de móveis, lhe passou sobre a aplicação que deseja que você desenvolva: 10 “O cliente chega em minha loja e escolhe um móvel que deseja adquirir. Por exemplo, se ele vê um sofá que esteja a seu gosto, ele se senta em minha mesa para negociarmos. Então eu apresento todas as opções de cores de sofá, bem como os tamanhos e a quantidade disponível do produto em estoque (de acordo com as necessidades do cliente). Se ele desejar comprar o móvel, então é realizado um cadastro com todos os dados pessoais. Em seguida, emito um pedido para entrega do produto e o cliente pode acompanhar o status do pedido via aplicativo.” Com base nessa descrição, ao seu ver, qual tipo de banco de dados seria ideal para a empresa da senhora Ana (SQL ou NoSQL)? Indique as características de cada um dos tipos de bancos e o motivo da escolha. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet. Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, Indicações de leitura 11 portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 No capítulo 4 do livro Sistemas de Banco de Dados, os autores apresentam a definição dos tipos de dados em SQL, especificando as restrições. Acrescenta-se, ainda, que o autor apresenta as principais instruções SQL como INSERT, UPDATE, DELETE e UPDATE. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. Barueri: Pearson, 2019. p. 57-72. Indicação 2 No capítulo 1 do livro Projeto de Banco de Dados, o autor apresenta a definição de sistema de gerenciamento de banco de dados, bem como os diferentes tipos de modelos de banco de dados como modelo conceitual, modelo lógico e modelo conceitual como modelo de organização. HEUSER, C. A. Projeto de banco de dados - V4. 6. ed. São Paulo: Bookman, 2017. p. 1-9. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber 12 Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. A arquitetura de um SGBD depende do __________, no qual ele é executado. Por exemplo, em uma arquitetura __________, os sistemas de banco de dados na máquina __________ podem executar várias solicitações feitas pela máquina __________. Assinale a alternativa que completa adequadamente as lacunas: a. Servidor; de três camadas; local; em nuvem. b. Computador; de três camadas; cliente; servidor. c. Sistema computacional; cliente-servidor; servidor; cliente. d. Servidor; de duas camadas; cliente; servidor. e. Sistema computacional; três camadas; cliente; servidor. 2. Um SGBDR se refere a um banco de dados __________ que armazena dados em um formato __________, usando __________ e __________. Isso torna mais fácil localizar e acessar valores específicos no banco de dados. Assinale a alternativa que completa adequadamente as lacunas: 13 a. Relacional; estruturado; linhas; colunas. b. NoSQL; não estruturado; chave; valor. c. Não estruturado; colunar; linhas; colunas. d. Não relacional; não estruturado; chave; valor. e. Tabular; estruturado; chave; valor. GABARITO Questão 1 - Resposta C Resolução: O SGBD pode possuir três arquiteturas distintas: camada única, duas camadas ou três camadas. Na arquitetura de duas camadas ou cliente-servidor, um cliente pode realizar solicitações para uma máquina servidor. O servidor, por sua vez, atende as requisições do cliente. Questão 2 - Resposta A Resolução: Os bancos de dados relacionais se destacam por sua capacidade de armazenar dados estruturados. Os dados são armazenados em uma estrutura tabular usando linhas e colunas, formando uma tabela. Transações ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 2 15 DIRETO AO PONTO Por que ocorre bloqueio em um banco de dados? Como em outros sistemas, os bloqueios de banco de dados servem para proteger recursos ou objetos compartilhados. Esses recursos protegidos podem ser tabelas, linhas, blocos de dados, itens que estão em cache ou, até mesmo, sistemas inteiros. Nesse contexto, existem muitos tipos de bloqueios que podem ocorrer, no entanto, neste tema nos concentraremos em estudar o bloqueio transacional. O bloqueio transacional está relacionado à capacidade do sistema de gerenciamento de banco de dados (SGBD) de garantir transações confiáveis que aderem as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Desse modo, observe a seguir a descrição das propriedades ACID, observe que elas estão relacionadas e devem ser consideradas em conjunto, ou seja, são propriedades de uma mesma transação e não conceitos independentes. 16 Figura 1 - Quatro propriedades de uma transação Fonte: elaborada pelo autor. Atomicidade: significa tudo ou nada. Uma transação pode realizar três instruções: inserir dados em uma tabela, excluir de outra tabela e atualizar uma terceira tabela. A atomicidade garante que ocorram todas essas instruções ou nenhuma. Neste exemplo, não seria possível executar apenas uma instrução. Consistência: significa que as transações sempre levam o banco de dados de um estado consistente para outro. Portanto, se uma transação violar as regras de consistência do banco de dados, toda a transação será revertida. Isolamento: significa que as transações simultâneas e as alterações feitas nelas não ficam visíveis umas para as outras até que sejam concluídas. A implementação do isolamento é bastante diferente em diferentes SGBDs. Essa também é a propriedade mais frequentemente relacionada a problemas de bloqueio. 17 Durabilidade: significa que as transações confirmadas (após fazer o commit) não serão perdidas, mesmo em caso de encerramento anormal, ou seja, uma vez que um usuário ou programa tenha sido notificado de que uma transação foi confirmada, eles podem ter certeza de que os dados não serão perdidos. Exemplo de propriedades ACID: transferência de R$ 100,00 da conta de uma pessoa A para a conta de uma pessoa B: 1. read(A) 2. A = A -100 3. write(A) 4. read(B) 5. B = B + 100 6. write(B) Atomicidade: se houver uma falha, por exemplo, no momento de leitura da etapa 4, o SGBD deve garantir que as atualizações não sejam refletidas no banco. Consistência: se ocorrer a falha descrita anteriormente e o banco for atualizado, mesmo assim haverá inconsistência nos dados, ou seja, A ficará com -R$ 100,00 e B não receberá o crédito de R$ 100,00. Isolamento: se um usuário C acessar em uma transação T2 durante a etapa 4 de T1, obterá um banco de dados parcialmente inconsistente. Durabilidade: se após a etapa 6 os usuários A e B forem notificados de que a transação de transferência foi concluída, as atualizações no banco devem persistir mesmo que haja falhas. 18 Referências bibliográficas ORAFAQ. ACID. Disponível em: https://www.orafaq.com/wiki/ACID. Acesso em: 9 maio 2021. PARA SABER MAIS Os SGBDs relacionais, de modo a garantir as propriedades ACID, usam vários bloqueios transacionais. Entretanto, o uso de bloqueios a recursos compartilhados está sujeito a conflitos e o escalonador de transações (sistema que gerencia as transações e escolhe qual será executada) sozinho não pode evitar suas ocorrências. Quando duas transações simultâneas não podem progredir porque cada uma espera que a outra libere um bloqueio, temos o estado de Deadlock (Figura 2). Figura 2 - Estado de Deadlock Fonte: elaborada pelo autor. 19 Pela Figura 2, observe que a Transação 1 bloqueou a tabela tbusuario e aguarda a liberação do bloqueio da tabela tbcliente para finalizar a transação. O mesmo ocorre com a Transação 2, assim, como ambas estão bloqueando e aguardando a aquisição de bloqueio, nenhuma delas libera o bloqueio antes de adquirir o próximo. Um deadlock pode ocorrer nos estados de exclusão mútua, retenção e espera, sem preempção e espera circular. A Prevenção de deadlock e liberação do deadlock pode ser obtida quando: • Sem exclusão mútua: sem exclusão mútua significa remover todos os recursos que podem ser compartilhados. • Sem retenção e espera: a remoção da condição de suspensão e espera pode ser feita se um processo adquirir todos os recursos necessários antes de iniciar. • Permitir preempção: permitir a preempção é tão bom quanto remover a exclusão mútua. A única necessidade é restaurar o estado do recurso para o processo preemptivo, em vez de deixá-lo entrar ao mesmo tempo que o preempção. • Removendo a espera circular: a espera circular pode ser removida apenas se os recursos forem mantidos em uma hierarquia e o processo puder conter os recursos aumentando a ordem de precedência. Se houver preempção, basta que um dos estados seja revertido para que a mesma deixe de acontecer. 20 TEORIA EM PRÁTICA O deadlock é o estado em que um processo A realiza o bloqueio de um recurso R1 e um processo B realiza o bloqueio de um recurso R2. Esse estado é alcançado quando: há exclusão mútua, não há preempção, há retenção e espera e espera circular. Então, considere que você foi contratado para ser o DBA (Database Administrator) em uma empresa de desenvolvimento de software. Em uma reunião com quatro colegas, o primeiro diz que a melhor maneira de lidar com deadlock é ignorando-o e, caso ocorra, reinicie o sistema. O segundo diz que o melhor caminho é a prevenção, eliminando as condições que provocam o deadlock. Um terceiro diz que o melhor é evitar, analisando criteriosamente os recursos, evitando que o deadlock ocorra. O quarto colega diz que o melhor é deixar o deadlock acontecer e, quando isso ocorrer, basta reiniciar o processo. Analise cada um dos posicionamentos, indicando pontos positivos e negativos das abordagens sugeridas. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições Indicações de leitura 21 públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet. Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 No capítulo 7 do livro Sistema de Banco de Dados, os autores apresentam o conceito de transações, bem como os modelos e estruturas. Além disso, eles também apresentam ao aluno as propriedades ACID, além de exercícios para aprofundar o conhecimento. Trata-se de uma leitura fortemente recomendada para reforçar o aprendizado sobre transações. SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. Rio de Janeiro: RTC, 2020. p. 452-470. Indicação 2 No capítulo 18 do livro Sistema de Banco de Dados, os autores apresentam os tipos de bloqueios e sua necessidade em um banco de dados. Além disso, nos traz alguns exemplos de deadlock e como preveni-lo. O tratamento de deadlock é essencial para a rotina de trabalho de um administrador de banco de dados, logo, trata-se de uma leitura recomendada. 22 SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. Rio de Janeiro: RTC, 2020. p. 472-510. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Um sistema de processamento de transações (SPT) é responsável por monitorar e gerenciar as transações em um banco de dados. O sistema é útil quando algo é vendido pela Internet. Isso permite um intervalo de tempo entre o momento em que um item está sendo vendido e o momento em que é realmente vendido. Um exemplo é a venda de um ingresso para uma determinada poltrona no cinema. Sobre o sistema de processamento de transações, assinale a alternativa correta. a. Um SPT garante que o cliente comprará os ingressos com segurança graças ao seu sistema de criptografia. b. O SPT permite armazenar em um banco de dados todas as informações sobre a compra do ingresso. 23 c. O SPT retem o ingresso, permitindo que um mesmo bilhete não seja vendido a dois clientes diferentes. d. O SPT gerencia a transação desde o momento que o cliente solicita o bilhete, passando pela aprovação do pagamento até a sua emissão. e. Um SPT é um sistema que faz parte do banco de dados e o objetivo é aceitar ou negar transações realizadas em um banco de dados pelo usuário. 2. Em seu aplicativo, uma única instrução SQL INSERT ou um único SET ou KILL global pode não constituir em si uma __________. Nesses casos, você usa comandos de processamento de transação para definir a sequência de __________ que forma uma transação completa. Uma __________ marca o início da __________; após uma sequência de possivelmente muitas __________, outro comando marca o fim da __________. Assinale a alternativa que completa adequadamente as lacunas. a. Transação completa; instruções; instrução; transação; instruções; transação. b. Inserção; comandos; instrução; transação; inserções; transação. c. Transação; operações; transação; instrução; transações; instrução. d. Instrução; transações; instrução; transação; transações; instrução. e. Instrução; transações; transação; instrução; transações; instrução. 24 GABARITO Questão 1 - RespostaC Resolução: O SPT é usado para manter a integridade do banco de dados, garantindo que um conjunto de instruções (transação) seja executado por completo ou não executado. Logo, se um cliente A começou a adquirir um ingresso para a poltrona D5 no cinema e, no mesmo instante, o cliente B tenta realizar a aquisição da mesma poltrona (D5), o SPT não permite, retendo (bloqueando) o ingresso e permitindo que o mesmo seja vendido apenas para um cliente. Questão 2 - Resposta A Resolução: A alternativa está correta, pois uma transação é um conjunto de uma ou mais instruções. Logo, uma única instrução SQL não constitui uma transação completa. Muitas vezes, são necessárias várias instruções para que se tenha uma única transação. Portanto, uma instrução pode marcar o início de uma transação. Após muitas instruções, uma última instrução marca o fim da transação. Backup e recuperação de dados ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 3 26 DIRETO AO PONTO Criar backups do banco de dados regularmente é uma das tarefas mais fáceis que se podem ser realizadas, entretanto, muitas vezes, isso acaba sendo negligenciado até o minuto em que ocorre o primeiro desastre. Logo, quando isso ocorre, todos pensam: “se tivéssemos um backup agora tudo poderia ser diferente”. Portanto, o backup é a chave para um plano de recuperação de desastres bem-sucedido. Cada mecanismo de banco de dados tem seus próprios comandos e procedimentos de backup. O Oracle, por exemplo, tem o RMAN (Recovery Manager) um utilitário Oracle que pode fazer backup, restaurar e recuperar arquivos de banco de dados. Trata-se de um recurso do servidor de banco de dados Oracle e não requer instalação separada (ORACLE, 2021). O SQL Server tem recursos para backups completos e diferenciais, bem como um processo de backup para logs de transações (MICROSOFT, 2021). Esses procedimentos podem ser usados em combinação para garantir tempo de inatividade limitado caso o banco de dados sofra uma interrupção ou uma falha crítica irrecuperável. Então, antes de criar um backup é importante conhecer os seus três diferentes tipos: completo, diferencial e incremental. Alguns administradores chamam incorretamente os backups diferenciais de incrementais. Há uma diferença distinta entre os dois, no entanto, isso afeta a maneira como os bancos de dados veem dados de backup. Por sua vez, o Oracle possuí recursos para backup completo do banco de dados, bem como backup parcial como os backups tablespace e de arquivo de dados. A Figura 1 apresenta a relação entre os três tipos de backup: completo, incremental e diferencial. 27 O backup completo é o mais simples de todos, trata-se de uma cópia completa de todos os dados contidos no banco de dados. Esse tipo de backup inclui: a estrutura de tabelas, as visualizações, os gatilhos e qualquer outra configuração do banco. O backup incremental realiza a cópia de todos os dados modificados desde o último backup incremental. Caso não haja um backup incremental, a cópia será realizada a partir do último backup completo que foi realizado. Apesar do SQL Server não ter suporte para esse tipo de backup, outras distribuições como o Oracle a possui. Figura 1 - Tipos de backups Fonte: adaptada de TTGTMEDIA (2021). 28 O backup diferencial realiza a cópia de todos os dados modificados após o backup completo. Nesse tipo, cada backup diferencial será anexado ou associado ao arquivo de backup completo realizado inicialmente. Dessa forma, observe que o backup diferencial é acumulativo, logo, os arquivos de backup podem ficar muito grandes. Nesse sentido, note que todos os tipos de backups necessitam que, primeiramente, seja feito um backup completo. Logo, não importa qual backup será escolhido, pois você iniciará pelo backup completo. Em um ambiente real é comum a realização do backup completo no início da semana e, no decorrer dos dias, realizar backup diferencial. Além disso, alguns bancos de dados mais críticos necessitam de backups em um curto prazo de tempo, algo como 10 ou 15 minutos, porém, outros tipos de bancos são passíveis de passar por backup no final do dia. Referências bibliográficas MICROSOFT. Criar um backup de banco de dados completo. Disponível em: https://docs.microsoft.com/pt-br/sql/relational-databases/backup-restore/ create-a-full-database-backup-sql-server?view=sql-server-ver15. Acesso em: 18 jun. 2021. ORACLE. Backup and Recovery. Disponível em: https://docs.oracle.com/cd/ B19306_01/server.102/b14220/backrec.htm. Acesso em: 18 jun. 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: 18 jun. 2021. 29 PARA SABER MAIS Em banco de dados, o rollback é um comando que leva o banco de dados a um ponto anterior, sendo utilizado especificamente para reiniciar a transação atual e restabelecer o estado do último commit. O rollback é essencial para a integridade do banco de dados, pois indica que ele pode ser restaurado para uma cópia limpa, mesmo após uma operação incorreta. Após realizar o rollback para uma transação ativa, o banco de dados pode ser restaurado para um estado consistente. Quando o comando rollback é executado, as alterações feitas nos arquivos de banco de dados, atualizações, adições ou exclusões, desde o limite do commit, são revertidas e as entradas originais são colocadas de volta nos arquivos. Os registros adicionados aos arquivos permanecem como registros excluídos. Os arquivos são reposicionados para o último limite de commit. Já as alterações feitas em outros recursos também são revertidas. O rollback pode ser executado manualmente pelos usuários ou automaticamente pelos sistemas de banco de dados. Se um usuário modifica um campo de dados mas não mantém as alterações, os dados são armazenados em um log de transações ou em um estado temporário. Os usuários que executam uma consulta no banco de dados verão os valores inalterados. No entanto, se o usuário optar por não salvar os dados, um comando de rollback trata os dados para descartar qualquer alteração feita pelo usuário. Portanto, um rollback ocorre quando um usuário começa a alterar os dados e descobre que o registro errado foi atualizado, então, ele cancela a transação para desfazer as modificações. 30 O rollback também pode acontecer automaticamente após um travamento do banco de dados ou do servidor. Quando o banco de dados é reiniciado, todas as transações não concluídas são revertidas, permitindo que os usuários entrem novamente e salvem as alterações necessárias. TEORIA EM PRÁTICA Backup é o processo seguro de fazer uma cópia de seus dados e, por exemplo, em caso de perda por corrupção ou exclusão, pode-se recuperá-los com o mínimo de prejuízo possível. Reflita sobre o caso de uma empresa que deseja implantar o sistema de banco de dados SQL Server como o Sistema de Gerenciamento de Banco de Dados. Eles desejam saber de você, DBA (Database Administrator), quais as características dos backups disponibilizados por essa ferramenta. Como você responderia à solicitação de seu chefe sobre as características de backup do SQL Server? Descreva os tipos de backups que o SQL Server atende, lembrando dos três tipos principais estudados. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log Indicações de leitura 31 in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet.Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 No livro Sistema de Banco de Dados, o autor apresenta um conceito completo sobre a definição de falhas, bem como a classificação delas quanto a falhas de transação, falha de sistema e falha de disco. Trata-se de uma leitura recomendada para o aluno compreender e diferenciar os diversos tipos de falhas, bem como saber como se recuperar. SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de banco de dados. 7. ed. Rio de Janeiro: LTC, 2020. p. 511. Indicação 2 No livro Cibersegurança para leigos, o autor apresenta no capítulo 13 a definição de backup bem como os conceitos de backup incremental, completo e diferencial. Essa é uma ótima oportunidade de se aprofundar no conceito de backup e as técnicas relacionadas. 32 STEINBERG, J. Cibersegurança para leigos. Rio de Janeiro: Alta books, 2021. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. A capacidade de restaurar bancos de dados de backups válidos é uma parte vital para garantir a continuidade dos negócios. Desse modo, os administradores de banco de dados (DBAs) devem fazer um plano de backup para os bancos de dados pelos quais são responsáveis. Sobre os tipos de backups de dados é correto falar que: a. O backup incremental realiza uma cópia ou instantâneo dos dados modificados desde o último backup diferencial. b. O backup completo necessita de mais espaço para armazenamento quando usado em combinação com outros tipos de backups. c. O backup completo e o backup intermediário são precedidos pelo backup diferencial, responsável por organizar os dados. 33 d. O backup diferencial e o backup intermediário são semelhantes, porém, o diferencial continua a copiar dados alterados após o backup completo. e. O backup diferencial continua a copiar todos os dados alterados após o último backup incremental. 2. O conceito de __________ está relacionado com a incapacidade de um sistema ou componente de software de executar suas funções exigidas dentro dos requisitos de desempenho especificados. Quando um __________ chega ao cliente final, é chamado de __________. Durante o desenvolvimento, __________ são geralmente observadas pelos __________. a. Falta; erro; falha; as faltas; usuários. b. Erro; erro; falha; as falhas; desenvolvedores. c. Falha; defeito; falha; as falhas; testadores. d. Falha; erro; falha; as falhas; desenvolvedores. e. Falta; erro; falta; as falhas; testadores. GABARITO Questão 1 - Resposta D Resolução: A alternativa está correta, pois o backup diferencial é semelhante ao backup incremental pois ambos se iniciam a partir do backup completo. Entretanto, o backup diferencial copia todos os dados alterados desde a realização do último backup completo 34 Questão 2 - Resposta C Resolução: A falha está relacionada a uma perda específica dos requisitos, gerando um comportamento inesperado do software. Uma falha geralmente é observada pelo usuário final, entretanto, durante o processo de desenvolvimento de software, a falha é observada pelos testadores. Segurança de banco de dados ______________________________________________________________ Autoria: Ariel da Silva Dias Leitura crítica: Washington Henrique Carvalho Almeida TEMA 4 36 DIRETO AO PONTO O controle de acesso ao banco de dados é um método que permite o acesso aos dados confidenciais da empresa apenas para aquelas pessoas (usuários do banco de dados) que têm permissão para acessar esses dados e para restringir o acesso às pessoas não autorizadas. Esse processo inclui dois componentes principais: autenticação e autorização. A autenticação é o método de verificar a identidade de uma pessoa que está acessando seu banco de dados. Observe que, a autenticação não é suficiente para proteger os dados. Uma camada adicional de segurança é necessária, a autorização, a qual determina se um usuário deve ter permissão para acessar os dados ou fazer a transação que está tentando. Sem autenticação e autorização, não há segurança de dados. Qualquer empresa cujos funcionários se conectam à Internet, ou seja, toda empresa hoje, precisa de algum nível de controle de acesso implementado. Dentre os tipos de controle de acesso temos modelos obsoletos como o Controle de Acesso Discricionário (DAC) e o Controle de Acesso Obrigatório (MAC). Já entre os métodos mais comuns temos o Role-Based Access Control (RBAC) e o modelo que é mais recente chamado Attributed Based Access Control (ABAC). Com os modelos DAC, o proprietário atribui direitos de acesso com base em regras especificadas pelo usuário. Trata-se de um dos modelos mais antigos e menos usado nos últimos tempos. O MAC foi desenvolvido usando um modelo não discricionário, no qual as pessoas têm acesso com base em uma liberação de 37 informações. Essa é uma política na qual os direitos de acesso são atribuídos com base nos regulamentos da autoridade central. Por outro lado, o RBAC concede acesso com base na função de um usuário e implementa princípios de segurança importantes, como privilégio mínimo e separação de privilégio. Assim, alguém que tenta acessar informações só pode acessar os dados necessários para sua função. A Figura 1 exemplifica o RBAC. Figura 1 - Arquitetura RBAC Fonte: elaborada pelo autor. Pela Figura 1, observe que os sistemas de controle de acesso baseado em função (RBAC) atribuem acesso e ações de acordo com a função de uma pessoa no sistema. Assim, todos que detêm essa função têm o mesmo conjunto de direitos. Aqueles que desempenham funções diferentes têm direitos diferentes. O usuário A pode ser, por exemplo, um funcionário da contabilidade, o qual tem a Função 1 a qual é atualizar o salário dos funcionários da empresa. Logo, ele terá a permissão de realizar essa ação. O mesmo usuário A também tem a Função 2 que é verificar as vendas no mês. Desse modo, ele tem permissão de acesso às informações de vendas. 38 Ainda analisando Figura 1, observe que os sistemas de controle de acesso com base em funções (não somente este da figura, mas todos eles) compartilham elementos essenciais, como: • Administradores: eles identificam funções, concedem permissões e, de outra forma, mantêm os sistemas de segurança. • Funções: os trabalhadores são agrupados com base nas tarefas que executam. • Permissões: o acesso e as ações estão vinculados a cada função e definem o que as pessoas podem e não podem fazer. Por fim, no método ABAC, cada recurso e usuário são atribuídos a uma série de atributos. Nesse método dinâmico, uma avaliação comparativa dos atributos do usuário, incluindo hora do dia, posição e localização, são usados para tomar uma decisão sobre o acesso a um recurso. PARA SABER MAIS A injeção de SQL é a forma mais comum de ataque a sites, pois os formulários são muito comuns e, geralmente, não são codificados corretamente. Além disso, as ferramentas de hacking usadas para encontrar pontos fracos e tirar proveito deles estão disponíveis on- line. Esse tipo de exploração é fácil o suficiente para que hackers inexperientes possam realizar estragos de pequeno a grande porte. No entanto, nas mãos de um hacker muito habilidoso, uma fraqueza no código da web pode revelar o acesso no nível raiz dos servidores39 da web e, a partir disso, ataques em outros servidores em rede podem ser realizados. Um acesso legítimo dos visitantes ao seu site pode incluir pesquisas, formulários de inscrição, formulários de contato, formulários de logon e tudo isso fornece acessos para o banco de dados. Esses vários pontos de acesso são possivelmente incorporados em aplicativos prontos para uso ou podem ser aplicativos personalizados configurados apenas para o seu site. Esses formulários e seu código de suporte provavelmente vieram de muitas fontes, foram adquiridos em momentos diferentes e, possivelmente, instalados por pessoas diferentes. A injeção de SQL é o uso desses campos que estão disponíveis publicamente para obter entrada no seu banco de dados. Isso é feito inserindo comandos SQL nos campos do formulário, em vez dos dados esperados. Os formulários codificados incorretamente permitirão que um hacker os use como um ponto de entrada no banco de dados, quando os dados no banco de dados podem se tornar visíveis e o acesso a outros bancos de dados no mesmo servidor ou em outros servidores da rede. Como os sites exigem acesso constante ao banco de dados, os firewalls oferecem pouca ou nenhuma defesa contra-ataques de injeção de SQL. Se o site é público e os firewalls devem ser configurados para permitir que cada visitante do site acesse o banco de dados, geralmente pela porta 80/443. Os programas antivírus são igualmente ineficazes no bloqueio de ataques de injeção de SQL. Eles visam detectar e interromper um tipo totalmente diferente de dados recebidos. A defesa de injeção SQL mais usada é composta de dois componentes. Primeiro, aplicando atualizações e correções de 40 rotina de todos os servidores, serviços e aplicativos. O segundo componente se trata de produzir e usar códigos de sites bem escritos e bem testados, de modo a não permitir que comandos SQL inesperados sejam executados. Essas duas defesas são por definição suficientes para interromper qualquer ataque de injeção de SQL. TEORIA EM PRÁTICA Autenticação, autorização e controle de acesso são três conceitos fundamentais de segurança cibernética que costumam ser confundidos e usados de forma intercambiável. Apesar de serem entendidos como um único processo pelo usuário, existem distinções entre esses três conceitos, logo, é importante saber diferenciá-los para projetar um sistema efetivo de segurança. Reflita sobre o caso seguinte: você é o administrador de um sistema de banco de dados em uma empresa de desenvolvimento de software. Em determinado dia, o gerente lhe entrega uma missão: você deve criar o controle de acesso, definindo o usuário e a senha para cada funcionário. Você logo percebe que tem algo errado na fala e pergunta se ele quer que seja criado o controle de acesso ou a autenticação ao sistema. Então, seu gerente lhe questiona: “Não é tudo a mesma coisa?”, desse modo, você vê uma oportunidade de mostrar a ele seus conhecimentos. Então, apresente a diferença entre autenticação, autorização e controle de acesso, citando exemplos. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. 41 LEITURA FUNDAMENTAL Prezado aluno, as indicações a seguir podem estar disponíveis em algum dos parceiros da nossa Biblioteca Virtual (faça o log in por meio do seu AVA), e outras podem estar disponíveis em sites acadêmicos (como o SciELO), repositórios de instituições públicas, órgãos públicos, anais de eventos científicos ou periódicos científicos, todos acessíveis pela internet. Isso não significa que o protagonismo da sua jornada de autodesenvolvimento deva mudar de foco. Reconhecemos que você é a autoridade máxima da sua própria vida e deve, portanto, assumir uma postura autônoma nos estudos e na construção da sua carreira profissional. Por isso, nós o convidamos a explorar todas as possibilidades da nossa Biblioteca Virtual e além! Sucesso! Indicação 1 SQL Injection ou injeção SQL é uma técnica de ataque a sites e aplicativos web. Esse tipo de ataque tem crescido à medida que as empresas oferecem ainda mais interação em seus sites para os visitantes. Mais importante do que entender o que é SQL Injection é compreender como se proteger. Desse modo, o artigo Injeção de SQL em aplicações Web: causas e prevenção traz as características de uma injeção SQL, bem como técnicas de prevenção. Trata-se de uma leitura recomendada devido a relevância do assunto no dia a dia do administrador de banco de dados. Para acessar o artigo, busque pelo título no acervo da Universidade Federal do Rio Grande do Sul. Indicações de leitura 42 FARIAS, M. Injeção de SQL em Aplicações Web. Trabalho de Graduação - Universidade Federal do Rio Grande do Sul, Porto Alegre, 2009. Indicação 2 No livro Introdução à segurança de computadores, entre as páginas 382 e 417, o autor apresenta o conceito de criptografia bem como os diferentes tipos, classificando as criptografias simétricas e assimétricas. Ele também apresenta os conceitos de hash e assinaturas digitais. Trata-se de uma leitura fortemente recomendada devido a importância da criptografia para a segurança da informação. GOODRICH, M.; TAMASSIA, R. Introdução à segurança de computadores. Porto Alegre: Bookman, 2013. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 43 1. A injeção de SQL é uma técnica usada para explorar dados do usuário por meio de entradas de páginas da Web, injetando comandos SQL como instruções. Basicamente, essas instruções podem ser usadas para manipular o servidor web do aplicativo por usuários mal-intencionados. Sobre a injeção de SQL, assinale a alternativa correta. a. A forma primária de injeção SQL consiste em inserção indireta de código em campos de texto em formulário web. b. A forma principal de injeção SQL é a invasão do servidor de banco de dados com as credenciais de super usuário. c. A injeção SQL permite que um invasor acesse os servidores de banco de dados e execute códigos SQL. d. O servidor SQL deve estar parametrizado para evitar que a Injeção SQL seja executada por criminosos. e. O procedimento que constrói instruções SQL deve ser revisado quanto a vulnerabilidades de injeção. 2. Leia com atenção a definição de controle de acesso. “O controle de acesso é um componente fundamental da segurança de dados, que determina quem pode acessar e usar informações e recursos da empresa. Por meio de autenticação e autorização, as políticas de controle de acesso garantem que os usuários sejam quem dizem ser e que tenham acesso apropriado aos dados da empresa. O controle de acesso também pode ser aplicado para limitar o acesso físico a campi, edifícios, salas e datacenters.” Fonte: CITRIX. O que é controle de acesso. Disponível em: https://www.citrix.com/pt-br/solutions/secure-access/what-is- access-control.html. Acesso em: 29 jun. 2021. 44 Sobre controle de acesso, autenticação e autorização, assinale a alternativa correta. a. Um funcionário que pega emprestado o crachá de um amigo para ter acesso ao datacenter está quebrando o processo de autenticação. b. No controle de acesso baseado em função, o acesso se baseia em atributos como localização e horário do dia. c. Um dispositivo de autenticação que contribui para o controle de acesso é o leitor biométrico. d. A autenticação impede que dados confidenciais sejam apresentados para usuários não autenticados no sistema. e. A autorização, diferentemente da autenticação, apresenta as políticas e define quais partes do sistema umusuário pode ter acesso. GABARITO Questão 1 - Resposta E Resolução: A alternativa está correta, pois o ataque por injeção de SQL consiste em inserir diretamente código SQL em campos de formulários como entrada de texto. Desse modo, todo procedimento em uma aplicação web que execute instruções SQL precisa ser revisado, de modo a minimizar a vulnerabilidade a possíveis ataques de injeção. Questão 2 - Resposta C Resolução: A alternativa está correta, pois a autenticação pode ser física (nesse caso, trata-se de um dispositivo de leitor biométrico) ou pode ser lógica (como um campo para digitar o usuário e senha). Em ambos os casos, a autenticação é o primeiro passo para que seja aplicado o controle de acesso. 45 Depois que a autenticação é realizada com sucesso, o controle de acesso autoriza as ações do usuário mediante a regras e políticas previamente parametrizadas. BONS ESTUDOS! Apresentação da disciplina Introdução TEMA 1 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 2 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 3 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 4 Direto ao ponto Para saber mais Teoria em prática Quiz Gabarito Inicio 2: Botão TEMA 4: Botão TEMA 1: Botão TEMA 2: Botão TEMA 3: Botão TEMA 9: Inicio :