Integrar o reCAPTCHA para WAF com a Akamai

Neste documento, mostramos como integrar o reCAPTCHA para WAF com a Akamai.

Para concluir a integração, implemente um ou mais recursos do reCAPTCHA para WAF, crie políticas de firewall do reCAPTCHA e faça a integração com a Akamai criando e configurando o serviço Akamai EdgeWorkers.

Antes de começar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

    Registre o ID do Google Cloud projeto para uso posterior.

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Crie uma chave de API para autenticação:

    1. No console do Google Cloud, acesse a página Credenciais.

      Ir para Credenciais

    2. Clique em Criar credenciais e, em seguida, selecione Chave de API.
    3. Registre a chave da API para uso posterior.

  5. Planeje como você quer implementar os recursos do reCAPTCHA para WAF para proteger seu site.

    1. Escolha um ou mais recursos do WAF que melhor se adaptam ao seu caso de uso.
    2. Identifique as páginas que você quer proteger.
    3. Escolha o tipo de recursos do WAF que você quer implementar nas páginas identificadas.
    4. Identifique as condições para gerenciar o acesso do usuário.
    5. Entenda os componentes da política de firewall do reCAPTCHA e os atributos deles que ajudam a criar políticas de firewall do reCAPTCHA. Para conferir exemplos, consulte Exemplos de políticas de firewall do reCAPTCHA.
  6. Para a configuração da Akamai, verifique se você tem o seguinte:

    1. Uma conta da Akamai e uma propriedade da Akamai para seu aplicativo.

    2. Acesso aos Akamai EdgeWorkers no Akamai Marketplace.

    3. Capacidade de criar EdgeWorkers.

  7. Faça o download do pacote reCAPTCHA para Akamai recaptcha_akamai_client_0.0.2.tgz.

Implementar recursos do reCAPTCHA para WAF

Dependendo dos seus requisitos, é possível usar um ou mais recursos do reCAPTCHA para WAF em um único aplicativo.

Se você quiser usar mais de um recurso, crie uma chave reCAPTCHA para cada um deles e use-os no seu aplicativo. Por exemplo, se você quer usar tokens de ação e a página de teste do reCAPTCHA, é necessário criar uma chave de token de ação e uma chave de página de teste e usá-las no seu aplicativo.

action-token

Para gerar tokens de ação, é preciso ter o reCAPTCHA em execução nas suas páginas da Web. Depois que o reCAPTCHA gerar um token de ação, anexe-o a um cabeçalho de solicitação predefinido sempre que precisar proteger qualquer ação do usuário, como checkout. Por padrão, os tokens de ação são válidos por 30 minutos, mas podem variar dependendo do tráfego. É necessário anexar o token de ação a um cabeçalho de solicitação predefinido antes que o token expire. Assim, a Akamai poderá avaliar os atributos do token.

Para implementar um token de ação reCAPTCHA, faça o seguinte:

  1. Crie uma chave de token de ação para seu site.

    gcloud

    Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • INTEGRATION_TYPE: tipo de integração. Especifique score ou checkbox.
    • DOMAIN_NAME: domínios ou subdomínios de sites que podem usar a chave.

      Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique --allow-all-domains para desativar a verificação de domínio.

      Desativar a verificação de domínio é um risco para a segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.

    • WAF_FEATURE: nome do recurso do WAF. Especifique action-token.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para Akamai.

    Execute o comando gcloud recaptcha keys create:

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    A resposta contém a chave reCAPTCHA recém-criada.

    REST

    Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • INTEGRATION_TYPE: tipo de integração. Especifique score ou checkbox.
    • DOMAIN_NAME: domínios ou subdomínios de sites que podem usar a chave.

      Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique --allow-all-domains para desativar a verificação de domínio.

      Desativar a verificação de domínio é um risco para a segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.

    • WAF_FEATURE: nome do recurso do WAF. Especifique action-token.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para a Akamai.

    Método HTTP e URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corpo JSON da solicitação:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
       
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    
    },
    "wafSettings": {
      "wafService": "akamai",
    
      "wafFeature": "ACTION_TOKEN"
      
    
    }
    }
    
    

    Registre a chave do token de ação para uso posterior.

  2. Integre o reCAPTCHA JavaScript nas suas páginas da Web com a chave de token de ação que você criou. Para instruções, consulte o documento que corresponde ao tipo de integração da chave do token de ação.
  3. Depois de receber o token do reCAPTCHA, anexe-o a um cabeçalho de solicitação predefinido no seguinte formato:
     X-Recaptcha-Token: value-of-your-action-token
    

    Use linguagens como XHR, Ajax ou API Fetch para anexar o token a um cabeçalho de solicitação predefinido.

    O exemplo de script a seguir mostra como proteger a ação execute e anexar o token a um cabeçalho de solicitação predefinido usando JavaScript + XHR:

      
      <script>
        src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_KEY"></script>
    
        <script>
        function onSuccess(action_token) {
             const xhr = new XMLHttpRequest();
             xhr.open('GET','YOUR_URL', false);
             // Attach the action-token to the predefined request header
             xhr.setRequestHeader("X-Recaptcha-Token", action_token);
             xhr.send(null);
           }
           function onError(reason) {
             alert('Response promise rejected: ' + reason);
           grecaptcha.enterprise.ready(function () {
             document.getElementById("execute-button").onclick = () => {
               grecaptcha.enterprise.execute('ACTION_TOKEN_KEY', {
               }).then(onSuccess, onError);
             };
           });
          }
        </script>
      
      

session-token

O reCAPTCHA JavaScript define um token de sessão reCAPTCHA como um cookie no navegador do usuário final após a avaliação. O navegador do usuário final anexa o cookie e o atualiza enquanto o reCAPTCHA JavaScript permanece ativo.

Para fornecer um token de sessão como um cookie, instale uma chave de token de sessão em pelo menos uma das suas páginas da Web que o usuário final acessa antes da página que precisa ser protegida. Por exemplo, se você quiser proteger a página de finalização de compra, instale uma chave de token de sessão na página inicial ou do produto.

Para saber como instalar chaves de token de sessão nas suas páginas da Web, consulte Integrar chaves baseadas em pontuação ao front-end.

É possível usar esse cookie para proteger as solicitações subsequentes e os carregamentos de página do usuário final em um domínio específico. Por padrão, os tokens de sessão são válidos por 30 minutos. No entanto, se o usuário final permanecer na página em que você implementou o token de sessão, o reCAPTCHA atualiza o token de sessão periodicamente para evitar que ele expire.

Instale tokens de sessão em todas as páginas que precisam ser protegidas pelo reCAPTCHA. Recomendamos proteger todas as páginas com o reCAPTCHA e usar as regras do Google Cloud Armor para proteger o acesso a todas elas, exceto à primeira página que os usuários finais forem acessar.

Veja a seguir um exemplo de token de sessão reCAPTCHA:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Para implementar um token de sessão reCAPTCHA, faça o seguinte:

  1. Crie uma chave de token de sessão para seu site.

    gcloud

    Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • INTEGRATION_TYPE: tipo de integração. Especifique score.
    • DOMAIN_NAME: domínios ou subdomínios de sites que podem usar a chave.

      Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique --allow-all-domains para desativar a verificação de domínio.

      Desativar a verificação de domínio é um risco para a segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.

    • WAF_FEATURE: nome do recurso do WAF. Especifique session-token.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para a Akamai.

    Execute o comando gcloud recaptcha keys create:

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    A resposta contém a chave reCAPTCHA recém-criada.

    REST

    Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • INTEGRATION_TYPE: tipo de integração. Especifique score.
    • DOMAIN_NAME: domínios ou subdomínios de sites que podem usar a chave.

      Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique --allow-all-domains para desativar a verificação de domínio.

      Desativar a verificação de domínio é um risco para a segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.

    • WAF_FEATURE: nome do recurso do WAF. Especifique session-token.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para a Akamai.

    Método HTTP e URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corpo JSON da solicitação:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
       
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    
    },
    "wafSettings": {
      "wafService": "akamai",
    
      "wafFeature": "SESSION_TOKEN"
    
    
    }
    }
    
    

    Registre a chave do token de sessão para uso posterior.

    Se você quiser injetar o JavaScript reCAPTCHA do Akamai, pule a próxima etapa e configure as propriedades no Akamai Property Manager.

  2. Adicione a chave do token de sessão e waf=session ao JavaScript do reCAPTCHA.

    O exemplo de script a seguir mostra como implementar um token de sessão em uma página da Web:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>reCAPTCHA WAF Session Token</title>
     <script src="https://www.google.com/recaptcha/enterprise.js?render=SESSION_TOKEN_KEY&waf=session" async defer></script>
     <body></body>
    </head>
    </html>

challenge-page

Quando você implementa uma página de teste do reCAPTCHA, o reCAPTCHA redireciona para uma página intersticial em que ele determina se é necessário mostrar um teste do CAPTCHA para um usuário. Portanto, é possível que os testes de CAPTCHA não estejam visíveis para todos os usuários.

Para implementar uma página de teste do reCAPTCHA, faça o seguinte:

  1. Crie uma chave de página de desafio para seu site.

    gcloud

    Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • INTEGRATION_TYPE: tipo de integração. Especifique invisible.
    • DOMAIN_NAME: domínios ou subdomínios de sites que podem usar a chave. Especifique --allow-all-domains.
    • WAF_FEATURE: nome do recurso do WAF. Especifique challenge-page.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para a Akamai.

    Execute o comando gcloud recaptcha keys create:

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    A resposta contém a chave reCAPTCHA recém-criada.

    REST

    Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • INTEGRATION_TYPE: tipo de integração. Especifique invisible.
    • DOMAIN_NAME: domínios ou subdomínios de sites que podem usar a chave. Especifique --allow-all-domains.
    • WAF_FEATURE: nome do recurso do WAF. Especifique challenge-page.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para a Akamai.

    Método HTTP e URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corpo JSON da solicitação:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
       
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
      "integrationType": "INVISIBLE",
     
    
    },
    "wafSettings": {
      "wafService": "akamai",
    
      "wafFeature": "CHALLENGE_PAGE"
      
    
    }
    }
    
    

    Registre a chave da página de desafio para uso posterior.

  2. Para redirecionar os usuários para a página de teste do reCAPTCHA e receber um token reCAPTCHA, crie uma política de firewall com a ação redirect nas páginas protegidas.

express

Para implementar a proteção expressa do reCAPTCHA WAF, crie uma chave expressa.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud

    Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para Akamai.

    Execute o comando gcloud recaptcha keys create:

    Linux, macOS ou Cloud Shell

    gcloud recaptcha keys create \
    --express \
    --display-name=DISPLAY_NAME  \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --express `
    --display-name=DISPLAY_NAME  `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --express ^
    --display-name=DISPLAY_NAME  ^
    --waf-service=WAF_SERVICE

    A resposta contém a chave reCAPTCHA recém-criada.

    REST

    Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • DISPLAY_NAME: o nome da chave. Geralmente, um nome de site.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique akamai para a Akamai.

    Método HTTP e URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corpo JSON da solicitação:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    },
    "wafSettings": {
      "wafService": "akamai",
    
      
    
    }
    }
    
    

    Grave sua chave expressa para uso posterior.

Integrar com o Akamai

Para fazer a integração com a Akamai, você precisa configurar o serviço EdgeWorker e as propriedades dele no Property Manager.

Configurar o serviço EdgeWorker

  1. No Control Center da Akamai, crie um ID do EdgeWorker e atribua a função de editor ao ID do EdgeWorker que você criou.

  2. Para fazer upload do pacote reCAPTCHA para a Akamai, crie uma versão do EdgeWorker usando o pacote reCAPTCHA que você fez o download.

  3. Ative a versão do EdgeWorker.

Configurar propriedades no Gerenciador de propriedades

  1. Abra o Gerenciador de propriedades.

  2. Selecione a propriedade do Akamai que você quer proteger e crie uma nova versão dela.

  3. Dependendo dos recursos do WAF que você implementou, crie suas variáveis globais definidas pelo usuário. As variáveis globais definidas nas propriedades começam com o prefixo PMUSER_.

    A tabela a seguir lista as variáveis que podem ser criadas e adicionadas na seção "Variáveis da propriedade":

    Nome da variável Descrição Configuração de segurança
    RECAPTCHAJSINSTALL Injete o JavaScript do reCAPTCHA. URLs das páginas em que você quer que a Akamai chame a API reCAPTCHA para avaliar a pontuação do reCAPTCHA e executar a ação configurada na política do firewall. Especifique os caminhos como um padrão de glob e use `;` como delimitador. Oculto
    RECAPTCHACHALLENGESITEKEY Chave da página de teste do reCAPTCHA. Essa variável é necessária se você quiser redirecionar os usuários para a página de teste do reCAPTCHA. Oculto
    RECAPTCHAACTIONSITEKEY Chave do token de ação reCAPTCHA. Essa variável é necessária se você estiver usando o token de ação reCAPTCHA para proteger suas páginas. Oculto
    RECAPTCHASESSIONSITEKEY Chave do token de sessão reCAPTCHA. Essa variável é necessária se você estiver usando o token de sessão reCAPTCHA para proteger suas páginas. Use essa variável se RECAPTCHAJSINSTALL estiver definido para configurar o JavaScript reCAPTCHA da Akamai. Oculto
    RECAPTCHAEXPRESSSITEKEY Chave reCAPTCHA expressa. Essa variável é necessária se você estiver usando o reCAPTCHA Express para proteger suas páginas. Oculto
    GCPPROJECTNUMBER

    O ID do seu Google Cloud projeto.

    Oculto
    GCPAPIKEY

    A chave de API que você criou para autenticação.

    Oculto

    Para mais instruções, consulte Criar uma variável.

  4. Para ativar o serviço do EdgeWorker, adicione uma regra usando o modelo de regra em branco com as seguintes informações:

    • Critérios

      • Nome: reCAPTCHA EdgeWorkers rule
      • Critérios: Match All
        If
        Path
        matches one of
        /*

        Os critérios de matches one of precisam corresponder a um superconjunto dos URLs que precisam ser protegidos pelo reCAPTCHA. O caminho /* inclui todos os caminhos. Você pode adicionar páginas específicas.

      • Opcional: se você quiser adicionar outra condição para limitar as extensões de arquivo, use o seguinte:

        Se
        Extensão do arquivo
        é um dos
        html

    • Comportamento

      • Ativar: Ativado
      • Identificador: Your_EdgeWorker_ID
      • Ativar relatórios do mPulse: Desativado
  5. Para encaminhar a chamada do serviço do EdgeWorker para a API createAssessment do reCAPTCHA, adicione uma nova regra usando o modelo de regra em branco com as seguintes informações:

    • Critérios

      • Nome: reCAPTCHA assessment rule
      • Critérios: Match All
        If
        Path
        matches one of
        /v1/projects/*/assessments
    • Comportamento

      • Origem: Sua origem
      • Nome do host do servidor de origem: public-preview-recaptchaenterprise.googleapis.com
      • Cabeçalho do host encaminhado: Valor personalizado
      • Cabeçalho de host de encaminhamento personalizado: public-preview-recaptchaenterprise.googleapis.com
      • Nome de host da chave de cache: Nome de host de origem
      • Suporte à compactação Gzip: Sim
      • Enviar cabeçalho IP do cliente verdadeiro: Sim
      • Nome do cabeçalho do IP verdadeiro do cliente: True-Client-IP
      • Permitir que os clientes definam o cabeçalho IP do cliente verdadeiro: Não
      • Configurações de verificação: usar as configurações da plataforma
      • Usar a extensão TLS SNI: Sim
      • Porta HTTP: 80
      • Porta HTTPS: 443
  6. Opcional: para encaminhar a chamada do serviço do EdgeWorker para a página de desafio do reCAPTCHA, adicione uma nova regra para redirecionar o tráfego para a página de desafio com as seguintes informações:

    • Critérios

      • Nome: reCAPTCHA challenge page rule
      • Critérios: Match All
        If
        Path
        matches one of
        /recaptcha/challengepage
    • Comportamento

      • Origem: Sua origem
      • Nome do host do servidor de origem: www.google.com
      • Cabeçalho do host encaminhado: Valor personalizado
      • Cabeçalho de host de encaminhamento personalizado: www.google.com
      • Nome de host da chave de cache: Nome de host de origem
      • Suporte à compactação Gzip: Sim
      • Enviar cabeçalho IP do cliente verdadeiro: Sim
      • Nome do cabeçalho do IP verdadeiro do cliente: True-Client-IP
      • Permitir que os clientes definam o cabeçalho IP do cliente verdadeiro: Não
      • Configurações de verificação: usar as configurações da plataforma
      • Usar a extensão TLS SNI: Sim
      • Porta HTTP: 80
      • Porta HTTPS: 443
  7. Ative as mudanças:

    1. Ative as mudanças no ambiente de pré-produção.
    2. Teste as mudanças na preparação.
    3. Ative as mudanças na produção.

Criar políticas de firewall do reCAPTCHA

É necessário criar uma política de firewall que especifique regras para cada página que você quer proteger no site. É possível criar políticas de firewall com um ou mais recursos do reCAPTCHA para WAF.

Na política de firewall do reCAPTCHA, adicione regras na ordem da prioridade pretendida. A primeira regra tem a ordem mais alta. Também é possível reordenar a prioridade usando ReorderFirewallPoliciesRequest. Para uma solicitação recebida, quando uma condição de política corresponde ao caminho especificado, o provedor de serviços do WAF implementa a ação definida, e as regras subsequentes não são avaliadas.

  1. Com base nos recursos que você escolheu, faça o seguinte:
    • Identifique o caminho que você quer proteger.
    • Identifique as condições para permitir, redirecionar ou bloquear o acesso.
    • Priorize as regras.
  2. Entenda os componentes da política de firewall e os atributos deles.
  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  4. Para substituir a CLI gcloud e acessar a versão de visualização pública da API reCAPTCHA, execute o seguinte comando:
        gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
        
  5. Para criar políticas de firewall do reCAPTCHA, use o comando gcloud recaptcha firewall-policies create:

    Na política de firewall do reCAPTCHA, adicione regras na ordem da prioridade desejada. Primeiro, adicione uma regra com a maior prioridade. Para uma solicitação recebida, quando uma condição de política corresponde ao caminho especificado, seu provedor de serviços do WAF implementa a ação definida, e as regras subsequentes não são avaliadas. A regra padrão é permitir o acesso.

       gcloud recaptcha firewall-policies create \
          --actions=ACTION \
          --condition=CONDITION \
          --description=DESCRIPTION \
          --path=PATH
      

    Forneça os valores a seguir:

    • ACTION: as ações que o provedor de serviços do WAF precisa realizar para a solicitação recebida. Ele pode conter no máximo uma ação terminal, que é uma ação que força uma resposta. Especifique uma das seguintes ações:
      • allow: permite o acesso à página solicitada. Essa é uma ação terminal.
      • block: nega o acesso à página solicitada. Esta é uma ação terminal.
      • redirect: redireciona a solicitação do usuário para a página de teste do reCAPTCHA. Esta é uma ação terminal.
      • substitute: serve uma página diferente da solicitada para uma solicitação de usuário fraudulenta. Esta é uma ação terminal.
      • set_header: define um cabeçalho personalizado e permite que a solicitação do usuário recebida continue para o back-end. O back-end pode acionar uma proteção personalizada. Esta é uma ação não terminal.
    • CONDITION: uma expressão condicional CEL (linguagem de expressão comum) que especifica se a política do firewall do reCAPTCHA se aplica a uma solicitação de usuário recebida. Se essa condição for avaliada como verdadeira e o caminho solicitado corresponder ao padrão de caminho, as ações associadas serão executadas pelo provedor de serviços do WAF. A string de condição é verificada quanto à precisão da sintaxe CEL na criação. Para mais informações sobre a definição de linguagem, definição de linguagem CEL.
    • DESCRIPTION: uma descrição do que a política do firewall do reCAPTCHA pretende alcançar. A descrição precisa ter no máximo 256 caracteres UTF-8.
    • PATH: o caminho em que a política de firewall do reCAPTCHA é aplicada. Ele precisa ser especificado como um padrão de glob. Para mais informações sobre glob, consulte a página do manual.

    Após a execução do comando, uma saída semelhante à seguinte será exibida:

         Created [100].
       

    O exemplo a seguir cria uma política de firewall do reCAPTCHA para bloquear a segmentação de tráfego para /example/page.html quando a pontuação for menor que 0,1.

       gcloud recaptcha firewall-policies create \
         --description="example policy" \
         --path="/example/page.html" \
         --condition="recaptcha.score < 0.1" \
         --actions="block"
       

A seguir