Baixe o app para aproveitar ainda mais
Prévia do material em texto
20/09/2021 1 Infraestrutura Ágil Testes Aplicados a Infraestrutura Ágil Ma. Patrícia Valério Martinez • Unidade de Ensino: 04. • Competência da Unidade: Conceito DevOps, Tipos de Testes, Técnica de Desenvolvimento, Ferramentas de Automação de Testes, Tipo de Ataques e Ferramentas de Segurança. • Resumo: O conceito de tipos e ferramentas de testes. • Palavras-chave: DevOps, Testes, ferramentas, ataques e segurança. • Título da Teleaula: Infraestutura Ágil. • Teleaula nº: 04 Contextualizando • Conceito DevOps; • Tipos de Testes; • Técnica de Desenvolvimento; • Ferramentas de Automação de Testes; • Tipo de Ataques; • Ferramentas de Segurança. Conceito DevOps • Devops é um termo criado para descrever um conjunto de práticas para integração entre as equipes de desenvolvimento de softwares, operações (infraestrutura ou sysadmin) e de apoio envolvidas (como controle de qualidade) e a adoção de processos automatizados para produção rápida e segura de aplicações e serviços. Conceito DevOps • O DevOps é uma metodologia que visa a integração entre os setores de desenvolvimento e operações. • O objetivo é agilizar e otimizar a criação e o gerenciamento da estrutura das aplicações. No caso de uma empresa de tecnologia, como uma desenvolvedora de softwares, o DevOps permite maior agilidade nas entregas. Conceito DevOps 1 2 3 4 5 6 20/09/2021 2 • Em todo o processo DevOps a palavra de ordem é velocidade. A ideia é sempre automatizar tudo quanto for possível e melhorar a velocidade das entregas, mas velocidade alta tem um custo. • Como as implantações são exponenciais, a quantidade de bugs adicionados também, não por falta de testes em si, mas por questões estatísticas. Conceito DevOps • Se antes do DevOps você tinha uma implantação por semana, agora você tem 10 por dia, querendo ou não os bugs vão vir em maior quantidade. • Temos que pensar que é necessário testar melhor o código antes de ir para dentro da esteira DevOps. Conceito DevOps • Ao invés de ter testes manuais, que vão verificar se tal funcionalidade adicionada faz o que deve, os desenvolvedores unidos com o time de operações, criam testes automatizados a medida que o código vai sendo desenvolvido e adicionado a esteira de CI/CD. • Para isso foram criadas ferramentas, técnicas e modelos que testam de maneira automatizada boa parte do código. Conceito DevOps • Os programas são instruções que um programador escreve para que uma máquina execute. E independente de qual linguagem se use para isso é inevitável que ocorram falhas nessa programação ou por um comportamento que não foi previsto pelo programador ao escrever o código ou até mesmo uma falha desconhecida de comportamento da aplicação. Conceito DevOps • Desde o início da programação de softwares, os desenvolvedores usam algum tipo de teste para verificar o comportamento do seu código. • Geralmente esses testes eram feitos de forma manual, por equipes responsáveis por testar falhas e simular problemas antes que o programa fosse liberado para ir para a produção. Conceito DevOps • Com o advento dos métodos ágeis de desenvolvimento, houve uma mudança na abordagem de como construir os testes e como aplicá-los. • Essas metodologias culminaram também no desenvolvimento da cultura DevOps, que tem como premissa, uma velocidade maior no desenvolvimento de infraestrutura para se aliar as metodologias ágeis de desenvolvimento de software. Conceito DevOps 7 8 9 10 11 12 20/09/2021 3 • Como uma das bases do DevOps é a automação, não daria para deixar os testes todos manuais, atrasando assim as entregas das versões da aplicação em produção. • Foi assim que surgiram métodos, ferramentas e técnicas para automatizar os testes e possibilitar que sejam integrados em esteiras de entrega de CI/CD. Conceito DevOps Tipos de Testes • A principal vantagem da automatização de testes é a agilidade, isso porque testes manuais são demorados e custosos para a equipe de TI e para o cliente final. • Quando a automatização é utilizada, o processo pode ser muito mais ágil e simples. • Vamos estudar quais tipos de testes normalmente se usam em DevOps. Tipos de Testes • Testes Unitários: este teste é o mais básico teste que se pode criar em uma aplicação, ele diz respeito principalmente a funcionalidade que se está desenvolvendo. Pode ser um método ou até uma classe toda, o importante aqui é passar valores diferentes para essa unidade e testar se o retorno é o esperado. É o desenvolvedor que diz o que é uma unidade para ele dentro do sistema, mas o importante é não ser algo muito grande, para evitar que o teste não seja efetivo. Tipos de Testes – Unitário • Por ser um teste pequeno esse é o tipo de teste que mais se encontra nos sistemas e hoje existem diversas ferramentas para ajudar na criação deles. • O foco do teste unitário é testar uma função específica, mesmo que ela precise acessar informações de banco de dados, as ferramentas conseguem criar dados falsos para os testes, para que um problema de acesso ao dado, não afete os testes. Tipos de Testes – Unitário • Se a classe possui seu teste unitário, ele é conhecido como um código coberto e o índice de cobertura de um código é a quantidade de testes existentes pela quantidade de classes disponíveis no sistema. Tipos de Testes – Unitário 13 14 15 16 17 18 20/09/2021 4 • Testes de Integração: o foco é nas relações das classes em si, as que já existem no sistema e as que estão entrando. Por exemplo, se você está desenvolvendo uma nova funcionalidade que envia e-mail aos clientes se determinado evento ocorre, toda as classes envolvidas no seu código devem ser testadas, como cadastro do cliente, recuperação desses dados de um banco de dados, o evento que dispara os e-mails e etc. Toda essa relação deve funcionar com dados diferentes, simulando diversas situações. Tipos de Testes – Integração • Os testes de integração costumam ser bem mais demorados que os testes unitários e por isso devem ser feitos com cuidado para não demorarem demais. Tipos de Testes – Integração • Testes Funcionais: nestes testes o foco é verificar como o sistema se comporta quando dados inesperados forem passados a ele. Como por exemplo, uma função que faz multiplicação receber o valor “zero” que é impossível de se calcular, ou um campo de e-mail receber um e-mail inválido. A ideia aqui é testar se aquela funcionalidade está preparada para tratar valores falsos ou incorretos e qual será o seu comportamento, se ele vai falhar, se ele foi projetado para tratar esses erros, qual mensagem dispara ao usuário no caso deles ocorrerem. Tipos de Testes – Funcionais • Testes de desempenho: chamado também de teste de stress e carga, serve para testar cargas altíssimas no sistema e ver como será o seu comportamento. Geralmente feito em sistemas web, para verificar até onde o sistema consegue receber e tratar requisições de maneira correta até falhar. Ferramentas testam o acesso simultâneo e determinam quantos acessos, sem falhar, aquele sistema suporta. Depois, de posse desses dados, os analistas de infraestrutura podem configurar corretamente um ambiente de produção com base nos acessos diários que eles recebem. Tipos de Testes – Desempenho • Teste de Interface de Usuário (UI): são usados para testar a interface da aplicação que o usuário tem acesso, simulando um acesso real, clicando em telas, preenchendo campos e verificando o retorno da aplicação. Dentro do conceito DevOps, também existem ferramentas para simular o acesso as telas, como se fosse um usuário. Nestes testes, o foco é verificar se alguma funcionalidade adicionada a interface está funcionando conforme o esperado e está trazendo os dados que foi programada para trazer. Tipos de Testes – Interface de Usuário • Testes Fim a Fim: são conhecidos também como testes de sistema ou end-to-end que serve para testar o sistema como um todo. Esse teste é muito custosoem tempo e geralmente é feito em mudanças críticas que alteram a versão da aplicação e muda algo crítico ao funcionamento do sistema como um todo. Tipos de Testes – Fim a Fim 19 20 21 22 23 24 20/09/2021 5 • Time de Qualidade do Software: dentro das empresas, normalmente se tem um time de desenvolvedores responsável por realizar essa bateria de testes ou verificar se foram feitos corretamente pelos outros desenvolvedores. Tudo para garantir que nenhum Bug facilmente detectável passe despercebido e acabe sendo alertado pelo cliente, o que é péssimo para a imagem da empresa, que passa descuido no desenvolvimento. Esse time é o QA ou Quality Assurance ou Qualidade do Software. Tipos de Testes – QA • O time de QA é um time de desenvolvedores focados em entregar qualidade para o código. Geralmente utilizando ferramentas que testam se os requisitos pedidos foram atendidos ou não. Também são eles responsáveis por garantir que o código não vai aceitar dados estranhos e para isso eles também usam de testes que simulam dados que não deveriam jamais serem aceitos pelo sistema, para verificar seu comportamento. Tipos de Testes – QA • Os sistemas são feitos para uma determinada função, que caso aceite dados estranhos, podem causar um comportamento completamente errado e até travamentos, como num caso de um sistema que faz a multiplicação de números, aceitar receber o número zero ou um aceitar letras ao invés de números. Tipos de Testes – QA • Os testes são importantes dentro do conceito do mundo DevOps e ele é muito importante quando se une as automações e a todo o processo de desenvolvimento de software. Tipos de Testes Técnica de Desenvolvimento • Dentro do desenvolvimento ágil, muita coisa mudou do método tradicional e os testes também não fugiram a regra, e hoje em dia, técnicas avançadas de desenvolvimento voltadas a testes são usadas para melhorar e até prever falhas em softwares. • As mais conhecidas e usadas são as TDD (Test Driven Development) ou Desenvolvimento Dirigido a Testes e a BDD (Behavior Driven Development) ou Desenvolvimento dirigido a comportamento. Técnica de Desenvolvimento 25 26 27 28 29 30 20/09/2021 6 • Essas técnicas de desenvolvimento são amplamente utilizadas no mercado e ambas têm um foco diferente ao começar o desenvolvimento. • Antes das técnicas ágeis de desenvolvimento, um analista de negócio, entenderia com o cliente o que ele precisava e transformaria isso em requisitos para a equipe de desenvolvimento, que então trabalharia para codificar isso. Técnica de Desenvolvimento • Esse método geralmente acabava desenvolvendo um código que não era exatamente aquilo que o cliente tinha pedido e em um tempo relativamente grande para entrega. Imagina as diversas frustrações, quando você precisava de uma funcionalidade, esperava meses e quando concluída não era nada do que você tinha pedido. Técnica de Desenvolvimento • Com o inicio das técnicas ágeis, isso mudou muito e pequenas funcionalidades são desenvolvidas e lançadas rapidamente, permitindo assim que o software evolua muito mais rápido e as falhas corrigidas dinamicamente. Então o processo de criação de requisitos mudou também, para pequenas tarefas e elas por sua vez, vão se juntando para criar a funcionalidade esperada. Técnica de Desenvolvimento • TDD – Desenvolvimento Orientado a Testes: foi a primeira técnica de desenvolvimento focado exclusivamente em testes, a ideia é orientar todo o desenvolvimento de softwares por testes. Isso significa que o processo de criação do código, passa a ser primeiro criar testes e depois criar o código em si. Isso pode parecer impossível, mas faz sentido quando vemos casos reais de teste. Técnica de Desenvolvimento – TDD • A técnica TDD foi proposta por Beck, no seu livro Tdd - Desenvolvimento Guiado Por Testes e trazia uma forma diferente de encarar como se desenvolve software. • Imagine se as tarefas pudessem ser criadas e ao mesmo tempo testadas. Técnica de Desenvolvimento – TDD • Essa é a ideia por traz do TDD, começar o desenvolvimento pelos casos de testes, implementando a partir deles, os métodos, classes e objetos e assim ir avançando para chegar ao nível de ter as funcionalidades atendidas. • Mas como podemos escrever testes antes de termos um código? Parece complicado, mas na verdade é simples, focando os esforços nos requisitos, ou seja, no que o sistema tem que fazer, antes de desenvolver o código propriamente dito. Técnica de Desenvolvimento – TDD 31 32 33 34 35 36 20/09/2021 7 • Os passos do TDD são: o Crie um teste que valide o requisito; o Crie o código que passe no teste; o Refatore o código, atualizando-o. Técnica de Desenvolvimento – TDD • BDD – Desenvolvimento Orientado à Comportamento: é uma evolução do TDD, levando em conta uma série de problemas enfrentados pelos desenvolvedores, proposto primeiramente por North. Ele relata os problemas reais enfrentados por ele ao tentar usar a técnica do TDD. Técnica de Desenvolvimento – BDD • Um dos grandes problemas enfrentados pelos desenvolvedores e o time de qualidade é que nem sempre eles têm uma interação boa o suficiente dentro dos projetos em TDD, pois eles criam os testes, baseados nos requisitos e enviam para o time de desenvolvimento para criar o código. E isso acabava gerando lacunas entre o que era testado e o que era desenvolvido. Técnica de Desenvolvimento – BDD • Para resolver esse problema, uma melhor interação entre os requisitos e os testes criados. E também uma forma padronizada de escrever os cenários de testes, com uma linguagem específica. • Essa linguagem e esse padrão, deram um enorme avanço para as ferramentas que automatizaram esse processo, já que, com uma forma única de escrever os cenários, podemos usar como entrada para as ferramentas de criação de teste. Técnica de Desenvolvimento – BDD • A linguagem adotada dentro de todo o escopo do desenvolvimento, desde seu levantamento de requisitos, seu desenvolvimento, até seu controle de qualidade, elimina algumas falhas na comunicação entre as equipes, como se fosse a união do DevOps com o QA (Time de Qualidade). • Assim o analista de requisitos, os desenvolvedores e os testadores conseguem falar a mesma língua quando as pessoas de tecnologia se dirigem aos negócio. Técnica de Desenvolvimento – BDD • Foi proposto uma forma de descrever as funcionalidades: o Funcionalidade: Descrever o que a funcionalidade deve fazer. o Como: Quem executa essa funcionalidade. o Eu quero: O que essa pessoa espera da funcionalidade. Técnica de Desenvolvimento – BDD 37 38 39 40 41 42 20/09/2021 8 o De modo que: A descrição do resultado que se espera alcançar com a funcionalidade. Técnica de Desenvolvimento – BDD • Um modelo de criação de cenários chamado given-when-then ou dado-quando-então: o Dado: contexto inicial X (givens); o E: mais itens do contexto; o Quando: Y ocorre; o Então: garanta Z resultado. Técnica de Desenvolvimento – BDD Segue abaixo o exemplo: o Funcionalidade: Abertura de conta corrente; o Como: Gerente de banco; o Eu quero: Cadastrar as informações do cliente; o Para: Abrir uma conta bancária para ele. Técnica de Desenvolvimento – BDD • Cenário 1 Cliente com dados corretos: o Dado que: O cliente deseja abrir uma conta. o E informou CPF correto. o E informou RG correto. o E informou endereço completo correto. o Quando: Entrar com essas informações no cadastro. o Então: A conta deve ser criada com os dados dele. Técnica de Desenvolvimento – BDD • Cenário 2 Cliente já cadastrado no sistema: o Dado que: O cliente deseja abrir uma conta. o E Informou um CPF correto, mas existente no sistema. o Quando: Entrar com essas informações no cadastro. o Então: Não será cadastrado o cliente no sistema e o sistema deve avisar o cliente. Técnica de Desenvolvimento – BDD • Depois que os cenários foram desenhados, o BDD funciona exatamente como no TDD, ou seja, a partirdos cenários se desenha os testes que vão cumprir os cenários e com os testes funcionando se complementa as classes que vão cumprir os requisitos. Técnica de Desenvolvimento – BDD 43 44 45 46 47 48 20/09/2021 9 • O levantamento de requisitos usando o BDD deve seguir uma estrutura de descrever uma funcionalidade, detalhar o comportamento dessa funcionalidade através de cenários, detalhar todos os cenários possíveis para aquela funcionalidade, mapear os cenários em classes de testes automatizados, implementar o código que resolve os testes com sucesso e refatorar o código tornando-o melhor. Técnica de Desenvolvimento – BDD • Usar TDD e BDD ajuda melhorar a qualidade do produto de uma forma geral pois incentiva a colaboração da equipe e promovendo o alinhamento do conhecimento desde o início. Técnica de Desenvolvimento Infográfico – Tipos de Testes • Um desenvolvedor cria uma funcionalidade para o sistema e baseado nela, ele cria um teste que vai verificar apenas, se ela cumpre exatamente o que foi proposto nos requisitos, ignorando as conexões que essa funcionalidade fará com outras. • Qual o tipo de teste se refere o texto? Descrição da Situação Problema • O Teste unitário, pois é criado para testar apenas o comportamento de uma funcionalidade, uma classe, ou método. • É uma prática de desenvolvimento de software onde os desenvolvedores, com frequência, unem as suas alterações de código em um repositório central onde são aplicados os testes automatizados antes do deploy da aplicação. Solução da Situação Problema • O teste unitário consiste em verificar o comportamento das menores unidades em sua aplicação. Tecnicamente, isso seria uma classe ou até mesmo um método de classe em línguas orientadas a objetos e seria um procedimento ou função em línguas processuais e funcionais. Solução da Situação Problema 49 50 51 52 53 54 20/09/2021 10 • Os testes unitários procuram aferir a corretude do código, em sua menor fração. Em linguagens orientadas a objetos, essa menor parte do código pode ser um método de uma classe. Sendo assim, os testes unitários são aplicados a esses métodos, a partir da criação de classes de testes. Solução da Situação Problema • O foco do teste unitário é a garantia de conformidade para que quando for necessário fazer alterações em um código, seja por motivos de manutenção ou atualização, essas alterações não provoquem outros problemas, gerando uma reação em cadeia. Solução da Situação Problema Ferramentas de Automação de Testes • O processo de automação de testes consiste no uso de softwares específicos capazes de controlar e gerenciar determinados testes. Isso é possível a partir da aplicação de estratégias e algumas ferramentas que facilitam a comparação entre resultados previstos e resultados reais. • Vamos conhecer algumas ferramentas de automação de testes. Ferramentas de Automação de Testes • Cucumber: é uma ferramenta de código aberto, criada para automatizar e auxiliar no BDD, usando o conceito de escrita de funcionalidade e cenários, para criar testes e os esqueletos das classes que serão criadas pelos desenvolvedores. Uma vantagem com o cucumber é a possibilidade de escrever os cenários em diversos idiomas até o Português Brasil. Ferramentas de Testes – Cucumber Ferramentas de Testes – Cucumber • Exemplo de um código escrito no Cucumber: 55 56 57 58 59 60 20/09/2021 11 • Ao descrever a funcionalidade, perceba que o cucumber já reconhece as palavras chave especiais que são usadas por ele para montar os testes. • A estrutura do teste foi montada, você deve criar a classe que irá executar a tarefa do teste e ao rodar o Cucumber init, ele traz um resumo de como deve ser implementado as classes e métodos. Ferramentas de Testes – Cucumber Ferramentas de Testes – Cucumber • Os Frameworkings criados para auxiliar na escrita e automação de testes são: o JUnit para Java; o PyUnit para Python; o Jasmine para Javascript. • Todos esses frameworks trabalham no modelo BDD e auxiliam o desenvolvimento a partir das criações dos testes, porém focados nas linguagens específicas. Ferramentas de Automação de Testes • Tricentis Tosca: ferramenta de testes de software de ponta a ponta, diferencial dela é possuir uma interface web para configuração e programação automatizada dos testes. Ferramentas de Testes – Tricentis Tosca • Apache Jmeter e Neotys Neoload: ferramentas largamente usadas para realizar testes de carga ou stress em aplicações web, possui uma interface que permite configurar periodicidade de testes, tamanho de cargas enviadas por determinado tempo e e traz relatórios de carga. • A Neoload é usada para testar APIs, serve como teste de carga e stress porém específica para testes usando Restful. Ferramentas de Automação de Testes • Selenium e katalon: ferramentas de testes de interface de usuário, são usadas para automatizar acessos pela interface, simulando usuários reais. Usados principalmente para verificar se funcionalidades da interface estão retornando os dados esperados. Elas podem acessar sistemas Web e clicar em diversos pontos da tela, simulando exatamente como um usuário faria. Além disso também são usadas para fazer testes de stress e carga na interface do usuário. Ferramentas de Automação de Testes 61 62 63 64 65 66 20/09/2021 12 • Sonarqube: uma ferramenta de qualidade muito usada no mercado, ela é capaz de medir a quantidade de cobertura de um código, ou seja, a quantidade de testes existentes pela quantidade de código existente. Isso é importante pois a empresa pode definir uma política de cobertura, por exemplo acima 80% para que o código prossiga para as outras etapas da esteira e o Sonarqube consegue fazer isso barrando código fora de um percentual de cobertura configurado. Ferramentas de Testes – Sonarqube • Possui uma forma de detectar bugs, brechas conhecidas de segurança, código duplicado, padrões incorretos e vulnerabilidades de segurança conhecidas, como senhas em texto claro dentro do código ou pacotes com código malicioso. • Ela é realmente um canivete suíço para as equipes de qualidade, testes e operações, possuindo diversas ferramentas disponíveis para análise do código. Ferramentas de Testes – Sonarqube • Possui uma interface gráfica, onde é possível ver os relatórios de cobertura e brechas de segurança: Ferramentas de Testes – Sonarqube • Na imagem, o Sonarqube detectou que não tem nenhum Bug ou vulnerabilidade detectada, tem apenas 2% de cobertura de testes e 1,7% de código repetido. • Os code smells, são características de um código que possivelmente estão com problemas mais profundos que o Sonarqube não conseguiu determinar ao certo. Ferramentas de Testes – Sonarqube • Na figura a seguir é apresentado um código que detectou 2 bugs, 37 code-smells, 13.6% de cobertura de testes e 26% de código duplicado. • Indica uma necessidade de refatoração, melhorando a escrita do código para evitar duplicações. Ferramentas de Testes – Sonarqube Ferramentas de Testes – Sonarqube 67 68 69 70 71 72 20/09/2021 13 • Nesta sessão vimos como podemos utilizar ferramentas para criar e automatizar a criação e execução de testes, integrando com qualquer esteira de entrega de software. Ferramentas de Automação de Testes Principais Tipos de Ataques • Ataques Hackers têm se intensificado e inovado. Estar preparado para eles é um dos itens mais importantes atualmente. • Vamos tratar de alguns dos tipos desses ataques e ver como negligenciar essa área pode custar muito caro. Principais Tipos de Ataques • Os anos de 2020 e 2021 foram anos marcados por dois fenômenos, o primeiro uma pandemia mundial, causado por um vírus que fez com que o mundo inteiro parasse sua economia e milhões de vidas fossem perdidas. • O segundo foi a pandemia de ataques cibernéticos no mundo, durante a pandemia da Covid-19, o número de ataques foi maior que os últimos 15 anos somados. Principais Tipos deAtaques • Alguns ataques causaram enormes prejuízos e até causaram problemas diplomáticos entre países. Principais Tipos de Ataques • DDoS (Distributed Deny of Service): ataque de negação de serviço é basicamente sobrecarregar o sistema com tantas requisições que ele não consiga mais responder a requisições legítimas dos usuários, fazendo com que o sistema fique fora do ar. Ataque – DDoS 73 74 75 76 77 78 20/09/2021 14 • Scanner de Portas: esse ataque basicamente procura por portas conhecidas que normalmente são usadas por servidores, para a partir delas se procurar vulnerabilidades e explorá-las. • Portas preferenciais desse tipo de ataque são a 80/443, portas usadas para servir páginas na internet e porta 22, usadas por serviço de SSH, que provê uma forma de conexão remota a administradores dos servidores. Ataque – Scanner de Portas • Ransoware (Sequestro de dados): um dos ataques mais difundidos ultimamente, trata de roubar e criptografar os dados da vítima, exigindo um pagamento para que seja descriptografado. • Grandes empresas tem caído nesse golpe e cada vez mas espaço entre os ataques cibernéticos. Ataque – Ransoware • Ataques de Força Bruta: esse ataque é semelhante ao ato de tentar forçar uma porta trancada até ela abrir. Usando ferramentas específicas para testar diversas combinações de usuário e senha, o atacante força até acertar a combinação. Apesar de ser um ataque bem antigo e conhecido, muitas empresas ainda caem nele, por não adotarem uma política de troca e complexidade de senhas e um colaborador pode colocar uma senha fraca, comprometendo toda a segurança da empresa. Ataque – Força Bruta • Phishing: esse ataque é geralmente feito por e-mail e funciona tentando capturar dados sigilosos dos usuários, utilizando iscas para que eles cliquem em links suspeitos sem se dar conta e passem informações ao atacante. Ataque – Phishing • Clonagem de Aplicativo de Mensagens: atacantes entram em contato inventando uma história para que o usuário passe o código de recuperação do aplicativo, a vítima sem se dar conta do golpe passa o código e a partir desse momento o criminoso tem acesso as mensagens do usuário e os contatos da agenda e começa a passar mensagens falsas aos contatos pedindo dinheiro emprestado ou nos casos mais sofisticados, procurando dados relevantes como senhas e usuários de sistemas enviados pelo aplicativo. Ataque – Clonagem de Aplicativo de Mensagens • Cryptojacking: é a mineração de crypto moedas em servidores sem seu consentimento. O ataque funciona invadindo um computador ou servidor e instalando um software malicioso que fica utilizando o poder de computação (CPU) da máquina para minerar cripto moedas em nome do atacante, degradando a performance e causando problemas para a aplicação normal do servidor responder já que está competindo com a aplicação maliciosa. Ataque – Cryptojacking 79 80 81 82 83 84 20/09/2021 15 • Keylogger e Screenlogger: é um programa malicioso que grava tudo o que é digitado pelo usuário, fazendo com que o atacante tenha acesso as senhas e usuários de acesso que a pessoa digita, o Keylogger. • Tem a variante dele que grava tudo que o usuário ve na tela o Screenlogger. Ataque – Keylogger e Screenlogger • Cross-site Scripting (XSS): forma de injetar códigos em páginas Web no servidor, utilizando o navegador. Executando sequestros de cookies de sessão, keyloggers e redirecionamento de páginas. Ataque – Cross-site Scripting • Dafacement: é uma técnica de alteração de estruturas de uma página Web, muito utilizadas por hackers que conseguem invadir a parte administrativa da página, possibilitando que se coloque informações que o site não possuía esse tipo de ataque é vulgarmente conhecido como pichação de sites porque é semelhante ao ato de se vandalizar um muro, com a diferença que se vandaliza o site. Esse ataque tem cunho político ou ativista, com o intuito de ridicularizar a segurança do site ou deixar uma mensagem. Ataque – Dafacement • Existem centenas de tipos e ataques conhecidos, além de sempre estar sendo criados novos, por isso é importante sempre estar atualizado e manter a segurança em todo o ciclo do desenvolvimento de software. Principais Tipos de Ataques Ferramentas de Segurança • Um problema comum que ocorre no desenvolvimento de software é o desenvolvedor só se preocupar com a funcionalidade dela e deixar de lado o quesito segurança, que na mente de muitos desenvolvedores, não é uma preocupação dele e sim de uma equipe específica para isso. A cada linha de comando inserido ao desenvolver um software, temos que pensar como aquela funcionalidade pode estar criando uma brecha de segurança que pode inviabilizar todo o projeto. Ferramentas de Segurança 85 86 87 88 89 90 20/09/2021 16 • Por exemplo, falhas ao desenvolver uma página de login pode abrir brechas de XSS, permitindo um atacante executar código malicioso dentro de um site ou até fazer login dentro do sistema sem ter o acesso permitido. • Nesta sessão vamos aprender quais ferramentas existem para nos ajudar a mitigar os problemas de segurança. Ferramentas de Segurança • Hoje em dia costuma utilizar o termo DevSecOps, que seria entender que a segurança deve permear todo o ciclo de DevOps em todas as suas etapas. • Dentro do DevSecOps, as ferramentas que são usadas para segurança são chamadas de Application Security Testing (AST) ou Testes de segurança de aplicativos. E, são divididas em diversas categorias que dependem de onde estão sendo utilizadas e para qual finalidade. Ferramentas de Segurança Pirâmide das Ferramentas de AST • Teste estático de segurança de aplicações (SAST): este tipo de aplicação, testa a segurança conhecendo as informações sobre o sistema, são tipos de testes chamados de White Hat (Chapéu branco) ou Caixa Branca, que testam a segurança internamente ao sistema, montando uma arquitetura a ser testada e tem acesso ao código fonte criado pelo desenvolvedor. Ferramentas de Segurança • Como esses testes são específicos por linguagens de programação, cada uma dela vai possuir uma ferramenta específica, vamos citar algumas: o .Net Security Guard usada para .Net, C# e VB.Net. o Agnitio usada para ASP, ASP.NET, C\#, Java, Javascript e etc. Ferramentas de Segurança o DevBug usada para PHP. o GolangCI-Lint usada para Golang. o Google CodeSearchDiggity usada principalmente para identificar possíveis brechas de XSS no código. o Horusec usada em Python, Ruby, Javascript e etc. Ferramentas de Segurança 91 92 93 94 95 96 20/09/2021 17 • Teste de segurança de aplicativo dinâmico (DAST): funciona com o chamado teste de caixa preta (Black box) ou Chapéu preto (Black hat), já que não se tem o conhecimento prévio do sistema ou do código fonte. Elas detectam vulnerabilidades de segurança de uma aplicação em execução, para verificar respostas de interfaces, solicitações, scripts e etc. Procurando se é possível injeções de dados, roubo de sessões e autenticação. Ferramentas de Segurança • Ferramenta dessa classe: o Netsparker é um scanner de vulnerabilidade, apontando falhas em um dashboard interativo. Ferramentas de Segurança Dashboard Netsparker • Acunetix Vulnerability Scanner outro scanner bem utilizado que possui também um dashboard interativo e pode ser incluído em pipelines de entrega. • Veracode Dynamic Analysis é uma ferramenta usada para web applications e também bem integrada com pipelines Devops. Ferramentas de Segurança • Análise de Composição de Software (SCA): Todo o software utiliza bibliotecas que não são por padrão criadas pelo desenvolvedor, usar itens que já foram criados auxilia a produtividade, já que não é necessário ficar quebrando a cabeça para inventar aquilo que já existe. As bibliotecas importadas para o código podem conter vulnerabilidades. Para verificar isso, que servem essas ferramenta do tipo SCA, elas buscam dentro do código, bibliotecas importadas quepossuem vulnerabilidades conhecidas e verifica se estão em conformidade com as licenças utilizadas na empresa. Ferramentas de Segurança • Ferramentas do tipo SCA: o Whitesource ferramenta muito utilizada para detectar vulnerabilidades em bibliotecas open source e se integra com facilidade em pipelines de entrega. o Sonatype um catálogo gigante de bibliotecas das mais diversas linguagens de programação, para detectar vulnerabilidades em bibliotecas públicas. Ferramentas de Segurança 97 98 99 100 101 102 20/09/2021 18 • Varredura de Segurança de Banco de Dados: as ferramentas fazem uma varredura em banco de dados, para verificar falhas que podem afetar a sua segurança, como versões desatualizadas, patches não aplicados, senhas fracas, erros de configuração e problemas com ACL (Listas de controle de acesso). Ferramentas de Segurança • As ferramentas de Varredura de Segurança de Banco de Dados: o Scuba usado em diversos sistemas de banco de dados, ele analisa mais de 2.000 problemas conhecidos de configuração incorreta e vulnerabilidades. Ferramentas de Segurança o MSSQL DataMask usado para verificar vulnerabilidades em Microsoft SQL servers. o BSQL Hacker é uma ferramenta para testar injeções de SQL e suas variações e ótimo para testar falhas de configuração de acesso a banco de dados. o Oracle auditing tools ferramenta usada nos bancos Oracle para verificar ataques de senha e usuário fracos, testes de configurações e vulnerabilidades. Ferramentas de Segurança • O objetivo de uma pipeline é automatizar o processo de entrega de software em produção de forma rápida, ao mesmo tempo garantindo sua estabilidade, qualidade e resiliência. • DevSecOps integra a segurança ao desenvolvimento de aplicativos do início ao fim. Essa integração no pipeline requer que a organização adote uma nova mentalidade, assim como novas ferramentas. Pipeline DevSecOps • Os principais pontos da pipeline DevSecOps : o Codar: na parte de codificar, os testes de SAST são os que devem ter maior quantidade, justamente por serem os que testam o código em si. o Buildar: na parte do empacotamento ainda existem testes de SAST, mas os que prevalecem são os DAST e os SCA. Pipeline DevSecOps o Testar: na parte de testes, ainda podemos incluir mais DAST e Pentests. o Liberar: nessa parte podemos rodar testes de compliance, para verificar se o código está em conformidade com algumas regras da empresa, bibliotecas e licenças. o Implantar: nessa parte podemos rodar testes de código de infraestrutura e de imagens docker. Pipeline DevSecOps 103 104 105 106 107 108 20/09/2021 19 o Monitorar: com a aplicação em ambiente de produção, devemos ter SIEM, para correlacionar algum problema de segurança ou ataques. Pipeline DevSecOps Pipeline DevSecOps • O delicado equilíbrio entre privacidade e segurança é a chave para a criação de aplicativos e serviços de sucesso que normalmente requerem dados do usuário. A má implementação de padrões de segurança pode colocar os usuários e dados em risco. • O DevSecOps permite que esse equilíbrio seja alcançado e garante que os dados do usuário sejam protegidos. DevSecOps Infográfico – Tipos de Ataques • Os ataques é uma ação praticada por hackers que consiste na transmissão de vírus (arquivos maliciosos) que infectam, danificam e roubam informações de computadores e demais bancos de dados online, por exemplo. • Pesquise sobre alguns ataques e quais foram as suas consequências. Descrição da Situação Problema • Hackers iranianos atacam o site do programa de bibliotecas do governo dos EUA: em 6 de Janeiro de 2020, hackers iranianos atacaram o site do programa Bibliotecas de Depósitos Federais dos Estados Unidos, causando um dafacement, chamado também de pichação, quando o atacante altera dados de site. No ataque em questão, foram alterados páginas e colocado mensagens de apoio ao General Soleimani, morto em 3 de janeiro daquele ano em um ataque dos EUA. Solução da Situação Problema 109 110 111 112 113 114 20/09/2021 20 • DDoS contra a Amazon: um ataque DDoS massivo contra a Amazon, foi interceptado e a empresa fez um relatório do tamanho do ataque, foi 2,3 terabits por segundo e a taxa de encaminhamento de pacotes de 293,1 Mbps. O ataque foi considerado o maior ataque DDoS da história. Solução da Situação Problema • Ataque a GoDaddy: é uma das maiores empresas de hospedagem do mundo. Ocorreu um incidente de violação de dados, permitindo um atacante a invadir credenciais expostas dos usuários do site. O Grande problema foi a demora da GoDaddy em descobrir a falha, o incidente ocorreu em 19 de outubro de 2019, mas só foi corrigida dia 23 de abril de 2020, essa demora leva aos cibercriminosos a vender as credenciais na Deepweb e lucrar durante o tempo que a violação ficou exposta. Solução da Situação Problema • Ransomware na W&T Offshore: a gigante do petróleo e Gás teve um sequestro de 800GB de dados confidenciais como Extratos de reconcialiação bancária, modelos de análise de risco, relatórios de dívidas. Apesar de ocorrer uma negociação com os criminosos, foi liberado 10GB desses dados na Deepweb. Solução da Situação Problema • Ransomware no banco BCR: um dos maiores ataques de Ransoware da história, hackers sequestraram cerca de 11 milhões de dados de cartão de crédito do Banco da Costa Rica (BCR) um banco estatal, mas que possue cerca de 140 mil clientes Americano. Após o banco negar o vazamento, hackers compartilharam 240 números de cartão, com datas de validade e CVV (O código de verificação), para provar que estavam falando sério. O ataque causou um prejuízo bilionário ao banco. Solução da Situação Problema • Alguns ataques cibernéticos, geraram não só prejuízos, mas problemas na infraestrutura crítica, como no ataque a seguir: o Ataque fecha Óleoduto nos EUA: um ataque hacker parou um dos maiores óleodutos dos EUA, que fornecem combustíveis para praticamente o país inteiro. Esse ataque levou a atrasos e mudanças de vôos, gerou pânico de desabastecimento em pessoas, que saíram para tentar comprar o restante de combustíveis nos postos. Solução da Situação Problema • Tentativa de envenenamento da água na Flórida: um hacker invadiu o sistema de abastecimento de água da florida e aumentou o nível de hidróxido de sódio e soda cáustica para 100 vezes o nível normal. O operador percebeu a alteração e voltou aos níveis normais, antes de causar algum problema maior, mas ficou claro a vulnerabilidade do sistema. Solução da Situação Problema 115 116 117 118 119 120 20/09/2021 21 • Os exemplos são inúmeros, mas já percebemos que o quesito segurança da informação, não é apenas um adendo ao desenvolvimento de software, mas é obrigatório. • Profissionais da área, vão ser cada vez mais requisitados para governos e empresas privadas, ter um pipeline DevOps configurado para levar a segurança a sério e é uma obrigação de todos os profissionais de tecnologia nesse mundo extremamente conectado. Solução da Situação Problema Recapitulando Recapitulando • Conceito DevOps; • Tipos de Testes; • Técnica de Desenvolvimento; • Ferramentas de Automação de Testes; • Tipo de Ataques; • Ferramentas de Segurança. Siga em frente e bons estudos! Obrigada! 121 122 123 124
Compartilhar