Como criar um ambiente compatível com PCI DSS

Saiba como implementar o padrão de segurança de dados do setor de cartões de pagamento (PCI DSS, na sigla em inglês) para seu negócio SAQ A-EP usando o Google Cloud Platform. Este tutorial fornece informações básicas sobre o padrão, além de um conjunto de diretrizes para projetar, implantar e configurar um aplicativo de processamento de pagamentos compatível com PCI DSS. O tutorial também discute métodos para monitorar, registrar e validar esse aplicativo.

Criado pelo Conselho de Normas de Segurança do PCI (Setor de Cartões de Pagamento), o PCI DSS é um padrão de segurança de informações para empresas que aceitam cartão de crédito. Esse Conselho é composto pelas principais empresas de cartões de crédito. Por isso, as empresas que aceitam Visa, MasterCard, Discover, American Express ou JCB tem que estar em conformidade com o PCI DSS. Caso contrário, podem ser multadas ou penalizadas.

O PCI DSS inclui classificações para vários tipos de comerciantes, desde os que coletam informações pessoalmente até aqueles que terceirizam o processamento de pagamentos por completo. Este tutorial se concentra no tipo de comerciante SAQ A-EP, que fornece uma interface para coletar informações do cartão de crédito, mas passa a validação e o processamento dessas informações para um processador de pagamentos com certificação PCI DSS. Como comerciante SAQ A-EP, você precisa garantir a segurança das informações de crédito do cliente até que elas sejam passadas ao processador de pagamentos com certificação PCI DSS.

Objetivos

  • Analisar a arquitetura do aplicativo de processamento de pagamentos
  • Configurar o ambiente de processamento de pagamentos
  • Implementar e configurar os servidores de aplicativos
  • Configurar a geração de registros e o monitoramento
  • Validar o ambiente de processamento de pagamentos

Cenário

Sua empresa vende assinaturas para um serviço de software de contabilidade on-line. A empresa está crescendo rapidamente, assim como o número de pagamentos que ela precisa processar. Na verdade, a expectativa é processar vários milhões de transações por ano em breve.

À medida que o número de transações aumenta, o nível de comerciante PCI DSS sobe e as diretrizes de conformidade do PCI DSS ficam mais rígidas. No nível de comerciante mais alto, o Nível 1 (definido pela American Express como 2,5 milhões de transações anuais e por Visa, Mastercard e Discover como 6 milhões de transações anuais), o PCI DSS exige auditoria obrigatória. Por isso, você precisa ter certeza de que seu ambiente de processamento de pagamentos foi auditado para aceitar seu nível de comerciante.

Como o Google Cloud Platform é um provedor de serviços compatível com PCI DSS 3.2 de Nível 1, ele pode atender às suas necessidades de conformidade com PCI DSS, independentemente do nível de comerciante em que você se enquadre.

Visão geral da arquitetura

A arquitetura de processamento de pagamentos foi projetada para ser simples, com poucos componentes móveis. A arquitetura gira em torno de um aplicativo de processamento de pagamentos que é executado em um grupo de instâncias de máquina virtual do Google Compute Engine. Essas instâncias existem em uma rede privada segura e usam canais seguros para se comunicar com um pequeno conjunto de serviços que são externos a essa rede.

Em um nível superior, este é o fluxo de processamento de pagamentos:

  1. O cliente insere as informações do cartão de crédito em um formulário de pagamento que é fornecido e mantido pela sua empresa.
  2. Quando o cliente envia as informações dele, as informações do formulário são transmitidas de modo seguro para um processador de pagamentos externo.
  3. O processador de pagamentos externo verifica as informações do cartão de crédito e realiza a cobrança ou recusa o cartão.
  4. Em seguida, o processador de pagamentos externo envia uma resposta para o aplicativo de pagamento, que transmite uma mensagem para o aplicativo principal.

Além disso, todas as interações acima são registradas e monitoradas com o Stackdriver Logging e o Stackdriver Monitoring.

Arquitetura do ambiente de processamento de pagamentos
Figura 1: arquitetura do ambiente de processamento de pagamentos

Fluxo voltado para o cliente

O fluxo voltado para o cliente do aplicativo de processamento de pagamentos foi projetado da seguinte forma:

Fluxo voltado para o cliente
Figura 2: fluxo voltado para o cliente

Quando o cliente acessa o URL do formulário de pagamento, ele é encaminhado para o formulário de modo seguro, por meio de um balanceador de carga de HTTPS. Quando o cliente envia as informações de cartão de crédito dele, o aplicativo de processamento de pagamentos envia essas informações de modo seguro para um processador de pagamentos externo. Esse processador aceita ou recusa o cartão e retorna uma resposta para o aplicativo de processamento de pagamentos.

Fluxo interno

O fluxo interno do aplicativo foi projetado da seguinte forma:

Fluxo interno
Figura 3: fluxo interno

O aplicativo de processamento de pagamentos recebe e analisa a resposta retornada pelo processador de pagamentos externo e envia alguns ou todos os dados da resposta para o aplicativo principal da empresa. Neste momento, a tarefa do aplicativo de processamento de pagamentos está concluída. O aplicativo principal fica com a tarefa de notificar o cliente.

Fluxo de geração de registros e monitoramento

O fluxo de geração de registros e monitoramento foi projetado da seguinte forma:

Fluxo de geração de registros e monitoramento
Figura 4: fluxo de geração de registros e monitoramento

Todo servidor na rede de aplicativos de processamento de pagamentos envia seus registros para o Stackdriver Monitoring e o Stackdriver Logging usando servidores proxy Squid para transmitir com segurança os dados de registros.

Configurar o ambiente de processamento de pagamentos

Esta seção descreve como configurar o ambiente de processamento de pagamentos. Isso inclui:

  • Configurar uma nova conta do Cloud Platform para isolar o ambiente de processamento de pagamentos do ambiente de produção
  • Restringir o acesso ao ambiente
  • Configurar os recursos virtuais
  • Projetar a imagem base do Linux que será usada para configurar os servidores de aplicativos

Configurar uma nova conta

Para simplificar a restrição de acesso e a auditoria de conformidade, é preciso criar um ambiente de processamento de pagamentos com qualidade de produção que seja completamente isolado do ambiente de produção padrão. Para garantir isolamento total, crie e use uma conta do Google Cloud Platform separada da conta do ambiente de produção principal.

Restringir o acesso ao ambiente

Ao gerenciar permissões para o ambiente de processamento de pagamentos, permita apenas o acesso de pessoas que estejam implantando o código do sistema de pagamento ou gerenciando as máquinas desse sistema. Use as funções do Google Cloud Identity & Access Management (IAM) para restringir o acesso. Consulte os documentos do Cloud IAM para ver mais informações.

Além disso, o PCI DSS exige que esses indivíduos passem por uma verificação de histórico, de acordo com as leis locais, antes de terem acesso ao ambiente. Para reduzir o risco de violações de conformidade, pense em realizar também verificações de antecedentes criminais e de referências para cada indivíduo.

Proteger a rede

Para proteger o tráfego de entrada e de saída na rede do aplicativo de processamento de pagamentos, é preciso criar:

  • Regras de firewall do Compute Engine
  • Um túnel VPN do Compute Engine
  • Um balanceador de carga de HTTPS do Compute Engine

Regras de firewall

Use regras de firewall para restringir o tráfego de entrada para cada instância do Compute Engine. Permita apenas o tráfego de entrada destas três origens:

  • HTTPS público, para que os clientes possam acessar a página de pagamentos.
  • Sua rede de aplicativos, para que o aplicativo de processamento de pagamentos possa receber respostas do processador de pagamentos externo.
  • Sua rede de escritório interna, para que você possa acessar as instâncias conforme necessário para fins de auditoria e gerenciamento.

Use iptables nas instâncias individuais para restringir o tráfego de saída. Permita apenas o tráfego de saída do formulário de pagamento para o processador de pagamentos externo. Essa conexão precisa ser somente HTTPS.

O tráfego tem que ser restrito da seguinte forma:

Origem Destino Porta Direção e motivo
Balanceador de carga público Formulário de pagamentos externo tcp:443 Entrada
Acesso público ao aplicativo de processamento de pagamentos
Formulário de pagamentos externo Processador de pagamentos externo tcp:443 Saída
Encaminhamento de solicitações AUTH para o provedor de serviços de pagamento
Processador de pagamentos externo Seu aplicativo de processamento de pagamentos tcp:5480 Entrada
Aceitação de solicitações AUTH dos sistemas de pagamento (não contém dados do titular do cartão)
A rede de escritório da sua empresa vpn-gateway tcp:8000 Entrada
Acesso ao ambiente de processamento de pagamentos para acessar registros e máquinas de desenvolvimento

Além disso, o seguinte tráfego ocorre de modo seguro na rede interna do aplicativo de processamento de pagamentos:

Origem Destino Porta Motivo
card-form pci-proxy tcp:5480 Troca de dados de cartão criptografados para token como instrumento de pagamento
Todos os hosts Proxy Squid tcp:3128 Envio de tráfego para serviços do Google
Todos os hosts Servidores NTP do Google udp:123 Sincronização de tempo
vpn-gateway Todos os hosts tcp:22 Conexões SSH

VPN

O Compute Engine fornece um serviço de VPN que pode ser usado para estabelecer um túnel VPN seguro entre o ambiente local e o ambiente de processamento de pagamentos.

Balanceador de carga de HTTPS

Você pode garantir que o tráfego de clientes recebido seja seguro criando um balanceador de carga de HTTPS do Compute Engine. Para criá-lo, você precisa de:

  • Um subdomínio do site que será usado para o formulário de processamento de pagamentos (por exemplo, pagamentos.seu nome de domínio.com).
  • Um certificado SSL válido, assinado e registrado para seu subdomínio.

Verifique se o seu domínio é válido analisando as configurações de DNS na interface de configuração de domínio do registrador da Web.

Criar uma imagem base do Linux

O PCI DSS contém um conjunto de regras que descrevem como configurar máquinas que fazem parte de uma arquitetura de processamento de pagamentos A-EP. Essas regras podem ser implementadas de várias maneiras, mas a abordagem mais fácil é esta:

  1. Crie uma lista concreta de bibliotecas e softwares para serem instalados em cada servidor no aplicativo de processamento de pagamentos. Para evitar a introdução de vulnerabilidades desnecessárias no sistema, inclua apenas o mínimo necessário de bibliotecas e softwares para executar o aplicativo. Os candidatos podem incluir o Cloud SDK, bibliotecas e tempos de execução específicos para a linguagem ou um servidor da Web.
  2. Crie uma instância de Compute Engine que utilize uma das imagens do sistema operacional pré-configurado do Compute Engine.
  3. Instale as bibliotecas e os softwares listados anteriormente.
  4. Verifique se a imagem segue as práticas recomendadas para criar uma imagem do Compute Engine segura.
  5. Depois de configurar a imagem base, crie uma imagem de disco do Compute Engine da sua imagem. Ela permitirá que você use a imagem base do Linux para criar novas instâncias da máquina virtual.

Implantação e configuração

Em seguida, configure a implantação e a configuração das instâncias de acordo com a imagem base.

Implantar o ambiente

Para atender aos requisitos de PCI DSS, verifique se o aplicativo correto está sendo implantado, se você está implantando o aplicativo de modo seguro e se não está instalando outros pacotes de software durante a implantação. Para simplificar o processo de implantação, você pode criar uma implantação automática para seu aplicativo usando o Google Cloud Deployment Manager .

O Cloud Deployment Manager permite descrever todo o ambiente de processamento de pagamentos, incluindo regras de firewall, gateways, balanceadores de carga e instâncias. A implantação pelo Cloud Deployment Manager tem a vantagem adicional de ajudar você a montar uma trilha de auditoria de como cada ambiente de aplicativo foi criado, permitindo o versionamento de ambientes concomitante a melhorias e modificações.

Nessa implantação automatizada, também será preciso verificar a integridade do software que está sendo implantado, seja ele seu ou de terceiros. Você pode verificar o software executando somas de verificação automatizadas em cada pacote durante a instalação. Depois de conferir a soma de verificação, você pode usar uma biblioteca de testes automatizados para executar testes de segurança, entre outros, e ver se eles são aprovados.

Finalmente, ao implantar instâncias do Compute Engine, lembre-se de projetar um plano de recuperação para o caso de ocorrerem falhas nas instâncias. Se a sua janela de tempo de inatividade aceitável for grande o suficiente, talvez um plano de recuperação manual seja suficiente. Caso contrário, projete um plano de recuperação automatizado. Consulte Manual para recuperação de desastres, Como projetar sistemas robustos e Como criar aplicativos da Web escalonáveis e resilientes para outras orientações.

Configurar o ambiente

Depois que as instâncias forem implantadas, verifique se elas estão configuradas corretamente. Instale softwares e bibliotecas adicionais na imagem base de cada instância conforme necessário. Para evitar a complexidade, a sobrecarga e o risco geral que podem estar incluídos na configuração manual, use uma ferramenta de gerenciamento de configuração automatizada, como Chef, Puppet, Ansible ou Salt.

Configurar iptables para registrar todas as atividades de entrada e saída

Para cada servidor de aplicativos, configure iptables para registrar todo o tráfego de rede recebido e enviado no servidor. Esses dados são necessários para auditorias de conformidade de PCI DSS.

Instalar o agente do Stackdriver Logging

Depois que você configurar iptables nos servidores, cada servidor registrará todas as atividades no armazenamento em blocos do servidor. Para reter esses registros e gerar alertas com base em atividade anormal, transmita-os para o Stackdriver Logging e o Stackdriver Monitoring, respectivamente, instalando o agente do Stackdriver Logging em cada servidor.

Integrar um sistema de detecção de intrusão (IDS)

Para ajudar a garantir a segurança do ambiente de processamento de pagamentos, use um sistema de detecção de intrusão (IDS) que identifique tentativas de ataque ao sistema. Há duas maneiras de colocar um IDS em um ambiente de processamento de pagamentos: em cada ponto de entrada ou em cada dispositivo.

Para reduzir a complexidade da arquitetura do ambiente, instale um IDS em cada dispositivo. Depois de pesquisar e escolher o software IDS adequado, você poderá tornar a instalação parte do script padrão de instalação de inicialização para cada servidor.

Os registros de IDS se enquadram no campo de ação da conformidade do PCI DSS e têm que ser enviados para o Stackdriver Logging e o Stackdriver Monitoring para fins de relatórios, alertas e futuras auditorias.

Automatizar a implantação do aplicativo

Configure uma ferramenta de gerenciamento de configuração para recuperar e lançar com segurança a versão mais recente do seu aplicativo. O aplicativo pode ser recuperado de qualquer local, como o Google Cloud Storage, desde que esse local seja seguro.

Use um servidor proxy Squid para restringir o tráfego entre o local do aplicativo e o ambiente de processamento de pagamentos.

Transmitir os registros do gerenciador de configuração para os pontos finais de geração de registros e monitoramento

Ao definir o gerenciador de configuração, confira se ele registra todos os detalhes da instalação e, depois de concluído o processo de configuração, envia os registros para o Stackdriver Logging e o Stackdriver Monitoring.

Geração de registros e monitoramento

Para garantir a conformidade com PCI DSS, é preciso ter certeza de que cada etapa no ambiente de processamento de pagamentos será monitorada e registrada. Toda atividade do servidor nas instâncias precisa ser registrada, e toda ação do usuário tem que ser examinada mais tarde, se necessário.

Configurar um servidor proxy Squid

O Stackdriver Logging e o Stackdriver Monitoring são externos à rede de aplicativos de processamento de pagamentos. Por isso, é preciso configurar um sistema que defina os limites de monitoramento e de registro do tráfego depois que ele sai do ambiente controlado. E isso precisa ser feito de maneira auditável e controlada.

Você pode usar um servidor proxy Squid para restringir o tráfego que sai da rede de aplicativos de processamento de pagamentos. Esse servidor possibilita o envio de tráfego diretamente para o Stackdriver Logging e o Stackdriver Monitoring, garantindo que as instâncias só possam enviar tráfego para esses pontos finais. O uso de um servidor proxy Squid também permite rastrear e registrar dados adicionais que podem ser úteis ao verificar a segurança e a expectativa dos padrões de tráfego.

Para ver instruções sobre como configurar um servidor proxy Squid no Compute Engine, consulte Como configurar um proxy de rede. Para evitar gargalos, configure pelo menos dois servidores proxy redundantes.

Registrar dados de acesso internos

Além de registrar ameaças externas, é necessário monitorar e registrar a atividade das pessoas que têm acesso administrativo ao ambiente de processamento de pagamentos. Para fazer isso, você pode registrar comandos shell. Várias ferramentas de código aberto são capazes de auditar comandos shell e enviá-los para registro. As opções mais conhecidas para esta tarefa são OSSEC ou Tripwire.

Configurar alertas de monitoramento

Configure o Stackdriver Monitoring para enviar alertas se algo der errado no ambiente de processamento de pagamentos. Baseie sua estratégia de alertas no risco provável ou em vetores de ataque para cada componente do aplicativo de processamento de pagamentos. Por exemplo, os alertas do Stackdriver Monitoring deverão ser acionados se o IDS detectar alguma tentativa de intrusão, seja ela bem-sucedida ou não.

Transmitir registros para o BigQuery

Como opção, você pode exportar os registros do Stackdriver para o Google BigQuery para análise posterior. Por ser otimizado para realizar consultas em grandes conjuntos de dados, o BigQuery é uma ferramenta ideal para análises de registros em larga escala.

Validação

Depois que o ambiente for implementado, mas antes que qualquer tráfego de produção passe por ele, é importante validá-lo:

  • Se você for um fornecedor de Nível 1, seu ambiente precisará ser validado por um avaliador de segurança qualificado (QSA). Um QSA é uma empresa ou um indivíduo que foi aprovado pelo Conselho de Normas de Segurança do PCI para validar ambientes PCI e dar o selo de aprovação.
  • Se você for um fornecedor de Nível 2 ou abaixo, poderá validar seu ambiente preenchendo o questionário de autoavaliação.

Próximas etapas

Conheça outros tutoriais

Conheça outros recursos do Google Cloud Platform. Confira nossos tutoriais.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…