WAF용 reCAPTCHA를 Akamai와 통합

이 문서에서는 WAF용 reCAPTCHA를 Akamai와 통합하는 방법을 보여줍니다.

통합을 완료하려면 WAF용 reCAPTCHA 기능을 하나 이상 구현하고 reCAPTCHA 방화벽 정책을 만들고 Akamai EdgeWorkers 서비스를 만들고 구성하여 Akamai와 통합해야 합니다.

시작하기 전에

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

    Go to project selector

    나중에 사용할 수 있도록 Google Cloud 프로젝트 ID를 기록합니다.

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

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. 인증을 위한 API 키를 만듭니다.

    1. Google Cloud 콘솔에서 사용자 인증 정보 페이지로 이동합니다.

      사용자 인증 정보로 이동

    2. 사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
    3. 나중에 사용할 수 있도록 API 키를 기록합니다.

  5. WAF용 reCAPTCHA 기능을 구현하여 웹사이트를 보호하는 방법을 계획합니다.

    1. 사용 사례에 가장 적합한 WAF 기능을 하나 이상 선택합니다.
    2. 보호하려는 페이지를 식별합니다.
    3. 식별된 페이지에서 구현하려는 WAF 기능 유형을 선택합니다.
    4. 사용자 액세스를 관리하기 위한 조건을 식별합니다.
    5. reCAPTCHA 방화벽 정책을 만드는 데 도움이 되는 reCAPTCHA 방화벽 정책 구성요소 및 해당 속성을 알아봅니다. 예시는 reCAPTCHA 방화벽 정책 예시를 참조하세요.
  6. Akamai 구성의 경우 다음이 있는지 확인합니다.

    1. 애플리케이션의 Akamai 계정Akamai 속성

    2. Akamai Marketplace에서 Akamai EdgeWorkers에 대한 액세스 권한

    3. EdgeWorkers를 만들 수 있는 기능

  7. Akamai용 reCAPTCHA 패키지(recaptcha_akamai_client_0.0.2.tgz)를 다운로드합니다.

WAF용 reCAPTCHA 기능 구현

요구사항에 따라 단일 애플리케이션에서 WAF용 reCAPTCHA 기능을 하나 이상 사용할 수 있습니다.

기능을 두 개 이상 사용하려면 기능마다 reCAPTCHA 키를 만들고 애플리케이션에서 사용해야 합니다. 예를 들어 reCAPTCHA 작업 토큰과 reCAPTCHA 테스트 페이지를 사용하려면 작업 토큰 키와 테스트 페이지 키를 만들고 애플리케이션에서 사용해야 합니다.

작업 토큰

작업 토큰을 생성하려면 웹페이지에서 reCAPTCHA를 실행해야 합니다. reCAPTCHA에서 작업 토큰을 생성한 후에는 checkout과 같은 사용자 작업을 보호해야 하는 사전 정의된 요청 헤더에 작업 토큰을 연결합니다. 기본적으로 작업 토큰은 30분 동안 유효하지만 트래픽에 따라 달라질 수 있습니다. Akamai가 토큰 속성을 평가할 수 있도록 토큰이 만료되기 전에 사전 정의된 요청 헤더에 작업 토큰을 연결해야 합니다.

reCAPTCHA 작업 토큰을 구현하려면 다음 안내를 따르세요.

  1. 웹사이트용 작업 토큰 키를 만듭니다.

    gcloud

    reCAPTCHA 키를 만들려면 gcloud recaptcha keys create 명령어를 사용합니다.

    아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

    • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
    • INTEGRATION_TYPE: 통합 유형입니다. score 또는 checkbox를 지정하세요.
    • DOMAIN_NAME: 키를 사용할 수 있는 웹사이트의 도메인이나 하위 도메인입니다.

      여러 도메인을 쉼표로 구분된 목록으로 지정합니다. 선택사항: --allow-all-domains를 지정하여 도메인 확인을 중지합니다.

      도메인 확인을 사용 중지하면 사이트에 제한이 없으므로 reCAPTCHA 키를 누구나 액세스하고 사용할 수 있어서 보안 위험이 발생합니다.

    • WAF_FEATURE: WAF 기능 이름입니다. action-token를 지정하세요.
    • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

    gcloud recaptcha keys create 명령어를 실행합니다.

    Linux, macOS 또는 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

    응답에 새로 생성된 reCAPTCHA 키가 포함됩니다.

    REST

    키 유형 및 통합 유형에 대한 API 참조 정보는 통합 유형을 참조하세요.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
    • INTEGRATION_TYPE: 통합 유형입니다. score 또는 checkbox를 지정하세요.
    • DOMAIN_NAME: 키를 사용할 수 있는 웹사이트의 도메인이나 하위 도메인입니다.

      여러 도메인을 쉼표로 구분된 목록으로 지정합니다. 선택사항: --allow-all-domains를 지정하여 도메인 확인을 중지합니다.

      도메인 확인을 사용 중지하면 사이트에 제한이 없으므로 reCAPTCHA 키를 누구나 액세스하고 사용할 수 있어서 보안 위험이 발생합니다.

    • WAF_FEATURE: WAF 기능 이름입니다. action-token를 지정하세요.
    • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

    HTTP 메서드 및 URL:

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

    JSON 요청 본문:

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

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    curl

    요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

    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

    요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

    $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

    다음과 비슷한 JSON 응답이 표시됩니다.

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

    나중에 사용할 수 있도록 작업 토큰 키를 기록합니다.

  2. 웹페이지에서 만든 작업 토큰 키와 reCAPTCHA JavaScript를 통합합니다. 자세한 내용은 작업 토큰 키 통합 유형에 해당하는 문서를 참조하세요.
  3. reCAPTCHA에서 토큰을 받은 후 이 토큰을 사전 정의된 요청 헤더에 다음 형식으로 연결합니다.
     X-Recaptcha-Token: value-of-your-action-token
    

    XHR, Ajax 또는 Fetch API와 같은 언어를 사용하여 사전 정의된 요청 헤더에 토큰을 연결할 수 있습니다.

    다음 샘플 스크립트에서는 execute 작업을 보호하고 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>
      
      

세션 토큰

reCAPTCHA JavaScript는 평가 후 최종 사용자 브라우저에서 reCAPTCHA 세션 토큰을 쿠키로 설정합니다. reCAPTCHA JavaScript가 활성 상태로 유지되는 동안 최종 사용자 브라우저는 쿠키를 연결하고 새로고침합니다.

세션 토큰을 쿠키로 제공하려면 보호해야 하는 페이지 앞에 최종 사용자가 탐색하는 웹페이지 최소 하나 이상에 세션 토큰 키를 설치합니다. 예를 들어 결제 페이지를 보호하려면 홈페이지나 제품 페이지에 세션 토큰 키를 설치합니다.

웹페이지에 세션 토큰 키를 설치하는 방법은 점수 기반 키를 프런트엔드와 통합을 참조하세요.

이 쿠키를 사용하여 특정 도메인에서 최종 사용자의 후속 요청 및 페이지 로드를 보호할 수 있습니다. 세션 토큰은 기본적으로 30분 동안 유효합니다. 하지만 세션 토큰을 구현한 페이지에 최종 사용자가 머무르면 세션 토큰이 만료되지 않도록 reCAPTCHA가 세션 토큰을 주기적으로 새로고침합니다.

reCAPTCHA로 보호해야 하는 각 페이지에 세션 토큰을 설치합니다. reCAPTCHA로 모든 페이지를 보호하고 Google Cloud Armor 규칙을 사용하여 최종 사용자가 탐색하는 첫 번째 페이지를 제외한 모든 페이지에 액세스 권한을 적용하는 것이 좋습니다.

다음은 reCAPTCHA 세션 토큰의 샘플입니다.
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

reCAPTCHA 세션 토큰을 구현하려면 다음 안내를 따르세요.

  1. 웹사이트용 세션 토큰 키를 만듭니다.

    gcloud

    reCAPTCHA 키를 만들려면 gcloud recaptcha keys create 명령어를 사용합니다.

    아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

    • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
    • INTEGRATION_TYPE: 통합 유형입니다. score를 지정하세요.
    • DOMAIN_NAME: 키를 사용할 수 있는 웹사이트의 도메인이나 하위 도메인입니다.

      여러 도메인을 쉼표로 구분된 목록으로 지정합니다. 선택사항: --allow-all-domains를 지정하여 도메인 확인을 중지합니다.

      도메인 확인을 사용 중지하면 사이트에 제한이 없으므로 reCAPTCHA 키를 누구나 액세스하고 사용할 수 있어서 보안 위험이 발생합니다.

    • WAF_FEATURE: WAF 기능 이름입니다. session-token를 지정하세요.
    • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

    gcloud recaptcha keys create 명령어를 실행합니다.

    Linux, macOS 또는 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

    응답에 새로 생성된 reCAPTCHA 키가 포함됩니다.

    REST

    키 유형 및 통합 유형에 대한 API 참조 정보는 통합 유형을 참조하세요.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
    • INTEGRATION_TYPE: 통합 유형입니다. score를 지정하세요.
    • DOMAIN_NAME: 키를 사용할 수 있는 웹사이트의 도메인이나 하위 도메인입니다.

      여러 도메인을 쉼표로 구분된 목록으로 지정합니다. 선택사항: --allow-all-domains를 지정하여 도메인 확인을 중지합니다.

      도메인 확인을 사용 중지하면 사이트에 제한이 없으므로 reCAPTCHA 키를 누구나 액세스하고 사용할 수 있어서 보안 위험이 발생합니다.

    • WAF_FEATURE: WAF 기능 이름입니다. session-token를 지정하세요.
    • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

    HTTP 메서드 및 URL:

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

    JSON 요청 본문:

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

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    curl

    요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

    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

    요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

    $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

    다음과 비슷한 JSON 응답이 표시됩니다.

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

    나중에 사용할 수 있도록 세션 토큰 키를 기록합니다.

    Akamai에서 reCAPTCHA JavaScript를 삽입하려면 다음 단계를 건너뛰고 Akamai Property Manager에서 속성을 구성합니다.

  2. 세션 토큰 키와 waf=session을 reCAPTCHA JavaScript에 추가합니다.

    다음 샘플 스크립트는 웹페이지에 세션 토큰을 구현하는 방법을 보여줍니다.

    <!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 akamai for Akamai.

    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

    응답에 새로 생성된 reCAPTCHA 키가 포함됩니다.

REST

키 유형 및 통합 유형에 대한 API 참조 정보는 통합 유형을 참조하세요.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
  • INTEGRATION_TYPE: 통합 유형입니다. invisible를 지정하세요.
  • DOMAIN_NAME: 키를 사용할 수 있는 웹사이트의 도메인이나 하위 도메인입니다. --allow-all-domains를 지정하세요.
  • WAF_FEATURE: WAF 기능 이름입니다. challenge-page를 지정하세요.
  • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:


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

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

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

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$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

다음과 비슷한 JSON 응답이 표시됩니다.


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

"webSettings": {
  "allowAllDomains": true,
  "allowedDomains": [
    "localhost"
  ],

  "integrationType": "INVISIBLE",
 

},
"wafSettings": {
  "wafService": "akamai",

  "wafFeature": "CHALLENGE_PAGE"
  

}
}

나중에 사용할 수 있도록 테스트 페이지 키를 기록합니다.

  • 사용자를 reCAPTCHA 테스트 페이지로 리디렉션하고 reCAPTCHA 토큰을 받으려면 보호된 페이지에서 redirect 작업을 사용하여 방화벽 정책을 만듭니다.
  • express

    reCAPTCHA WAF 익스프레스 보호를 구현하려면 익스프레스 키를 만듭니다.

    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

      reCAPTCHA 키를 만들려면 gcloud recaptcha keys create 명령어를 사용합니다.

      아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

      • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
      • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

      gcloud recaptcha keys create 명령어를 실행합니다.

      Linux, macOS 또는 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

      응답에 새로 생성된 reCAPTCHA 키가 포함됩니다.

      REST

      키 유형 및 통합 유형에 대한 API 참조 정보는 통합 유형을 참조하세요.

      요청 데이터를 사용하기 전에 다음을 바꿉니다.

      • DISPLAY_NAME: 키 이름입니다. 일반적으로 사이트 이름입니다.
      • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Akamai에 akamai를 지정합니다.

      HTTP 메서드 및 URL:

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

      JSON 요청 본문:

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

      요청을 보내려면 다음 옵션 중 하나를 선택합니다.

      curl

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      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

      요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

      $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

      다음과 비슷한 JSON 응답이 표시됩니다.

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

      나중에 사용할 수 있도록 익스프레스 키를 기록합니다.

    Akamai와 통합

    Akamai와 통합하려면 EdgeWorker 서비스를 설정하고 Property Manager에서 EdgeWorker 서비스의 속성을 구성해야 합니다.

    EdgeWorker 서비스 설정

    1. Akamai Control Center에서 EdgeWorker ID를 만들고 만든 EdgeWorker ID에 편집자 역할을 할당합니다.

    2. Akamai용 reCAPTCHA 패키지를 업로드하려면 다운로드한 reCAPTCHA 패키지를 사용하여 EdgeWorker 버전을 만듭니다.

    3. EdgeWorker 버전을 활성화합니다.

    Property Manager에서 속성 구성

    1. Property Manager 실행

    2. 보호하려는 Akamai 속성을 선택하고 새 버전의 속성을 만듭니다.

    3. 구현한 WAF 기능에 따라 전역 사용자 정의 변수를 만듭니다. 속성에서 설정하는 전역 변수는 PMUSER_ 프리픽스로 시작합니다.

      다음 표에는 속성 변수 섹션에서 만들고 추가할 수 있는 변수가 나열되어 있습니다.

      변수 이름 설명 보안 설정
      RECAPTCHAJSINSTALL reCAPTCHA JavaScript를 삽입합니다. Akamai가 reCAPTCHA API를 호출하여 reCAPTCHA 점수를 평가하고 방화벽 정책에 구성된 작업을 수행할 페이지의 URL입니다. 경로를 glob 패턴으로 지정하고 `;`을 구분 기호로 사용합니다. 히든
      RECAPTCHACHALLENGESITEKEY reCAPTCHA 테스트 페이지 키입니다. 사용자를 reCAPTCHA 테스트 페이지로 리디렉션하려면 이 변수가 필요합니다. 히든
      RECAPTCHAACTIONSITEKEY reCAPTCHA 작업 토큰 키입니다. 이 변수는 페이지 보호를 위해 reCAPTCHA 작업 토큰을 사용하는 경우 필요합니다. 히든
      RECAPTCHASESSIONSITEKEY reCAPTCHA 세션 토큰 키입니다. 이 변수는 페이지 보호를 위해 reCAPTCHA 세션 토큰을 사용하는 경우 필요합니다. RECAPTCHAJSINSTALL이 Akamai의 reCAPTCHA JavaScript를 구성하도록 설정된 경우 이 변수를 사용해야 합니다. 히든
      RECAPTCHAEXPRESSSITEKEY reCAPTCHA 익스프레스 키입니다. 이 변수는 페이지 보호를 위해 reCAPTCHA 익스프레스를 사용하는 경우 필요합니다. 히든
      GCPPROJECTNUMBER

      Google Cloud 프로젝트 ID입니다.

      히든
      GCPAPIKEY

      인증을 위해 만든 API 키입니다.

      히든

      자세한 내용은 변수 만들기를 참조하세요.

    4. EdgeWorker 서비스를 사용 설정하려면 다음 정보가 포함된 빈 규칙 템플릿을 사용하여 규칙을 추가합니다.

      • 기준

        • 이름: reCAPTCHA EdgeWorkers rule
        • 기준: 모두 일치
          경우
          경로
          다음 중 하나와 일치
          /*

          matches one of 기준은 reCAPTCHA로 보호해야 하는 URL의 상위 집합과 일치해야 합니다. 경로 /*에는 모든 경로가 포함됩니다. 특정 페이지를 추가할 수 있습니다.

        • 선택사항: 파일 확장자를 제한하는 조건을 추가하려면 다음을 사용하세요.

          경우
          파일 확장자
          다음 중 하나
          html

      • 동작

        • 사용 설정: 사용
        • 식별자: Your_EdgeWorker_ID
        • mPulse 보고서 사용 설정: 사용 안 함
    5. EdgeWorker 서비스에서 reCAPTCHA createAssessment API로 호출을 전달하려면 다음 정보가 포함된 빈 규칙 템플릿을 사용하여 새 규칙을 추가합니다.

      • 기준

        • 이름: reCAPTCHA assessment rule
        • 기준: 모두 일치
          경우
          경로
          다음 중 하나와 일치
          /v1/projects/*/assessments
      • 동작

        • 원본 유형: 내 원본
        • 원본 서버 호스트 이름: public-preview-recaptchaenterprise.googleapis.com
        • 전달 호스트 헤더: 커스텀 값
        • 커스텀 전달 호스트 헤더: public-preview-recaptchaenterprise.googleapis.com
        • 캐시 키 호스트 이름: 원본 호스트 이름
        • Gzip 압축 지원:
        • 실제 클라이언트 IP 헤더 전송:
        • 실제 클라이언트 IP 헤더 이름: True-Client-IP
        • 클라이언트가 실제 클라이언트 IP 헤더를 설정하도록 허용: 아니요
        • 인증 설정: 플랫폼 설정 사용
        • SNI TLS 확장 프로그램 사용:
        • HTTP 포트: 80
        • HTTPS 포트: 443
    6. 선택사항: EdgeWorker 서비스에서 reCAPTCHA 테스트 페이지로 호출을 전달하려면 새 규칙을 추가하여 다음 정보와 함께 트래픽을 테스트 페이지로 리디렉션합니다.

      • 기준

        • 이름: reCAPTCHA challenge page rule
        • 기준: 모두 일치
          경우
          경로
          다음 중 하나와 일치
          /recaptcha/challengepage
      • 동작

        • 원본 유형: 내 원본
        • 원본 서버 호스트 이름: www.google.com
        • 전달 호스트 헤더: 커스텀 값
        • 커스텀 전달 호스트 헤더: www.google.com
        • 캐시 키 호스트 이름: 원본 호스트 이름
        • Gzip 압축 지원:
        • 실제 클라이언트 IP 헤더 전송:
        • 실제 클라이언트 IP 헤더 이름: True-Client-IP
        • 클라이언트가 실제 클라이언트 IP 헤더를 설정하도록 허용: 아니요
        • 인증 설정: 플랫폼 설정 사용
        • SNI TLS 확장 프로그램 사용:
        • HTTP 포트: 80
        • HTTPS 포트: 443
    7. 변경사항을 활성화합니다.

      1. 스테이징에서 변경사항을 활성화합니다.
      2. 스테이징에서 변경사항을 테스트합니다.
      3. 프로덕션에서 변경사항을 활성화합니다.

    reCAPTCHA 방화벽 정책 만들기

    웹사이트에서 보호하려는 모든 페이지에 대한 규칙을 지정하는 방화벽 정책을 만들어야 합니다. WAF용 reCAPTCHA 기능을 하나 이상 사용하여 방화벽 정책을 만들 수 있습니다.

    reCAPTCHA 방화벽 정책에서 원하는 우선순위에 따라 규칙을 추가합니다. 첫 번째 규칙이 순서가 가장 높은 규칙입니다. ReorderFirewallPoliciesRequest를 사용하여 우선순위를 변경할 수도 있습니다. 수신되는 요청의 경우 지정된 경로에 대해 정책 조건이 일치하면 WAF 서비스 제공업체에서 정의된 작업을 구현하고 후속 규칙은 평가되지 않습니다.

    1. 선택한 기능에 따라 다음을 수행합니다.
      • 보호할 경로를 식별합니다.
      • 액세스를 허용, 리디렉션 또는 차단하는 조건을 식별합니다.
      • 규칙 우선순위를 지정합니다.
    2. 방화벽 정책 구성요소 및 해당 속성을 이해합니다.
    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. gcloud CLI를 재정의하여 reCAPTCHA API의 공개 미리보기 버전에 액세스하려면 다음 명령어를 실행합니다.
          gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
          
    5. reCAPTCHA 방화벽 정책을 만들려면 gcloud recaptcha firewall-policies create 명령어를 사용합니다.

      reCAPTCHA 방화벽 정책에서 원하는 우선순위에 따라 규칙을 추가합니다. 먼저 우선순위가 가장 높은 규칙을 추가해야 합니다. 수신되는 요청의 경우 지정된 경로에 대해 정책 조건이 일치하면 WAF 서비스 제공업체에서 정의된 작업을 구현하고 후속 규칙은 평가되지 않습니다. 기본 규칙은 액세스를 허용하는 것입니다.

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

      다음 값을 제공합니다.

      • ACTION: 수신되는 요청에 대해 WAF 서비스 제공업체에서 수행해야 하는 작업입니다. 응답을 강제하는 작업인 터미널 작업이 최대 하나 포함될 수 있습니다. 다음 작업 중 하나를 지정합니다.
        • allow: 요청된 페이지에 대한 액세스를 허용합니다. 이는 터미널 작업입니다.
        • block: 요청된 페이지에 대한 액세스를 거부합니다. 이는 터미널 작업입니다.
        • redirect: 수신되는 사용자 요청을 reCAPTCHA 테스트 페이지로 리디렉션합니다. 이는 터미널 작업입니다.
        • substitute: 요청된 페이지가 아닌 다른 페이지를 허위 사용자 요청에 제공합니다. 이는 터미널 작업입니다.
        • set_header: 커스텀 헤더를 설정하고 수신되는 사용자 요청이 백엔드까지 계속되도록 허용합니다. 그러면 백엔드가 맞춤설정된 보호를 트리거할 수 있습니다. 이는 터미널 작업이 아닌 작업입니다.
      • CONDITION: reCAPTCHA 방화벽 정책이 수신되는 사용자 요청에 적용되는지 여부를 지정하는 CEL(Common Expression Language) 조건식입니다. 이 조건이 true로 평가되고 요청된 경로가 경로 패턴과 일치하면 WAF 서비스 제공업체에서 관련 작업을 실행합니다. 조건 문자열에서 생성 시 CEL 문법 정확성을 확인합니다. 언어 정의에 대한 자세한 내용은 CEL 언어 정의를 참조하세요.
      • DESCRIPTION: reCAPTCHA 방화벽 정책이 달성하려는 목표에 대한 설명입니다. 설명은 UTF-8 형식의 최대 256자(영문 기준)여야 합니다.
      • PATH: reCAPTCHA 방화벽 정책이 적용되는 경로입니다. glob 패턴으로 지정해야 합니다. glob에 대한 자세한 내용은 수동 페이지를 참조하세요.

      명령어 실행이 성공적으로 완료되면 다음과 비슷한 출력이 표시됩니다.

           Created [100].
         

      다음 예시에서는 점수가 0.1 미만일 때 /example/page.html의 트래픽 타겟팅을 차단하는 reCAPTCHA 방화벽 정책을 만듭니다.

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

    다음 단계