Atenção para os prazos da Maratona Behind the Code! Saiba mais

Crie uma experiência de aplicativo móvel segura e privada

“Altamente seguro” tem sido o modelo funcional na IBM desde os sistemas inerentemente seguros de mainframe de proprietário com alto volume de transações até a atual segurança de valor agregado desenvolvida com base nas soluções de software livre que a IBM tem adotado desde a década de 90. Privacidade não se trata apenas de cumprir a lei. A IBM acredita em ir além dos regulamentos de privacidade porque valoriza a confiança depositada por seus clientes.

Tanto a privacidade quanto a segurança são preocupações no mundo móvel atual, pois carregamos mais informações pessoais em nossos dispositivos do que em qualquer instituição (incluindo nossa residência).

Neste artigo, revisarei as melhores práticas, as ferramentas, os serviços e as estruturas que devem ser consideradas para os aplicativos móveis que acessam ou processam informações pessoais.

DevSecOps é DevOps

Todos recebemos atualizações de aplicativos móveis frequentemente em nossos dispositivos porque eles não são estáticos. Os publicadores de aplicativos móveis estão incluindo novos recursos ou corrigindo erros frequentemente para estar sempre aprimorando a experiência incrível. Esse ciclo de vida contínuo de criação de código, liberação do aplicativo e adaptação aos feedbacks é DevOps. Além disso, o DevOps geralmente é realizado com mais rapidez do que os esforços em sistemas grandes, tradicionais e legados.

Como desenvolvedores móveis, precisamos inserir a quantidade certa de segurança em todas as cadeias de ferramentas de DevOps, o quanto antes. Independentemente de você chamá-lo de DevOps ou de identificar explicitamente a segurança, chamando-o de DevSecOps, a “quantidade adequada de segurança” dependerá amplamente da sensibilidade dos dados que seu aplicativo usa.

Conduzirei você em um tour pelo ciclo de vida de DevOps, ressaltando áreas especificamente para expandir seus recursos de segurança no aplicativo móvel.

Diagrama de DevSecOps

Autenticação de usuário móvel

Primeiro, vamos começar aumentando a segurança incluindo a autenticação do usuário no aplicativo móvel. Atualmente, vários aplicativos móveis promovem uma integração rapidamente por meio de suas redes sociais. O IBM Cloud oferece o serviço ID do Aplicativo que, com poucas linhas de código, facilita essa tarefa.

Para demonstrar isso, estou usando meu aplicativo Android Appvestr®, que pode ser encontrado no Google Play. A primeira impressão é a que fica e é possível aprimorar a experiência inicial no aplicativo por meio da melhoria do registro inicial, bastando selecionar entre as contas disponíveis, como é mostrado aqui, em vez de precisar digitar ou deslizar o dedo sobre seu endereço de e-mail:

Aplicativo de amostra, Appvestr, mostrando a autenticação do usuário

É fácil incluir o serviço ID do Aplicativo do IBM Cloud em seu aplicativo (seja ele um aplicativo Android, como o meu, ou um aplicativo iOS ou da web). Primeiro, deve-se inicializar o SDK. Depois de inicializar o SDK do ID do Aplicativo, chame o recurso para ativar a IU do ID do Aplicativo. É possível usar um logotipo customizado e selecionar qualquer provedor de identidade, incluindo o SAML (Security Assertion Markup Language) ou provedores customizados, o que significa que é possível integrar aos sistemas de registro existentes ou fornecer uma experiência de conexão única (SSO).

Aplicativo de amostra, Appvestr, mostrando o serviço ID do Aplicativo da IBM com um logotipo customizado

Se você está trabalhando com sistemas de SSO, provavelmente você está desenvolvendo aplicativos B2E (Business to Employee/Business to Enterprise) para dar suporte aos funcionários da empresa. Para esses aplicativos, uma solução abrangente de segurança operacional (o “Ops” em DevSecOps) e de privacidade seria permitir que o dispositivo registrado na organização fosse apagado ou desativado em caso de perda ou roubo. O IBM MaaS360 with Watson é uma oferta de gerenciamento de dispositivo móvel (MDM) que oferece visibilidade e controle de dispositivos iOS, macOS, Android e Windows, bem como de dispositivos de Internet das Coisas (IoT). O MaaS360 limita a exposição de dados privados ou de acesso não autorizado desse dispositivo aos ativos corporativos.

Privacidade e segurança móveis

Entre o design inicial de experiência do usuário, a identificação de usuário e a segurança completa do dispositivo de produção, há diversos aspectos de privacidade e segurança, incluindo:

  • Regulamentos de privacidade
  • Segurança de dados
  • Autenticidade do aplicativo

Conformidade com os regulamentos de privacidade

Quantas vezes você já inseriu seu endereço de e-mail em vários websites e se perguntou: “o que eles farão com minhas informações pessoais?” Você também pode estar recebendo mais e-mails spam como resultado de uma ou mais dessas vezes que inseriu seu endereço de e-mail.

Uma das leis mais significativas liberadas atualmente é o Regulamento Geral sobre a Proteção de Dados (GDPR) da UE, que descreve quais tipos de informações são importantes e como elas são manipuladas. (É possível saber mais sobre o GDPR neste guia do GDPR para desenvolvedores.) A IBM já estava planejando e implementando os recursos de segurança e privacidade do GDPR muito antes de sua liberação oficial e está sempre atestando os seus funcionários nesse importante padrão de privacidade.

Como desenvolvedores móveis, precisaremos dar suporte aos seguintes casos de uso para os usuários de aplicativos móveis:

  • “Aceitar” – Essa opção deve ser apresentada aos usuários desmarcada por padrão, para que eles não ignorem esse importante ponto de verificação sem querer. Precisamos decidir em nossos aplicativos se isso exclui completamente os dados do usuário que são informações pessoais (PI) e se isso é fundamental para a operação do aplicativo, e então fecha o aplicativo. Se o usuário nega a coleta e o uso de PI, o aplicativo pode precisar usar uma abordagem de ocultação de dados para a identificação do usuário.

    Aplicativo de amostra mostrando o recurso de aceitação

  • “Retirar a permissão” – Após a aceitação, os usuários terão a opção de retirar a permissão. Portanto, todos os dados de PI desse usuário deverão ser removidos, porque mesmo que não haja mais a coleta, eles estarão armazenados em algum lugar, se enquadrando como dados “processados”.

  • “Solicitações de titular de dados (DSR)” – Os usuários também têm o direito de solicitar seus dados. Como desenvolvedores móveis, precisamos inserir essa opção na segurança do aplicativo móvel.

    Aplicativo de amostra mostrando como solicitar PI

Também se deve definir duas outras funções de privacidade: controladores e processadores. Para os desenvolvedores móveis, a IU e o banco de dados provavelmente exigirão mudanças:

  • “Controladores” controlam o motivo e o modo da atividade de processamento de dados. Ou seja, os controladores definem as regras, que devem ser mostradas explicitamente no aplicativo. Essa transparência permite que os usuários decidam aceitar ou recusar com base em como os dados serão usados, no momento e futuramente.

  • “Processadores” processam as informações pessoais (PI) da maneira determinada pelo controlador. Se você planeja fornecer dados a um processador, ele deve herdar as regras e as ações do controlador. Por exemplo, uma cadeia de fast food pode trabalhar com um serviço de entrega. Nesse caso, a empresa do aplicativo de fast food, como controladora, define e exibe as regras, e pode compartilhar as PI com um parceiro de entrega, talvez para simplificar a experiência de fazer pedidos eliminando a necessidade de efetuar login ou autenticar-se duas vezes.

Os controladores devem rastrear os elementos de dados das PI para garantir que um catálogo de uso seja mantido, que é, no caso mais simples, apenas outro banco de dados simples que lista os campos e os processadores que receberam esses campos, permitindo que, caso os dados precisem ser retirados, todos os processadores downstream possam agir corretamente.

Esses designs de IU podem ser criados facilmente usando o Digital App Builder da IBM Mobile Foundation, uma ferramenta de desenvolvimento rápido de aplicativos para desenvolver aplicativos para diversas experiências entre Android, iPhone, web e PWA (Progressive Web Apps).

Planejando e armazenando dados com segurança

Agora que já planejamos quais dados desejamos coletar, vamos planejar como armazenaremos os dados de maneira segura.

O IBM Hyper Protect DBaaS é o próximo nível de evolução da maneira como os dados são armazenados em um serviço de nuvem corporativo altamente seguro, especificamente adequado para cargas de trabalho com dados confidenciais. Ele permite reter os dados em um banco de dados de clientes totalmente criptografado sem exigir aptidões especializadas. Ele está disponível nas variantes noSQL e SQL. O Hyper Protect DBaaS protege contra ameaças de violação de dados e de manipulação de dados usando os pontos fortes da criptografia pervasiva, da escalabilidade e do desempenho do LinuxONE e a tecnologia IBM Secure Service Container.

Ao criar uma instância de serviço, você cria um cluster de bancos de dados com uma instância de banco de dados primária e duas secundárias como réplicas. Cada cluster do IBM Cloud Hyper Protect DBaaS for MongoDB contém um DBaaS Manager, que pode ser acessado usando uma IU da web, uma CLI ou um conjunto de APIs RESTful. Para trabalhar com a API, autentique seu aplicativo ou serviço incluindo o token de acesso de IAM e o ID do usuário do IBM Cloud nas solicitações da API. É possível recuperar um token de acesso primeiro criando uma chave de API e, em seguida, trocando-a pelo token de IAM e o ID do usuário do IBM Cloud.

Para meu aplicativo simples, o Appvestr, uma opção noSQL mais simples tem um custo suficiente, pois o IBM Cloudant (compatível com o Apache CouchDB), que é um banco de dados de documentos JSON gerenciado, com todos os dados criptografados em repouso e em trânsito. O Cloudant é acessível por meio de uma API HTTPS para aplicativos da web, móveis, sem servidor e de IoT. O Cloudant está em conformidade com o SOC2 e o ISO27001, com uma preparação opcional para o HIPAA em ambientes de hardware dedicado. O IBM Cloudant apresenta um plano Lite/Gratuito que permite iniciar o funcionamento rapidamente.

Embora para aplicativos mais simples seja suficiente acessar um ou dois bancos de dados, a maioria dos aplicativos móveis em escala corporativa precisa ser conectada a serviços corporativos para fornecer funções críticas relacionadas aos usuários. Um aplicativo de varejo, por exemplo, ainda precisa processar o consultar pedidos usando a plataforma de e-commerce existente da loja. Portanto, para integrar um aplicativo móvel às plataformas corporativas, seria mais fácil apenas usar um middleware, como o IBM Mobile Foundation, para a comunicação com os serviços de backend.

Proteja seus aplicativos

Por mais que os desenvolvedores de tecnologia móvel se esforcem, há desenvolvedores de aplicativos fraudulentos que podem tentar agir como o front-end para os serviços de backend móveis. Um exemplo notável é um aplicativo de bilhete de trem de um país que tinha um aplicativo “falso” semelhante, mas não idêntico, que obtinha o cartão de crédito e cobrava uma pequena taxa e, em seguida, encaminhava aos serviços de compra de bilhete reais.

Como parte da abordagem segura da IBM para dispositivos móveis, além das camadas de segurança da infraestrutura de rede ou do servidor de aplicativos, o MobileFirst Server no IBM Mobile Foundation oferece camadas de segurança adicionais. Esses recursos de segurança incluem o controle da autenticidade do aplicativo e o controle de acesso aos recursos do lado do servidor.

Para proteger o aplicativo e seus adaptadores, ative a verificação de segurança de autenticidade do aplicativo (appAuthenticity) do MobileFirst predefinida no IBM Mobile Foundation. Após a ativação, essa verificação valida a autenticidade do aplicativo antes de fornecer quaisquer serviços a ele. Uma verificação de segurança geralmente emite desafios de segurança que exigem que o cliente responda de uma forma específica e dentro de um prazo específico para que ele seja aprovado na verificação. Os aplicativos no ambiente de produção devem ter esse recurso ativado.

Dependendo da natureza do aplicativo móvel e do nível de segurança necessário, é possível configurar a duração do token autenticado. O padrão é uma hora, pois a maioria dos aplicativos é “transacional”, o que significa que interagimos com ele em casos de uso fáceis e, em seguida, passamos para a próxima tarefa.

O “quem”, o “que” e o “incrível” sobre a segurança de aplicativo móvel

A segurança e a conformidade são assuntos amplos que abrangem o espectro completo de DevOps (ou de DevSecOps, se preferir). A IBM sempre levou muito a sério os assuntos de segurança dos aplicativos essenciais para os negócios dos nossos clientes. Como os aplicativos móveis estão no perímetro de segurança, a necessidade de uma segurança de pilha completa apenas aumenta. No entanto, a combinação de uma arquitetura de referência de segurança completa com o Enterprise Design Thinking pode oferecer uma experiência incrível para os usuários patrocinadores.

Diagrama de arquitetura de referência de segurança móvel

Como a inovação móvel também parece estar bem linhada às implementações de microsserviços em vários de nossos clientes IBM, por mais que nos concentremos na segurança e na conformidade no front-end, nossos microsserviços de backend também precisam ser protegidos. Como parte das ofertas de contêiner de microsserviços, o serviço IBM Kubernetes tem uma varredura de vulnerabilidade integrada que é chamada automaticamente durante a atividade típica da cadeia de ferramentas de integração e implementação contínuas.

Resumo

Nenhuma discussão sobre melhores práticas de desenvolvimento de aplicativos móveis estaria completa atualmente sem incluir a segurança móvel como um tópico. Como muitas pessoas estão acessando informações e serviços por meio dos dispositivos móveis, as ameaças dos hackers de segurança cibernética passaram a focar no espaço de computação móvel mais que nunca.

Embora a segurança móvel geralmente seja discutida em termos de gerenciamento de TI, os desenvolvedores de aplicativos móveis também devem considerar como inserir a segurança nos designs de aplicativo. O desenvolvimento de aplicativos móveis é mais rápido e mais interativo do que o desenvolvimento tradicional, além disso, os desenvolvedores precisam lidar com várias plataformas de dispositivo e metodologias. Eles precisam fazer uma integração segura aos serviços corporativos de backend e também às plataformas de descoberta de nuvem, além de estar prontos para dimensionar corretamente, mesmo quando a demanda ocorrer em padrões menos previsíveis. Além disso, geralmente há requisitos móveis exclusivos a serem gerenciados, como uma interface com o usuário com restrições significativas em termos imobiliários.

Os aspectos do desenvolvimento de aplicativos móveis relacionados à segurança do aplicativo móvel incluem:

  • Instrumentar o aplicativo móvel com recursos de análise, detecção de risco, proteção contra violação e controle de gerenciamento.
  • Testar o aplicativo móvel usando uma ferramenta de análise de vulnerabilidade para varrer aplicativos automaticamente e identificar riscos.
  • Projetar a experiência de usuário final ideal entre os vários tipos de dispositivos e aplicativos móveis (web, nativos e híbridos).
  • Gerenciar a autenticação, as atualizações obrigatórias e o versionamento do aplicativo móvel.
  • Aplicar a análise baseada em risco das transações essenciais para os negócios.
  • Fazer uma integração segura com os dados, os sistemas e os serviços de nuvem de backend.
  • Permitir a distribuição segura do aplicativo usando lojas de aplicativo internas e externas.

A segurança dos aplicativos móveis apresenta várias dimensões, todas elas com implicações para a equipe de desenvolvimento de aplicativos móveis em algum determinado grau. Os desenvolvedores devem proteger os dispositivos, gerenciar o acesso ao dispositivo e aos dados dele e proteger as informações pessoais e também o conteúdo e a colaboração do dispositivo móvel.

Como foi discutido ao longo deste artigo, meu aplicativo Android, Appvestr®, que pode ser encontrado no Google Play, demonstra algumas dessas melhores práticas de segurança móvel. Comece agora mesmo sua própria exploração da segurança de aplicativo móvel.

Aviso

O conteúdo aqui presente foi traduzido da página IBM Developer US. Caso haja qualquer divergência de texto e/ou versões, consulte o conteúdo original.