

# Lista de verificação de segurança para distribuições de marketplace
<a name="ecommerce-security-checklist"></a>

Aplicações de comércio eletrônico e marketplace processam dados sensíveis, como sessões de clientes, fluxos de pagamento e conteúdo premium. Esta lista de verificação aborda os controles de segurança específicos de uma distribuição do CloudFront com uma camada de cache do ElastiCache (Valkey). Aplique esses controles além das práticas recomendadas gerais de segurança do CloudFront descritas em [Configurar o acesso seguro e restringir o acesso ao conteúdo](SecurityAndPrivateContent.md).

## URLs e cookies assinados para conteúdo premium
<a name="ecommerce-sec-signed-urls"></a>

Use URLs assinados ou cookies assinados para restringir o acesso a conteúdos que exigem autorização, como prévias de produtos premium, produtos digitais adquiridos, conteúdo promocional disponível por tempo limitado ou ativos específicos de vendedores.


**Comparação entre URLs assinados e cookies assinados**  

| Método | Use quando | Exemplo de comércio eletrônico | 
| --- | --- | --- | 
| URL assinado | Restringir o acesso a arquivos individuais. Compartilhar links de download. Clientes que não são compatíveis com cookies. | Link de download de uso único para um produto digital adquirido. Acesso por tempo limitado a uma imagem de produto em alta resolução para um vendedor verificado. | 
| Cookie assinado | Fornecer acesso a vários arquivos (por exemplo, todos os ativos de um nível premium). Evitar alterações de URL para conteúdos existentes. | Acesso de membros premium a um catálogo inteiro de conteúdo digital. Prévias de produtos exclusivos para assinantes em várias páginas. | 

Requisitos de configuração:
+ Crie um grupo de chaves com uma chave pública RSA (mínimo de 2048 bits). Armazene a chave privada no AWS Secrets Manager para que a aplicação gere assinaturas.
+ Defina **Restringir acesso do visualizador** do comportamento de cache como **Sim** e associe o grupo de chaves.
+ Defina um tempo de expiração apropriado ao tipo de conteúdo: minutos para links de download, horas para sessões de navegação e dias para acesso por assinatura.
+ Use uma política personalizada, e não uma política predefinida, quando precisar restringir o acesso por intervalo de IP ou permitir caminhos curinga.

Para obter mais detalhes sobre a implementação, visite [Veicular conteúdo privado com URLs e cookies assinados](PrivateContent.md).

## Controle de acesso à origem (OAC) para o Amazon S3
<a name="ecommerce-sec-oac"></a>

O controle de acesso à origem impede que os usuários contornem o CloudFront para acessar diretamente o bucket do Amazon S3. Sem o OAC, qualquer pessoa que descubra o URL do bucket poderá acessar ativos sem passar pela aplicação dos URLs ou cookies assinados, pelas regras do WAF ou pelas restrições geográficas. Consulte as etapas completas de configuração em [Restringir o acesso a uma origem da AWS](private-content-restricting-access-to-origin.md).

**Habilitar o OAC para todas as origens do Amazon S3**  
Crie um OAC e associe-o a cada origem do Amazon S3 na distribuição. Atualize a política de bucket para permitir apenas a entidade principal de serviço do CloudFront (`cloudfront.amazonaws.com`) com uma condição correspondente ao ARN da distribuição.

**Remover o acesso público**  
No console do Amazon Simple Storage Service, habilite o Bloqueio de Acesso Público do Amazon S3 no bucket. Essa é uma configuração do Amazon S3, e não uma configuração do CloudFront. A política de bucket concede acesso apenas ao CloudFront. Não são necessárias ACLs ou políticas públicas. Para obter mais informações, consulte [Bloquear o acesso público ao armazenamento do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html) no *Guia do usuário do Amazon Simple Storage Service*.

**Usar o endpoint da API REST do Amazon S3**  
Configure a origem usando o endpoint da API REST do bucket (`bucket-name.s3.amazonaws.com`) e não o endpoint do site do Amazon S3. O OAC funciona apenas com o endpoint da API REST.

## Criptografia em trânsito
<a name="ecommerce-sec-encryption-transit"></a>

Criptografe todas as conexões no caminho da solicitação, do visualizador ao CloudFront, do CloudFront à origem e da aplicação ao cache do ElastiCache.


**Configuração da criptografia em trânsito**  

| Conexão | Configuração | Configuração | 
| --- | --- | --- | 
| Visualizador → CloudFront | Política de protocolo do visualizador: somente HTTPS | Defina a política de protocolo do visualizador como `redirect-to-https` ou `https-only` em todos os comportamentos de cache. Use uma política de segurança com TLS 1.2 como versão mínima (`TLSv1.2_2021`). | 
| CloudFront → origem do S3 | Protocolo da origem: HTTPS | Os endpoints da API REST do S3 são compatíveis com HTTPS por padrão. O CloudFront usa HTTPS quando você configura a origem com o endpoint da API REST e o OAC. | 
| CloudFront → origem do ALB | Protocolo da origem: somente HTTPS | Defina a política de protocolo da origem como `https-only`. Instale um certificado TLS válido no ALB (use Gerenciador de certificados da AWS). O CloudFront valida o certificado durante a conexão. | 
| Aplicação → ElastiCache | Criptografia em trânsito: habilitada | No console do ElastiCache, habilite `TransitEncryptionEnabled` no grupo de replicação. Essa é uma configuração do ElastiCache. Use conexões TLS no código da aplicação. O Valkey e o Redis OSS 6.0 e versões posteriores oferecem suporte nativo à criptografia em trânsito. | 

## Grupos de segurança da VPC para o cluster de cache
<a name="ecommerce-sec-vpc-cache"></a>

O cluster do ElastiCache é executado em uma VPC e deve aceitar conexões apenas dos servidores da aplicação. Use o encadeamento de grupos de segurança para restringir o acesso.


**Configuração de grupos de segurança para o ElastiCache**  

| Grupo de segurança | Regra de entrada | Lógica | 
| --- | --- | --- | 
| Grupo de segurança do cluster de cache | TCP 6379 apenas do grupo de segurança da aplicação | Somente os servidores da aplicação podem acessar o cache. Não há acesso à internet nem acesso de outros serviços. Use a porta 6379 (a porta padrão do Valkey/Redis) ou a porta configurada. | 
| Grupo de segurança da aplicação | TCP 443 apenas do grupo de segurança do ALB | Os servidores da aplicação aceitam tráfego apenas do ALB. Combinado com o grupo de segurança do cluster de cache, isso cria uma cadeia: CloudFront → ALB → Aplicação → Cache. | 

Hardening adicional da VPC:
+ Implante o cluster do ElastiCache em sub-redes privadas sem rota para um gateway da Internet.
+ Use um grupo de sub-redes que abranja pelo menos duas zonas de disponibilidade para alta disponibilidade.
+ Habilite o token de autenticação (senha) do ElastiCache para adicionar uma camada de autenticação além dos grupos de segurança.
+ Desabilite o acesso público ao cluster do ElastiCache (padrão, mas verifique).

## Controles de segurança adicionais
<a name="ecommerce-sec-additional"></a>

**Restringir o acesso ao ALB somente ao CloudFront**  
Adicione um cabeçalho de origem personalizado (`X-Origin-Verify`) que o CloudFront envia com cada solicitação. Configure o ALB ou a aplicação para rejeitar solicitações que não incluam esse cabeçalho. Armazene o valor do cabeçalho no AWS Secrets Manager e alterne-o periodicamente. Como alternativa, use a lista de prefixos gerenciada pelo CloudFront para restringir as regras de entrada do grupo de segurança do ALB aos intervalos de IP do CloudFront.

**Habilitar o AWS WAF na distribuição**  
Associe uma ACL da web do AWS WAF com regras de limitação de taxa para proteger contra abuso do carrinho, preenchimento de credenciais em APIs de login e raspagem de inventário. Use grupos de regras gerenciadas para ameaças comuns, como injeção de SQL e XSS, e regras personalizadas para padrões específicos da aplicação.

**Restrições geográficas para conformidade**  
Se o seu marketplace operar em países específicos, habilite a restrição geográfica para bloquear solicitações provenientes de regiões nas quais você não tenha autorização legal para vender ou fazer entregas. Aplique-a no nível da distribuição. Para aplicar restrições geográficas por caminho, use condições de correspondência geográfica do AWS WAF em uma regra de ACL da web com uma condição de caminho de URL.

**Registro de acesso em log**  
Habilite o registro em log padrão ou em tempo real do CloudFront para detectar padrões anormais de acesso, como picos repentinos no uso de links de download, acesso proveniente de regiões inesperadas ou repetidas tentativas de autenticação malsucedidas em endpoints de API.