웹사이트용 Google Cloud Armor와 통합

이 문서에서는 웹사이트에서 Cloud Armor용 reCAPTCHA를 통합하는 방법을 보여줍니다.

통합을 완료하려면 Cloud Armor용 reCAPTCHA 기능을 하나 이상 구현하고 Cloud Armor 보안 정책을 구성해야 합니다.

시작하기 전에

  1. reCAPTCHA Enterprise API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기

    API 사용 설정하기

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

    1. 사용 사례에 가장 적합한 WAF 기능을 하나 이상 선택합니다.
    2. 보호하려는 페이지와 이러한 페이지에서 구현하려는 Cloud Armor 기능 유형을 식별합니다.

Cloud Armor용 reCAPTCHA 기능 구현

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

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

reCAPTCHA 작업 토큰 구현

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

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

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

    Cloud 콘솔

    1. Google Cloud 콘솔에서 Google Cloud Fraud Defense 페이지로 이동합니다.

      Google Cloud Fraud Defense로 이동

    2. 페이지 상단의 리소스 선택기에 프로젝트 이름이 표시되는지 확인합니다.

      프로젝트 이름이 표시되지 않으면 리소스 선택기를 클릭한 다음 프로젝트를 선택합니다.

    3. 탭을 선택합니다.
    4. 키 만들기를 클릭합니다.
    5. 표시 이름 필드에 키의 표시 이름을 입력합니다.
    6. WAF용 reCAPTCHA 키를 만들려는 플랫폼에 따라 적절한 작업을 수행합니다.
      1. 애플리케이션 유형으로 을 선택합니다.

        도메인 목록 섹션이 표시됩니다.

      2. 도메인과 하위 도메인의 reCAPTCHA 키를 보호하려면 도메인 확인 사용 중지 전환이 사용 중지되어 있는지 확인합니다.

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

      3. 웹사이트의 도메인 이름을 입력합니다.

        1. 도메인 목록 섹션에서 도메인 추가를 클릭합니다.
        2. 도메인 필드에 도메인 이름을 입력합니다.
        3. 선택사항: 도메인을 더 추가하려면 도메인 추가를 클릭하고 도메인 필드에 다른 도메인의 이름을 입력합니다. 도메인을 최대 250개까지 추가할 수 있습니다.

          웹사이트의 경우 reCAPTCHA 키는 지정한 도메인과 하위 도메인에 고유합니다. 여러 도메인에서 웹사이트를 제공할 경우 도메인을 2개 이상 지정할 수 있습니다. 도메인을 지정할 때(예: examplepetstore.com)는 하위 도메인(예: subdomain.examplepetstore.com)을 지정할 필요가 없습니다.

      4. 추가 설정에서 웹 애플리케이션 방화벽 (WAF)에 이 키를 배포하시겠습니까? 전환을 사용 설정합니다.
      5. 기능 옵션에서 작업을 선택합니다.

      6. 선택사항: reCAPTCHA 테스트를 사용하시겠어요? 전환 버튼을 사용 설정합니다.

      7. 키 만들기를 클릭합니다.
      8. reCAPTCHA 키 페이지에 새로 생성된 키가 나열됩니다.

    gcloud

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

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

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

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

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

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

    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 참조 정보는 통합 유형을 참조하세요.

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

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

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

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

    • WAF_FEATURE: WAF 기능 이름입니다. action-token를 지정하세요.
    • WAF_SERVICE: WAF 서비스 제공업체의 이름입니다. Cloud Armor에 CA를 지정합니다.
    • DEFAULT_SCORE_THRESHOLD: 정책 기반 챌린지 키의 경우 맞춤 점수 기준점이 정의되지 않은 경우 키의 범용 챌린지 기준점을 정의합니다. 이 기능은 미리보기로 제공됩니다.
    • ACTION_SCORE_THRESHOLDS: 정책 기반 챌린지 키의 경우 작업과 0.0~1.0 사이의 해당 기준 점수를 지정합니다. 예를 들면 login='{"scoreThreshold": "0.3"}',signup='{"scoreThreshold": "0.1"}'입니다. 이 기능은 미리보기로 제공됩니다.

    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": "INTEGRATION_TYPE"
       }
       
    }
    

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

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