Integra reCAPTCHA para WAF con Akamai.

En este documento, se muestra cómo integrar reCAPTCHA para WAF con Akamai.

Para completar la integración, debes implementar una o más funciones de reCAPTCHA para WAF, crear políticas de firewall de reCAPTCHA y realizar la integración con Akamai. Para ello, crea y configura el servicio de Akamai EdgeWorkers.

Antes de comenzar

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

    Go to project selector

    Registra el ID de tu proyecto de Google Cloud para usarlo más adelante.

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

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Crea una clave de API para la autenticación:

    1. En la consola de Google Cloud, ve a la página Credenciales.

      Ir a Credenciales

    2. Haz clic en Crear credenciales y selecciona Clave de API.
    3. Registra la clave de API para usarla más adelante.

  5. Planifica cómo deseas implementar las funciones de reCAPTCHA para WAF para proteger tu sitio web.

    1. Elige una o más funciones de WAF que mejor se adapten a tu caso de uso.
    2. Identifica las páginas que deseas proteger.
    3. Elige el tipo de funciones de WAF que deseas implementar en las páginas identificadas.
    4. Identifica las condiciones para administrar el acceso de los usuarios.
    5. Comprende los componentes de la política de firewall de reCAPTCHA y sus atributos que te ayudan a crear políticas de firewall de reCAPTCHA. Para ver ejemplos, consulta Ejemplos de políticas de firewall de reCAPTCHA.
  6. Para la configuración de Akamai, asegúrate de tener lo siguiente:

    1. Una cuenta de Akamai y una Propiedad de Akamai para tu aplicación.

    2. Acceso a EdgeWorkers de Akamai desde Akamai Marketplace

    3. Otorga la capacidad de crear EdgeWorkers.

  7. Descarga el paquete de reCAPTCHA para Akamai recaptcha_akamai_client_0.0.2.tgz.

Implementar funciones de reCAPTCHA para WAF

Según tus requisitos, puedes usar una o más funciones de reCAPTCHA para WAF en una sola aplicación.

Si quieres usar más de una función, debes crear una clave de reCAPTCHA para cada una de ellas y usarlas en tu aplicación. Por ejemplo, si tokens de acción de reCAPTCHA y una página de desafío de reCAPTCHA, debes crea una clave de token de acción y una clave de página de desafío, y úsalas en tu y mantener la integridad de su aplicación.

action-token

Debes tener reCAPTCHA en ejecución en tus páginas web para generar tokens de acción. Después de que reCAPTCHA genera un token de acción, lo adjuntas a un encabezado de solicitud predefinido cada vez que necesites proteger cualquier acción del usuario, como checkout. De forma predeterminada, los tokens de acción son válidos durante 30 minutos, pero pueden variar según el tráfico. Debes adjuntar el token de acción a un encabezado de solicitud predefinido antes de que venza, de modo que Akamai pueda evaluar los atributos del token.

Para implementar un token de acción de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de token de acción para tu sitio web.

    gcloud

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score o checkbox.
    • DOMAIN_NAME: Son dominios o subdominios de sitios web autorizados para usar la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, para que se pueda acceder a tu clave de reCAPTCHA y usarla por cualquier persona.

    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica action-token.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica akamai para Akamai.

    Ejecuta el crea claves de recaptcha de gcloud :

    Linux, macOS o 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

    La respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de claves y los tipos de integración, consulta Clave y Tipo de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score o checkbox.
    • DOMAIN_NAME: Son dominios o subdominios de sitios web autorizados para usar la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, para que se pueda acceder a tu clave de reCAPTCHA y usarla por cualquier persona.

    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica action-token.
    • WAF_SERVICE: Nombre del Proveedor de servicios de WAF. Especifica akamai para Akamai.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra tu clave de token de acción para usarla más adelante.

  2. Integra el JavaScript de reCAPTCHA en tus páginas web con la clave de token de acción que que creaste. Para obtener instrucciones, consulta el documento que corresponde al tipo de integración de tu clave de token de acción.
  3. Después de recibir el token de reCAPTCHA, adjúntalo a un encabezado de solicitud predefinido con el siguiente formato:
     X-Recaptcha-Token: value-of-your-action-token
    

    Puedes usar lenguajes como XHR, Ajax o la API de Fetch para adjuntar el token. a un encabezado de solicitud predefinido.

    En la siguiente secuencia de comandos de ejemplo, se muestra cómo proteger execute acción y adjuntar el token a un encabezado de solicitud predefinido con 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

JavaScript de reCAPTCHA establece un token de sesión de reCAPTCHA como una cookie en navegador del usuario final después de la evaluación. El navegador del usuario final adjunta el cookie y la actualiza, siempre y cuando JavaScript de reCAPTCHA permanece activo.

Para proporcionar un token de sesión como una cookie, instala una clave de token de sesión en al menos una de tus páginas web que el usuario final navegue antes de la página que se debe proteger. Por ejemplo, si deseas proteger la página de confirmación de compras, instala una clave de token de sesión en la página principal o de producto.

Para obtener información sobre cómo instalar claves de token de sesión en tus páginas web, consulta Cómo integrar claves basadas en puntuaciones con el frontend.

Puedes usar esta cookie para proteger las solicitudes posteriores del usuario final y las cargas de página en un dominio específico. Los tokens de sesión son válidos durante 30 minutos de forma predeterminada. Sin embargo, si el usuario final permanece en la página en la que implementaste el token de sesión, reCAPTCHA lo actualiza periódicamente para evitar que venza.

Instala tokens de sesión en cada página que deba estar protegida por reCAPTCHA. Te recomendamos que protejas todas las páginas con reCAPTCHA y que uses las reglas de Google Cloud Armor para aplicar el acceso en todas las páginas, excepto en la primera que los usuarios finales exploren.

El siguiente es un token de sesión de reCAPTCHA de muestra:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Para implementar un token de sesión de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de token de sesión para tu sitio web.

    gcloud

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score.
    • DOMAIN_NAME: Dominios o subdominios de sitios web que tienen permitido el uso la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, para que se pueda acceder a tu clave de reCAPTCHA y usarla por cualquier persona.

    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica session-token.
    • WAF_SERVICE: Nombre del Proveedor de servicios de WAF. Especifica akamai para Akamai.

    Ejecuta el crea claves de recaptcha de gcloud :

    Linux, macOS o 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

    La respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de clave y los tipos de integración, consulta Clave y el Tipo de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica score.
    • DOMAIN_NAME: Dominios o subdominios de sitios web que tienen permitido el uso la clave.

      Especifica varios dominios como una lista separada por comas. Opcional: Especifica --allow-all-domains para inhabilitar la verificación del dominio.

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, para que se pueda acceder a tu clave de reCAPTCHA y usarla por cualquier persona.

    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica session-token.
    • WAF_SERVICE: Nombre del Proveedor de servicios de WAF. Especifica akamai para Akamai.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra la clave de token de sesión para usarla más adelante.

    Si quieres insertar el código JavaScript de reCAPTCHA de Akamai, omite este paso el próximo paso y configurar la propiedades en Administrador de propiedades de Akamai.

  2. Agrega la clave de token de sesión y waf=session al código JavaScript de reCAPTCHA.

    En la siguiente secuencia de comandos de ejemplo, se muestra cómo implementar un token de sesión en una página 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>

página-de-desafío

Cuando implementas una página de desafío de reCAPTCHA, reCAPTCHA redirecciona a una página intersticial en la que se determina si es necesario mostrarle un desafío de CAPTCHA a un usuario. Por lo tanto, es posible que los desafíos de la CAPTCHA visibles para todos los usuarios.

Para implementar una página de desafío de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de página de desafío para tu sitio web.

    gcloud

    Para crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica invisible.
    • DOMAIN_NAME: Son dominios o subdominios de sitios web autorizados para usar la clave. Especifica --allow-all-domains.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica challenge-page.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica akamai para Akamai.

    Ejecuta el crea claves de recaptcha de gcloud :

    Linux, macOS o 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

    La respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de clave y los tipos de integración, consulta Clave y el Tipo de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • INTEGRATION_TYPE: Tipo de integración. Especifica invisible.
    • DOMAIN_NAME: Son dominios o subdominios de sitios web autorizados para usar la clave. Especifica --allow-all-domains.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica challenge-page.
    • WAF_SERVICE: Nombre del Proveedor de servicios de WAF. Especifica akamai para Akamai.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra la clave de la página de desafío para usarla más adelante.

  2. Para redireccionar a los usuarios a la página de desafío de reCAPTCHA y recibir un token de reCAPTCHA, crea una política de firewall con la acción redirect en las páginas protegidas.

express

Para implementar la protección exprés de reCAPTCHA WAF, crea un exprés.

  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 crear claves de reCAPTCHA, usa el comando gcloud recaptcha keys create.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • WAF_SERVICE: Nombre del Proveedor de servicios de WAF. Especifica akamai para Akamai.

    Ejecuta el comando gcloud recaptcha keys create:

    Linux, macOS o 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

    La respuesta contiene la clave de reCAPTCHA recién creada.

    REST

    Para obtener información de referencia de la API sobre los tipos de clave y los tipos de integración, consulta Clave y el Tipo de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, es el nombre de un sitio.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica akamai para Akamai.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    Registra tu clave exprés para usarla más adelante.

Cómo realizar la integración con Akamai

Para realizar la integración con Akamai, debes configurar el servicio de EdgeWorker y las propiedades del servicio de EdgeWorker en el Administrador de propiedades.

Configura el servicio de EdgeWorker

  1. En Akamai Control Center, crea un ID de EdgeWorker y asígnale el rol de editor al ID de EdgeWorker que creaste.

  2. Si quieres subir el paquete de reCAPTCHA para Akamai, crea una versión de EdgeWorker con el paquete de reCAPTCHA que descargaste.

  3. Activa la versión de EdgeWorker.

Cómo configurar propiedades en el Administrador de propiedades

  1. Inicia Property Manager.

  2. Seleccione la propiedad de Akamai que desea proteger y crea una versión nueva de la propiedad.

  3. Según las funciones de WAF que hayas implementado, crea tus variables globales definidas por el usuario. Las variables globales que que se establecen en las propiedades comienzan con el prefijo PMUSER_.

    En la siguiente tabla, se enumeran las variables que puedes crear y agregar en la sección de variables de propiedad:

    Nombre de la variable Descripción Configuración de seguridad
    RECAPTCHAJSINSTALL Incorpora JavaScript de reCAPTCHA. URLs de las páginas en las que deseas que Akamai llame a la API de reCAPTCHA para evaluar la puntuación de reCAPTCHA y realizar la acción que se configuró en la política de firewall Especifica el rutas de acceso como un patrón glob y usar `;` como delimitador. Oculto
    RECAPTCHACHALLENGESITEKEY Clave de la página de desafío de reCAPTCHA. Esta variable es obligatoria si quieres para redireccionar a los usuarios a la página del desafío de reCAPTCHA. Oculto
    RECAPTCHAACTIONSITEKEY Clave del token de acción de reCAPTCHA. Esta variable es obligatoria si usas Token de acción de reCAPTCHA para proteger tus páginas. Oculto
    RECAPTCHASESSIONSITEKEY Clave de token de sesión de reCAPTCHA. Esta variable es obligatoria si usas el token de sesión de reCAPTCHA para proteger tus páginas. Debes usar este variable si RECAPTCHAJSINSTALL está configurado para configurar JavaScript de reCAPTCHA de Akamai. Oculto
    RECAPTCHAEXPRESSSITEKEY Clave exprés de reCAPTCHA Esta variable es obligatoria si usas reCAPTCHA exprés para proteger tus páginas. Oculto
    GCPPROJECTNUMBER

    Tu ID del proyecto de Google Cloud.

    Oculto
    GCPAPIKEY

    La clave de API que creaste para la autenticación.

    Oculto

    Para obtener instrucciones, consulta Cómo crear una variable.

  4. Para habilitar el servicio EdgeWorker, agrega una regla Utilice la Plantilla de reglas en blanco con la siguiente información:

    • Criterios

      • Nombre: reCAPTCHA EdgeWorkers rule
      • Criterios: Coincidir con todo
        Si
        Ruta
        coincide con una de
        /*

        Los criterios de matches one of deben coincidir con un superconjunto de las URLs que reCAPTCHA debe proteger. La ruta de acceso /* incluye todas las rutas de acceso. Puedes agregar páginas específicas.

      • Opcional: Si desea agregar una condición adicional para limitar las extensiones de archivo, usa lo siguiente:

        Si
        Extensión de archivo
        es uno de
        html

    • Comportamiento

      • Habilitar: Activado
      • Identificador: Your_EdgeWorker_ID
      • Habilitar los informes de mPulse: Desactivado
  5. Para reenviar la llamada del servicio de EdgeWorker a la API de createAssessment de reCAPTCHA, agrega una regla nueva con la plantilla de regla en blanco con la siguiente información:

    • Criterios

      • Nombre: reCAPTCHA assessment rule
      • Criterios: Coincidir con todo
        Si
        Ruta
        coincide con una de
        /v1/projects/*/assessments
    • Comportamiento

      • Tipo de origen: Tu origen
      • Nombre de host del servidor de origen: public-preview-recaptchaenterprise.googleapis.com
      • Encabezado de host de reenvío: Valor personalizado
      • Custom Forward Host Header: public-preview-recaptchaenterprise.googleapis.com
      • Nombre de host de la clave de caché: Nombre de host de origen
      • Admite compresión Gzip:
      • Enviar encabezado de IP del cliente real:
      • Nombre del encabezado de IP de cliente real: True-Client-IP
      • Permitir que los clientes establezcan el encabezado True-Client-IP: No
      • Configuración de verificación: Usa la configuración de la plataforma.
      • Usar la extensión TLS de SNI:
      • Puerto HTTP: 80
      • Puerto HTTPS: 443
  6. Opcional: Para reenviar la llamada del servicio de EdgeWorker a la página de desafío de reCAPTCHA, agrega una regla nueva para redireccionar el tráfico a la página de desafío con la siguiente información:

    • Criterios

      • Nombre: reCAPTCHA challenge page rule
      • Criterios: Coincidir con todos
        Si
        Ruta
        coincide con uno de
        /recaptcha/challengepage
    • Comportamiento

      • Tipo de origen: Tu origen
      • Nombre de host del servidor de origen: www.google.com
      • Encabezado de host de reenvío: Valor personalizado
      • Encabezado personalizado de host de reenvío: www.google.com
      • Nombre de host de la clave de caché: Nombre de host de origen
      • Admite compresión Gzip:
      • Enviar encabezado de IP del cliente real:
      • Nombre del encabezado de IP de cliente real: True-Client-IP
      • Permitir que los clientes establezcan el encabezado True-Client-IP: No
      • Configuración de verificación: Usa la configuración de la plataforma.
      • Usar la extensión TLS de SNI:
      • Puerto HTTP: 80
      • Puerto HTTPS: 443
  7. Activa los cambios:

    1. Activa los cambios en la etapa de pruebas.
    2. Prueba los cambios en la etapa de pruebas.
    3. Activa los cambios en producción.

Crea políticas de firewall de reCAPTCHA

Debes crear una política de firewall que especifique reglas para cada página que desees proteger en tu sitio web. Puedes crear políticas de firewall con una o más funciones de reCAPTCHA para WAF.

En tu política de firewall de reCAPTCHA, agrega reglas en el orden de la prioridad prevista. La primera regla tiene el orden más alto. También puedes reordenar la prioridad con ReorderFirewallPoliciesRequest. En el caso de una solicitud entrante, cuando una condición de política coincide con la ruta de acceso especificada, el proveedor de servicios de WAF implementa la acción definida y no se evalúan las reglas posteriores.

  1. Según las funciones que hayas elegido, haz lo siguiente:
    • Identifica la ruta que deseas proteger.
    • Identificar las condiciones para permitir, redireccionar o bloquear el acceso
    • Establece prioridades para las reglas.
  2. Comprende la componentes de la política de firewall y sus atributos.
  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 anular gcloud CLI y acceder a la versión preliminar pública de la API de reCAPTCHA, ejecuta el siguiente comando:
        gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
        
  5. Para crear políticas de firewall de reCAPTCHA, usa el comando gcloud reCAPTCHA firewall-policies create:

    En tu política de firewall de reCAPTCHA, agrega reglas en orden de la prioridad prevista. Primero, debes agregar una regla con la prioridad más alta. Para un solicitud entrante, cuando una condición de la política coincide con la ruta especificada, tu proveedor de servicios de WAF implementa la acción definida y la subsiguiente las reglas de firewall no se evalúan. La regla predeterminada es permitir el acceso.

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

    Ingresa los siguientes valores:

    • ACTION: Son las acciones que debe realizar tu proveedor de servicios de WAF para la solicitud entrante. Puede contener como máximo una acción terminal, que es una acción que fuerza una respuesta. Especifica una de las siguientes acciones:
      • allow: Permite el acceso a la página solicitada. Esta es una acción de terminal.
      • block: Rechaza el acceso a la página solicitada. Esta es una acción terminal.
      • redirect: Redirecciona la solicitud del usuario entrante a la página de desafío de reCAPTCHA. Esta es una acción terminal.
      • substitute: Entrega una página diferente a la solicitada a una solicitud fraudulenta del usuario. Esta es una acción terminal.
      • set_header: Establece un encabezado personalizado y permite que la solicitud entrante del usuario continúe al backend. Luego, el backend puede activar una protección personalizada. Esta acción no es terminal.
    • CONDITION: un CEL (Common Expression Language) que especifica si se aplica la política de firewall de reCAPTCHA a las solicitudes entrantes de los usuarios. Si esta condition se evalúa como true y la ruta solicitada coincide con el patrón de ruta de acceso, el proveedor de servicios de WAF ejecuta las acciones asociadas. Se verifica que la cadena de condición tenga la sintaxis de CEL correcta durante la creación. Para obtener más información sobre la definición del lenguaje, consulta la definición del lenguaje CEL.
    • DESCRIPTION: Una descripción de lo que pretende lograr la política de firewall de reCAPTCHA. La descripción debe tener, como máximo, 256 caracteres UTF-8 caracteres.
    • PATH: Es la ruta para la que se aplica la política de firewall de reCAPTCHA. Debe especificarse como un patrón glob. Para obtener más información sobre glob, consulta la página del manual.

    Después de ejecutar correctamente el comando, obtendrás un resultado similar al siguiente: se muestra lo siguiente:

         Created [100].
       

    En el siguiente ejemplo, se crea una política de firewall de reCAPTCHA para bloquear la segmentación por tráfico de /example/page.html cuando la puntuación es inferior a 0.1.

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

¿Qué sigue?