Integrar o reCAPTCHA para WAF com o Fastly

Este documento mostra como integrar o reCAPTCHA para WAF com o Fastly.

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 o serviço de computação do Fastly.

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 projeto do Google Cloud para uso posterior.

  2. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  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 de API para uso posterior.

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

    1. Escolher um ou mais recursos do WAF que melhor correspondem ao seu caso de uso.
    2. Identifique as páginas que você quer proteger e o tipo de recurso WAF que você quer implementar nessas páginas.
    3. Identifique as condições para permitir ou bloquear o acesso.
    4. Entenda os componentes da política de firewall do reCAPTCHA e os atributos deles. que ajudam a criar políticas de firewall reCAPTCHA. Para ver exemplos, consulte Exemplos de políticas de firewall reCAPTCHA.
  6. Faça o download do pacote reCAPTCHA para Fastly recaptcha_fastly_client_0.1.0.tar.gz.

  7. Crie uma conta do Fastly com os recursos do Compute@Edge.

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

O reCAPTCHA precisa estar em execução nas suas páginas da Web para gerar tokens de ação. Depois que o reCAPTCHA gera um token de ação, você o anexa a um cabeçalho de solicitação sempre que você 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 ele expire. Assim, o Fastly 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: 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 WAF. Especifique action-token.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique fastly para "Fastly".

    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 WAF. Especifique action-token.
    • WAF_SERVICE: nome do provedor de serviço do WAF. Especifique fastly para Fastly.

    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": "fastly",
    
      "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 obter instruções, consulte o documento que corresponde ao tipo de integração da sua chave de 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 e o atualiza, desde que o O JavaScript reCAPTCHA 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. Os tokens de sessão são válidos por 30 minutos padrão. No entanto, se o usuário final permanecer na página em que você implementou o session-token, O reCAPTCHA atualiza o token de sessão periodicamente para evitar que ele expirem.

Instale tokens de sessão em cada página que precisa ser protegida pelo reCAPTCHA. Recomendamos que você proteja todas as páginas com o reCAPTCHA e use as regras do Google Cloud Armor para aplicar o acesso em todas as páginas, exceto na primeira em que os usuários finais navegam.

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: 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 ser usados 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ços WAF. Especifique fastly para Fastly.

    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 ser usados 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ços WAF. Especifique fastly para Fastly.

    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": "fastly",
    
      "wafFeature": "SESSION_TOKEN"
    
    
    }
    }
    
    

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

  2. Adicione a chave do token de sessão e waf=session ao JavaScript 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

When you implement a reCAPTCHA challenge page, reCAPTCHA redirects to an interstitial page where it determines if it's necessary to show a CAPTCHA challenge to a user. Therefore, CAPTCHA challenges might not be visible to all users.

To implement a reCAPTCHA challenge page, do the following:

  1. Create a challenge-page key for your website.

    gcloud

    To create reCAPTCHA keys, use the gcloud recaptcha keys create command.

    Before using any of the command data below, make the following replacements:

    • DISPLAY_NAME: Name for the key. Typically a site name.
    • INTEGRATION_TYPE: Type of integration. Specify invisible.
    • DOMAIN_NAME: Domains or subdomains of websites allowed to use the key. Specify --allow-all-domains.
    • WAF_FEATURE: Name of the WAF feature. Specify challenge-page.
    • WAF_SERVICE: Name of the WAF service provider. Specify fastly for Fastly.

    Execute the gcloud recaptcha keys create command:

    Linux, macOS, or 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 ser usados a chave. Especifique --allow-all-domains.
  • WAF_FEATURE: nome do recurso WAF. Especifique challenge-page.
  • WAF_SERVICE: nome do Provedor de serviços WAF. Especifique fastly para "Fastly".

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": "fastly",

  "wafFeature": "CHALLENGE_PAGE"
  

}
}

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

  • Redirecionar os usuários para a página do desafio reCAPTCHA e receber um token reCAPTCHA criar uma política de firewall com a redirect em páginas protegidas.
  • express

    Para implementar o reCAPTCHA expresso, 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ços WAF. Especifique fastly para Fastly.

      Execute o gcloud recaptcha keys create (link em inglês) comando:

      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ços WAF. Especifique fastly para "Fastly".

      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": "fastly",
      
        
      
      }
      }
      
      

      Grave sua chave expressa para uso posterior.

    Criar políticas de firewall reCAPTCHA

    Você precisa criar uma política de firewall que especifique regras para cada página que você quer proteger no seu site. É possível criar políticas de firewall com uma 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, seu provedor de serviços 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 modificar a CLI gcloud e acessar a versão de pré-lançamento público do a 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 reCAPTCHA, use o comando gcloud comando 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 um uma solicitação recebida, quando uma condição de política corresponde ao caminho especificado, seu provedor de serviços WAF implementa a ação definida e as e as regras não são avaliadas. A regra padrão é permitir 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. Essa é 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. Essa é uma ação terminal.
        • set_header: define um cabeçalho personalizado e permite que a solicitação recebida do usuário 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 de 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 cadeia de condição é verificada quanto à precisão da sintaxe da 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 UTF-8 caracteres.
      • PATH: o caminho ao qual a política de firewall reCAPTCHA se aplica. Precisa ser especificado como um padrão glob. Para mais informações sobre glob, consulte a página 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"
         

    Integrar com o serviço Fastly Compute

    Para usar as políticas de firewall reCAPTCHA, configure um do Compute Engine para interceptar e processar solicitações.

    É possível criar e configurar um novo serviço de computação ou integrar políticas de firewall do reCAPTCHA a um serviço Fastly existente usando encadeamento. Se você quiser usar a vinculação, o serviço reCAPTCHA precisa ser o serviço Fastly mais distante upstream ou outro proxy para a detecção de IP correta.

    Para criar um serviço de computação, é preciso ter as seguintes informações:

    • Nome do seu domínio
    • Pacote reCAPTCHA para FASTLY em formato ZIP
    • Nome da origem do servidor de back-end
    • Nome de origem do servidor de back-end do reCAPTCHA: Recaptcha Enterprise
    • Nome da origem do servidor de back-end do Google: Google
    • Sua chave de API criada para a autenticação
    • ID do seu projeto do Google Cloud
    • As chaves reCAPTCHA que você criou para os recursos do WAF

    Para configurar um serviço Fastly com políticas de firewall reCAPTCHA, faça o seguinte:

    1. Faça login no Fastly.
    2. Para criar um serviço de computação, siga as instruções em Como criar um novo serviço do Compute.

      Ao criar um serviço de computação, faça o seguinte:

      • Para criar uma origem para o servidor de back-end do reCAPTCHA, especifique os seguintes valores:

        • Nome da sua origem = ReCAPTCHA Enterprise
        • Endereço IP (ou nome de host) do servidor de origem = public-preview-recaptchaenterprise.googleapis.com
      • Para criar uma origem para o servidor de back-end do Google, especifique os seguintes valores:

        • Nome da origem = Google
        • Endereço IP (ou nome do host) do servidor de origem = www.google.com:443
      • Para criar uma origem para seu servidor de back-end, especifique o seguintes valores:

        • Nome da origem = qualquer nome significativo para o servidor de back-end.
        • Endereço IP (ou nome do host) do servidor de origem = nome do host do servidor de back-end.
      • Faça upload do pacote reCAPTCHA para o Fastly recaptcha_fastly_client_0.1.0.tar.gz.

      • Use recaptcha como o nome do dicionário e adicione o seguinte informações como pares de chave-valor no dicionário:

        Chave Valor
        customer_backend_name O nome que você deu ao criar uma origem para o servidor de back-end.
        recaptcha_backend_name reCAPTCHA Enterprise
        google_backend_name Google
        cloud_api_key A chave de API que você criou para autenticação.
        cloud_project_number É o ID do seu projeto no Google Cloud.
        action_site_key Chave de token de ação do reCAPTCHA WAF. Essa chave é obrigatória se você usa tokens de ação para proteger suas páginas.
        session_site_key Chave de token de sessão reCAPTCHA do WAF. Essa chave é necessária se você estiver usando tokens de sessão para proteger suas páginas.
        challengepage_site_key Chave da página de desafio do WAF do reCAPTCHA. Essa chave é obrigatória se você estiver usando a página de desafio reCAPTCHA para proteger suas páginas.
        express_site_key Chave reCAPTCHA expressa. Essa chave é necessária se você estiver usando o reCAPTCHA Express para proteger suas páginas.

    A seguir