Segurança na nuvem: gerenciamento de chaves e criptografia

No último post da série sobre computação em nuvem para iniciantes, analisamos as particularidades dos microsserviços e os recursos necessários para seu bom funcionamento. Neste post, abordaremos as questões que envolvem a segurança e criptografia na computação em nuvem. E vamos “começar do começo”, por assim dizer. Por exemplo, em criptografia, uma chave é um pedaço de informação (um parâmetro) que determina a função de um algoritmo criptográfico. E ela pode ser de dois tipos: simétricas e assimétricas, e também possuir várias propriedades, a depender da função pretendida, como comprimento e período criptográfico.

Fonte: elven.works

Para os algoritmos de criptografia, uma chave especifica a transformação de texto simples em texto cifrado, e vice-versa para os algoritmos de descriptografia. Essas chaves são necessárias para um algoritmo criptográfico funcionar, e podem ser compostas por uma palavra, número ou frase para criptografar o texto simples. Todas as chaves possíveis e todos os protocolos que fazem um algoritmo criptográfico funcionar compõem o que é chamado de criptosistema ou sistema criptográfico. 


Gerenciamento de chaves


Para gerenciar chaves criptográficas é importante que todas as chaves sejam armazenadas em vault criptográfico – vault (de “cofre” em inglês) é uma ferramenta para acessar “segredos” com segurança. Um “segredo” no contexto de criptografia é qualquer coisa que se deseje controlar rigidamente o acesso, como chaves de API, senhas ou certificados disponíveis no módulo de segurança de hardware (HSM) ou serviço criptográfico isolado. Um módulo de segurança de hardware (HSM) é um dispositivo físico que fornece segurança extra para dados confidenciais. Este tipo de dispositivo é usado para fornecer chaves criptográficas para funções críticas, como criptografia, descriptografia e autenticação para o uso de aplicativos, identidades e bancos de dados. No mercado financeiro é comum encontrarmos o uso de HSM para transações envolvendo cartões de crédito, por exemplo.

É aí que o gerenciamento de chaves torna-se fundamental para a segurança de um criptosistema. O gerenciamento inclui lidar com a geração, troca, armazenamento, uso e substituição de chaves conforme a necessidade em nível de usuário. Um sistema de gerenciamento de chaves também inclui servidores de chaves, procedimentos e protocolos de usuário, incluindo design de protocolo criptográfico. É o lado mais desafiador da criptografia na medida em que envolve aspectos de engenharia social, como política do sistema, treinamento do usuário, interações organizacionais e departamentais e sobretudo a coordenação entre todos esses elementos, em contraste com as práticas matemáticas puras que podem ser automatizadas.

O gerenciamento de chaves é importante porque assegura uma criptografia forte de dados. Além disso, garante a conformidade regulatória e protege os dados de riscos apresentados por usuários com privilégios. Dessa forma, ser capaz de possuir e gerenciar as chaves de criptografia torna-se crucial para atender aos padrões de conformidade e regulação da rede. O Cloud KMS, do Google, é um serviço que permite gerenciar chaves criptográficas para serviços tanto na nuvem como on-premises.

Na AWS, o Key Management Service (KMS) facilita a criação e o gerenciamento de chaves criptográficas e o controle do seu uso em uma ampla variedade de serviços da AWS e em seus aplicativos. Na Microsoft, o Azure Key Vault é um serviço de nuvem que protege chaves de criptografia e segredos como certificados, strings de conexão e senhas. Como esses dados são sensíveis e essenciais para os negócios, o usuário precisa proteger o acesso aos seus key vaults, permitindo apenas aplicativos e usuários autorizados.

Além de ferramentas sofisticadas de criptografia e gestão de chaves, é importante ter atenção com alguns erros básicos, como repositórios de código. Com muita frequência são armazenadas chaves de acesso de provedores de nuvem em repositórios públicos no Github, Bitbucket e outros serviços de hospedagem Git.

Há inúmeros robôs (bots) percorrendo repositórios de código públicos e procurando credenciais de nuvem para utilização indevida. Uma chave de acesso de administrador pode em poucos minutos criar dezenas de servidores que serão utilizados para fins maliciosos e trarão pesados custos de infraestrutura para a empresa que expôs suas credenciais.


Gestão de acessos a VPN


Uma rede privada virtual (VPN), como o nome sugere, oferece uma rede privada a partir de uma conexão pública com a Internet, para que o usuário possa contar com privacidade online e anonimato. As VPNs basicamente mascaram, portanto, o endereço de protocolo da Internet (IP), de tal forma que as ações de seus usuários conectados sejam virtualmente impossíveis de rastrear. Já o chamado monitoramento de conexão VPN assegura que a rede privada se mantenha protegida de intrusos enquanto os dados transferidos pela rede do usuário são criptografados e transmitidos rapidamente.

Os dados são compostos pelo rastreamento de diferentes conexões, caminhos e túneis, a partir de diversas métricas de desempenho. Um serviço VPN pode monitorar ou registrar todas as atividades da Internet que acontecem no servidor; por essa razão, é sempre bom ter cuidado ao usar VPNs grátis, uma vez que elas podem vender os dados para anunciantes e terceiros.

Uma prática muito mais recomendável é configurar serviços de VPN dentro de contas de nuvem que você controla. Assim a gestão dos dados fica muito mais confiável e segura. Já há alguns anos o modelo de acesso de profissionais aos ambientes de nuvem com os quais trabalham é realizado através de VPNs com contas individuais. Sem acesso à VPN o profissional não consegue acessar nada do ambiente corporativo, tornando a disponibilidade das VPNs um fator crítico de sucesso. É recomendável utilizar soluções como o One Platform para monitorar estes serviços em tempo real em cada ambiente acessado pelo time de tecnologia.

API Gateways

Uma interface de programação de aplicativos (API) é uma interface de computação que define as interações entre os vários intermediários de um software. Assim, um API gateway atua como um proxy reverso que aceita todas as chamadas de interface de programação de aplicativos (API) e agrega os vários serviços necessários para preenchê-la, para então retornar o resultado apropriado. Em outras palavras, o API gateway é o responsável pelo gerenciamento entre um cliente e uma coleção de serviços de backend.

Fonte: github.com/AntonFagerberg/rackla


Um bom exemplo de API gateway é o serviço de streaming Netflix, disponível em diferentes tipos de dispositivos, incluindo televisores, decodificadores, smartphones, sistemas de jogos, tablets etc. Por conta da grande variedade de dispositivos e suas necessidades exclusivas, a Netflix usa atualmente um API gateway capaz de fornecer uma API personalizada para cada dispositivo, que por sua vez executa o código do adaptador específico do dispositivo.

Um adaptador geralmente lida com cada solicitação invocando em média de seis a sete serviços de backend. Um grande benefício de usar um API Gateway é que ele encapsula a estrutura interna do aplicativo: em vez de ter que chamar serviços específicos, os clientes simplesmente se comunicam com o gateway. O Netflix API Gateway, por exemplo, lida com bilhões de solicitações por dia. 

Uma das funcionalidades interessantes para segurança dos Gateways de API é a de limitar o fluxo de chamadas a partir de um determinado endereço. O termo original para isso é Throttling, mas podemos entender como um controle de vazão/fluxo de cada API. Isto pode inibir diversos ataques de negação de serviço (DDoS), que sem um controle de vazão gerariam indisponibilidade na API acessada.

CDN/Web Application Firewall


Um firewall de aplicativo web (WAF) é um tipo especial de firewall que se aplica especificamente a aplicativos da web. Ele monitora e filtra o tráfego de/para um determinado site, detectando e bloqueando qualquer contato malicioso na rede enquanto o tráfego seguro prossegue normalmente. Também protege os aplicativos web de uma série de ataques à camada de aplicativos, como cross-site scripting (XSS) e injeção de SQL, entre outros. A diferença entre um firewall de aplicativo e um firewall de rede é que um firewall de rede protege uma rede local de acesso não autorizado para evitar o risco de ataques, enquanto o WAFs tem como foco o tráfego de aplicativo (HTTP) e a capacidade de fornecer análise de fluxo de dados. Para fornecer proteção máxima, o WAF precisa ser capaz de analisar HTTPS, e, portanto, precisará descriptografar o tráfego SSL criptografado.

No final da década de 1990, a rede de distribuição de conteúdo (CDN) foi criada para fornecer alta disponibilidade e desempenho através de uma rede distribuída de servidores proxy e seus centros de dados como um meio de aliviar os gargalos de desempenho da Internet. Basicamente, a CDN ajuda a minimizar os atrasos no carregamento do conteúdo de uma página web, reduzindo a distância física entre o servidor e o usuário, o que proporciona a visualização do conteúdo em alta qualidade e de qualquer lugar do mundo sem tempo de carregamento lento.

A CDN é, na verdade, um termo que abrange diferentes tipos de serviços de entrega de conteúdo: streaming de vídeo, download de software, aceleração de conteúdo da web e móvel, CDN licenciado/gerenciado, cache transparente e serviços para medir o desempenho, balanceamento de carga, análise e inteligência na nuvem. Assim, fornecedores CDN podem fazer o cruzamento de seus serviços com os recursos associados à segurança do sistema, por exemplo, através da proteção DDoS e firewall de aplicativo web (WAF) e otimização WAN.

Com o fortalecimento da computação em nuvem ao longo dos últimos anos, os CDNs se tornaram uma tendência envolvendo todas as camadas que compõem esse mercado, desde serviços SaaS (como Google Drive) a IaaS (como AWS) e PaaS (como Google App Engine). Alguns dos CDNs mais populares incluem: StackPath, Sucuri, Cloudflare, KeyCDN, Rackspace, Google Cloud CDN, CacheFly e Amazon CloudFront.


Serviço de DNS automatizado por ferramentas de gerência de configuração

O Domain Name System (DNS) é um sistema hierárquico que traduz nomes de domínio compreensíveis em identificadores numéricos (endereços IP). Sendo parte central da Internet, o DNS fornece uma maneira de combinar nomes – um site que você está pesquisando na web, por exemplo, com números – o endereço do site propriamente dito, chamado URL. 

Qualquer coisa conectada à Internet, sejam notebooks, tablets, celulares e, obviamente, sites – possui um endereço de protocolo da Internet (IP) composto por números. Os nomes de domínio são alfabéticos, no entanto, a Internet é baseada em endereços IP numéricos; logo, um servidor DNS é necessário para que os computadores possam se comunicar.

E porque isso é extremamente crítico e importante em contexto de computação em nuvem? Começa pela reputação de uma organização, que pode ser seriamente afetada a depender da disponibilidade de seus aplicativos e sites. Pois é aqui que os invasores podem causar danos graves – afetando os serviços DNS, por exemplo, e com isso impedindo que os usuários acessem aplicativos e sites. Uma estratégia de gerenciamento de DNS em nuvem, neste contexto, torna-se imprescindível.

Vale lembrar que, em um ecossistema de computação em nuvem, cada provedor de nuvem pública tem seu próprio serviço de gerenciamento de domínios e registros DNS. Esses serviços de gerenciamento de nuvem oferecem uma solução de baixa latência (intervalo menor que 10 segundos real-time x transmissão ao vivo), alta disponibilidade, segurança e economia para os usuários hospedarem seus aplicativos e serviços.

Muitas ferramentas de gerenciamento de DNS estão disponíveis no mercado de computação em nuvem hoje em dia. Entre elas, as ferramentas de gerenciamento de DNS mais populares são: Amazon Route 53, Google Cloud DNS, DNS Made Easy, Dyn e DNSimple. Os desenvolvedores geralmente escolhem o Amazon Route 53 por conta de seus benefícios de alta disponibilidade sobre os concorrentes, enquanto o Google Cloud DNS geralmente é escolhido pela credibilidade do forte apelo comercial  “suportado pelo Google”. 

No próximo post, o 6º da série sobre cloud para iniciantes, vamos abordar os conceitos de integração contínua (Continuous Integration) entrega contínua (Continuous Delivery) e  implementação contínua (Continuous Deployment) na nuvem, sob o ponto de vista DevOps. Assine a nossa newsletter e fique ligado!

Segurança na nuvem: gerenciamento de chaves e criptografia

No último post da série sobre computação em nuvem para iniciantes, analisamos as particularidades dos microsserviços e os recursos necessários para seu bom funcionamento. Neste post, abordaremos as questões que envolvem a segurança e criptografia na computação em nuvem. E vamos “começar do começo”, por assim dizer. Por exemplo, em criptografia, uma chave é um pedaço de informação (um parâmetro) que determina a função de um algoritmo criptográfico. E ela pode ser de dois tipos: simétricas e assimétricas, e também possuir várias propriedades, a depender da função pretendida, como comprimento e período criptográfico.

Fonte: elven.works

Para os algoritmos de criptografia, uma chave especifica a transformação de texto simples em texto cifrado, e vice-versa para os algoritmos de descriptografia. Essas chaves são necessárias para um algoritmo criptográfico funcionar, e podem ser compostas por uma palavra, número ou frase para criptografar o texto simples. Todas as chaves possíveis e todos os protocolos que fazem um algoritmo criptográfico funcionar compõem o que é chamado de criptosistema ou sistema criptográfico. 


Gerenciamento de chaves


Para gerenciar chaves criptográficas é importante que todas as chaves sejam armazenadas em vault criptográfico – vault (de “cofre” em inglês) é uma ferramenta para acessar “segredos” com segurança. Um “segredo” no contexto de criptografia é qualquer coisa que se deseje controlar rigidamente o acesso, como chaves de API, senhas ou certificados disponíveis no módulo de segurança de hardware (HSM) ou serviço criptográfico isolado. Um módulo de segurança de hardware (HSM) é um dispositivo físico que fornece segurança extra para dados confidenciais. Este tipo de dispositivo é usado para fornecer chaves criptográficas para funções críticas, como criptografia, descriptografia e autenticação para o uso de aplicativos, identidades e bancos de dados. No mercado financeiro é comum encontrarmos o uso de HSM para transações envolvendo cartões de crédito, por exemplo.

É aí que o gerenciamento de chaves torna-se fundamental para a segurança de um criptosistema. O gerenciamento inclui lidar com a geração, troca, armazenamento, uso e substituição de chaves conforme a necessidade em nível de usuário. Um sistema de gerenciamento de chaves também inclui servidores de chaves, procedimentos e protocolos de usuário, incluindo design de protocolo criptográfico. É o lado mais desafiador da criptografia na medida em que envolve aspectos de engenharia social, como política do sistema, treinamento do usuário, interações organizacionais e departamentais e sobretudo a coordenação entre todos esses elementos, em contraste com as práticas matemáticas puras que podem ser automatizadas.

O gerenciamento de chaves é importante porque assegura uma criptografia forte de dados. Além disso, garante a conformidade regulatória e protege os dados de riscos apresentados por usuários com privilégios. Dessa forma, ser capaz de possuir e gerenciar as chaves de criptografia torna-se crucial para atender aos padrões de conformidade e regulação da rede. O Cloud KMS, do Google, é um serviço que permite gerenciar chaves criptográficas para serviços tanto na nuvem como on-premises.

Na AWS, o Key Management Service (KMS) facilita a criação e o gerenciamento de chaves criptográficas e o controle do seu uso em uma ampla variedade de serviços da AWS e em seus aplicativos. Na Microsoft, o Azure Key Vault é um serviço de nuvem que protege chaves de criptografia e segredos como certificados, strings de conexão e senhas. Como esses dados são sensíveis e essenciais para os negócios, o usuário precisa proteger o acesso aos seus key vaults, permitindo apenas aplicativos e usuários autorizados.

Além de ferramentas sofisticadas de criptografia e gestão de chaves, é importante ter atenção com alguns erros básicos, como repositórios de código. Com muita frequência são armazenadas chaves de acesso de provedores de nuvem em repositórios públicos no Github, Bitbucket e outros serviços de hospedagem Git.

Há inúmeros robôs (bots) percorrendo repositórios de código públicos e procurando credenciais de nuvem para utilização indevida. Uma chave de acesso de administrador pode em poucos minutos criar dezenas de servidores que serão utilizados para fins maliciosos e trarão pesados custos de infraestrutura para a empresa que expôs suas credenciais.


Gestão de acessos a VPN


Uma rede privada virtual (VPN), como o nome sugere, oferece uma rede privada a partir de uma conexão pública com a Internet, para que o usuário possa contar com privacidade online e anonimato. As VPNs basicamente mascaram, portanto, o endereço de protocolo da Internet (IP), de tal forma que as ações de seus usuários conectados sejam virtualmente impossíveis de rastrear. Já o chamado monitoramento de conexão VPN assegura que a rede privada se mantenha protegida de intrusos enquanto os dados transferidos pela rede do usuário são criptografados e transmitidos rapidamente.

Os dados são compostos pelo rastreamento de diferentes conexões, caminhos e túneis, a partir de diversas métricas de desempenho. Um serviço VPN pode monitorar ou registrar todas as atividades da Internet que acontecem no servidor; por essa razão, é sempre bom ter cuidado ao usar VPNs grátis, uma vez que elas podem vender os dados para anunciantes e terceiros.

Uma prática muito mais recomendável é configurar serviços de VPN dentro de contas de nuvem que você controla. Assim a gestão dos dados fica muito mais confiável e segura. Já há alguns anos o modelo de acesso de profissionais aos ambientes de nuvem com os quais trabalham é realizado através de VPNs com contas individuais. Sem acesso à VPN o profissional não consegue acessar nada do ambiente corporativo, tornando a disponibilidade das VPNs um fator crítico de sucesso. É recomendável utilizar soluções como o One Platform para monitorar estes serviços em tempo real em cada ambiente acessado pelo time de tecnologia.

API Gateways

Uma interface de programação de aplicativos (API) é uma interface de computação que define as interações entre os vários intermediários de um software. Assim, um API gateway atua como um proxy reverso que aceita todas as chamadas de interface de programação de aplicativos (API) e agrega os vários serviços necessários para preenchê-la, para então retornar o resultado apropriado. Em outras palavras, o API gateway é o responsável pelo gerenciamento entre um cliente e uma coleção de serviços de backend.

Fonte: github.com/AntonFagerberg/rackla


Um bom exemplo de API gateway é o serviço de streaming Netflix, disponível em diferentes tipos de dispositivos, incluindo televisores, decodificadores, smartphones, sistemas de jogos, tablets etc. Por conta da grande variedade de dispositivos e suas necessidades exclusivas, a Netflix usa atualmente um API gateway capaz de fornecer uma API personalizada para cada dispositivo, que por sua vez executa o código do adaptador específico do dispositivo.

Um adaptador geralmente lida com cada solicitação invocando em média de seis a sete serviços de backend. Um grande benefício de usar um API Gateway é que ele encapsula a estrutura interna do aplicativo: em vez de ter que chamar serviços específicos, os clientes simplesmente se comunicam com o gateway. O Netflix API Gateway, por exemplo, lida com bilhões de solicitações por dia. 

Uma das funcionalidades interessantes para segurança dos Gateways de API é a de limitar o fluxo de chamadas a partir de um determinado endereço. O termo original para isso é Throttling, mas podemos entender como um controle de vazão/fluxo de cada API. Isto pode inibir diversos ataques de negação de serviço (DDoS), que sem um controle de vazão gerariam indisponibilidade na API acessada.

CDN/Web Application Firewall


Um firewall de aplicativo web (WAF) é um tipo especial de firewall que se aplica especificamente a aplicativos da web. Ele monitora e filtra o tráfego de/para um determinado site, detectando e bloqueando qualquer contato malicioso na rede enquanto o tráfego seguro prossegue normalmente. Também protege os aplicativos web de uma série de ataques à camada de aplicativos, como cross-site scripting (XSS) e injeção de SQL, entre outros. A diferença entre um firewall de aplicativo e um firewall de rede é que um firewall de rede protege uma rede local de acesso não autorizado para evitar o risco de ataques, enquanto o WAFs tem como foco o tráfego de aplicativo (HTTP) e a capacidade de fornecer análise de fluxo de dados. Para fornecer proteção máxima, o WAF precisa ser capaz de analisar HTTPS, e, portanto, precisará descriptografar o tráfego SSL criptografado.

No final da década de 1990, a rede de distribuição de conteúdo (CDN) foi criada para fornecer alta disponibilidade e desempenho através de uma rede distribuída de servidores proxy e seus centros de dados como um meio de aliviar os gargalos de desempenho da Internet. Basicamente, a CDN ajuda a minimizar os atrasos no carregamento do conteúdo de uma página web, reduzindo a distância física entre o servidor e o usuário, o que proporciona a visualização do conteúdo em alta qualidade e de qualquer lugar do mundo sem tempo de carregamento lento.

A CDN é, na verdade, um termo que abrange diferentes tipos de serviços de entrega de conteúdo: streaming de vídeo, download de software, aceleração de conteúdo da web e móvel, CDN licenciado/gerenciado, cache transparente e serviços para medir o desempenho, balanceamento de carga, análise e inteligência na nuvem. Assim, fornecedores CDN podem fazer o cruzamento de seus serviços com os recursos associados à segurança do sistema, por exemplo, através da proteção DDoS e firewall de aplicativo web (WAF) e otimização WAN.

Com o fortalecimento da computação em nuvem ao longo dos últimos anos, os CDNs se tornaram uma tendência envolvendo todas as camadas que compõem esse mercado, desde serviços SaaS (como Google Drive) a IaaS (como AWS) e PaaS (como Google App Engine). Alguns dos CDNs mais populares incluem: StackPath, Sucuri, Cloudflare, KeyCDN, Rackspace, Google Cloud CDN, CacheFly e Amazon CloudFront.


Serviço de DNS automatizado por ferramentas de gerência de configuração

O Domain Name System (DNS) é um sistema hierárquico que traduz nomes de domínio compreensíveis em identificadores numéricos (endereços IP). Sendo parte central da Internet, o DNS fornece uma maneira de combinar nomes – um site que você está pesquisando na web, por exemplo, com números – o endereço do site propriamente dito, chamado URL. 

Qualquer coisa conectada à Internet, sejam notebooks, tablets, celulares e, obviamente, sites – possui um endereço de protocolo da Internet (IP) composto por números. Os nomes de domínio são alfabéticos, no entanto, a Internet é baseada em endereços IP numéricos; logo, um servidor DNS é necessário para que os computadores possam se comunicar.

E porque isso é extremamente crítico e importante em contexto de computação em nuvem? Começa pela reputação de uma organização, que pode ser seriamente afetada a depender da disponibilidade de seus aplicativos e sites. Pois é aqui que os invasores podem causar danos graves – afetando os serviços DNS, por exemplo, e com isso impedindo que os usuários acessem aplicativos e sites. Uma estratégia de gerenciamento de DNS em nuvem, neste contexto, torna-se imprescindível.

Vale lembrar que, em um ecossistema de computação em nuvem, cada provedor de nuvem pública tem seu próprio serviço de gerenciamento de domínios e registros DNS. Esses serviços de gerenciamento de nuvem oferecem uma solução de baixa latência (intervalo menor que 10 segundos real-time x transmissão ao vivo), alta disponibilidade, segurança e economia para os usuários hospedarem seus aplicativos e serviços.

Muitas ferramentas de gerenciamento de DNS estão disponíveis no mercado de computação em nuvem hoje em dia. Entre elas, as ferramentas de gerenciamento de DNS mais populares são: Amazon Route 53, Google Cloud DNS, DNS Made Easy, Dyn e DNSimple. Os desenvolvedores geralmente escolhem o Amazon Route 53 por conta de seus benefícios de alta disponibilidade sobre os concorrentes, enquanto o Google Cloud DNS geralmente é escolhido pela credibilidade do forte apelo comercial  “suportado pelo Google”. 

No próximo post, o 6º da série sobre cloud para iniciantes, vamos abordar os conceitos de integração contínua (Continuous Integration) entrega contínua (Continuous Delivery) e  implementação contínua (Continuous Deployment) na nuvem, sob o ponto de vista DevOps. Assine a nossa newsletter e fique ligado!

Experimente agora, grátis!