Mengintegrasikan reCAPTCHA untuk WAF dengan Akamai

Dokumen ini menunjukkan cara mengintegrasikan reCAPTCHA untuk WAF dengan Akamai.

Untuk menyelesaikan integrasi, Anda harus menerapkan satu atau beberapa fitur reCAPTCHA untuk WAF, membuat kebijakan firewall reCAPTCHA, dan berintegrasi dengan Akamai dengan membuat dan mengonfigurasi layanan Akamai EdgeWorkers.

Sebelum memulai

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

    Go to project selector

    Catat project ID Google Cloud Anda untuk digunakan nanti.

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

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Buat kunci API untuk autentikasi:

    1. Di konsol Google Cloud, buka halaman Credentials.

      Buka Kredensial

    2. Klik Create credentials, lalu pilih API key.
    3. Catat kunci API untuk digunakan nanti.

  5. Rencanakan cara Anda ingin menerapkan fitur reCAPTCHA untuk WAF guna melindungi situs Anda.

    1. Pilih satu atau beberapa fitur WAF yang paling sesuai dengan kasus penggunaan Anda.
    2. Identifikasi halaman yang ingin Anda lindungi.
    3. Pilih jenis fitur WAF yang ingin Anda terapkan di halaman yang diidentifikasi.
    4. Identifikasi kondisi untuk mengelola akses pengguna.
    5. Pahami komponen kebijakan firewall reCAPTCHA dan atributnya yang membantu Anda membuat kebijakan firewall reCAPTCHA. Untuk mengetahui contohnya, lihat Contoh kebijakan firewall reCAPTCHA.
  6. Untuk konfigurasi Akamai, pastikan Anda memiliki hal berikut:

    1. Akun Akamai dan properti Akamai untuk aplikasi Anda.

    2. Akses ke Akamai EdgeWorkers dari Akamai Marketplace.

    3. Kemampuan untuk membuat EdgeWorkers.

  7. Download paket reCAPTCHA untuk Akamai recaptcha_akamai_client_0.0.2.tgz.

Mengimplementasikan fitur reCAPTCHA untuk WAF

Bergantung pada persyaratan Anda, Anda dapat menggunakan satu atau beberapa fitur reCAPTCHA untuk WAF dalam satu aplikasi.

Jika ingin menggunakan lebih dari satu fitur, Anda harus membuat kunci reCAPTCHA untuk setiap fitur tersebut dan menggunakannya di aplikasi. Misalnya, jika Anda ingin menggunakan token tindakan reCAPTCHA dan halaman tantangan reCAPTCHA, Anda harus membuat kunci token tindakan dan kunci halaman tantangan, lalu menggunakannya di aplikasi Anda.

token-tindakan

Anda harus menjalankan reCAPTCHA di halaman web untuk membuat token tindakan. Setelah reCAPTCHA membuat token tindakan, Anda akan melampirkan token tindakan ke header permintaan yang telah ditentukan di mana pun Anda perlu melindungi tindakan pengguna, seperti checkout. Secara default, token tindakan valid selama 30 menit, tetapi dapat bervariasi bergantung pada traffic. Anda harus melampirkan token tindakan ke header permintaan yang telah ditentukan sebelum token berakhir masa berlakunya, sehingga Akamai dapat mengevaluasi atribut token.

Untuk menerapkan token tindakan reCAPTCHA, lakukan hal berikut:

  1. Buat kunci token tindakan untuk situs Anda.

    gcloud

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan score atau checkbox.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci.

      Tentukan beberapa domain sebagai daftar yang dipisahkan koma. Opsional: Tentukan --allow-all-domains untuk menonaktifkan verifikasi domain.

      Menonaktifkan verifikasi domain adalah risiko keamanan karena tidak ada batasan di situs, sehingga kunci reCAPTCHA Anda dapat diakses dan digunakan oleh siapa saja.

    • WAF_FEATURE: Nama fitur WAF. Tentukan action-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Jalankan perintah gcloud recaptcha keys create:

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

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    REST

    Untuk informasi referensi API tentang jenis kunci dan jenis integrasi, lihat Kunci dan Jenis integrasi.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan score atau checkbox.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci.

      Tentukan beberapa domain sebagai daftar yang dipisahkan koma. Opsional: Tentukan --allow-all-domains untuk menonaktifkan verifikasi domain.

      Menonaktifkan verifikasi domain adalah risiko keamanan karena tidak ada batasan di situs, sehingga kunci reCAPTCHA Anda dapat diakses dan digunakan oleh siapa saja.

    • WAF_FEATURE: Nama fitur WAF. Tentukan action-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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

    Anda akan melihat respons JSON seperti berikut:

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

    Catat kunci token tindakan Anda untuk digunakan nanti.

  2. Integrasikan JavaScript reCAPTCHA di halaman web Anda dengan kunci token tindakan yang Anda buat. Untuk mengetahui petunjuknya, lihat dokumen yang sesuai dengan jenis integrasi kunci token tindakan Anda.
  3. Setelah Anda menerima token dari reCAPTCHA, lampirkan token ke header permintaan yang telah ditentukan sebelumnya dalam format berikut:
     X-Recaptcha-Token: value-of-your-action-token
    

    Anda dapat menggunakan bahasa seperti XHR, Ajax, atau Fetch API untuk melampirkan token ke header permintaan yang telah ditentukan.

    Contoh skrip berikut menunjukkan cara melindungi tindakan execute dan melampirkan token ke header permintaan yang telah ditentukan menggunakan 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 reCAPTCHA menetapkan token sesi reCAPTCHA sebagai cookie di browser pengguna akhir setelah penilaian. Browser pengguna akhir akan melampirkan cookie dan memuat ulang cookie selama JavaScript reCAPTCHA tetap aktif.

Untuk memberikan token sesi sebagai cookie, instal kunci token sesi di setidaknya salah satu halaman web Anda yang dijelajahi pengguna akhir sebelum halaman yang perlu dilindungi. Misalnya, jika Anda ingin melindungi halaman checkout, instal kunci token sesi di halaman beranda atau halaman produk.

Untuk mempelajari cara menginstal kunci token sesi di halaman web Anda, lihat Mengintegrasikan kunci berbasis skor dengan frontend.

Anda dapat menggunakan cookie ini untuk melindungi permintaan berikutnya dan pemuatan halaman pengguna akhir di domain tertentu. Token sesi berlaku selama 30 menit secara default. Namun, jika pengguna akhir tetap berada di halaman tempat Anda menerapkan token sesi, reCAPTCHA akan memuat ulang token sesi secara berkala untuk mencegahnya berakhir masa berlakunya.

Instal token sesi di setiap halaman yang perlu dilindungi oleh reCAPTCHA. Sebaiknya lindungi setiap halaman dengan reCAPTCHA dan gunakan aturan Google Cloud Armor untuk menerapkan akses di semua halaman, kecuali halaman pertama yang dijelajahi pengguna akhir.

Berikut adalah contoh token sesi reCAPTCHA:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Untuk menerapkan token sesi reCAPTCHA, lakukan hal berikut:

  1. Buat kunci token sesi untuk situs Anda.

    gcloud

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan score.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci.

      Tentukan beberapa domain sebagai daftar yang dipisahkan koma. Opsional: Tentukan --allow-all-domains untuk menonaktifkan verifikasi domain.

      Menonaktifkan verifikasi domain adalah risiko keamanan karena tidak ada batasan di situs, sehingga kunci reCAPTCHA Anda dapat diakses dan digunakan oleh siapa saja.

    • WAF_FEATURE: Nama fitur WAF. Tentukan session-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Jalankan perintah gcloud recaptcha keys create:

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

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    REST

    Untuk informasi referensi API tentang jenis kunci dan jenis integrasi, lihat Kunci dan Jenis integrasi.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan score.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci.

      Tentukan beberapa domain sebagai daftar yang dipisahkan koma. Opsional: Tentukan --allow-all-domains untuk menonaktifkan verifikasi domain.

      Menonaktifkan verifikasi domain adalah risiko keamanan karena tidak ada batasan di situs, sehingga kunci reCAPTCHA Anda dapat diakses dan digunakan oleh siapa saja.

    • WAF_FEATURE: Nama fitur WAF. Tentukan session-token.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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

    Anda akan melihat respons JSON seperti berikut:

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

    Catat kunci token sesi Anda untuk digunakan nanti.

    Jika Anda ingin memasukkan JavaScript reCAPTCHA dari Akamai, lewati langkah berikutnya dan konfigurasi properti di Pengelola Properti Akamai.

  2. Tambahkan kunci token sesi dan waf=session ke JavaScript reCAPTCHA.

    Contoh skrip berikut menunjukkan cara menerapkan token sesi di halaman 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

Saat Anda menerapkan halaman tantangan reCAPTCHA, reCAPTCHA akan mengalihkan ke halaman interstisial tempat reCAPTCHA menentukan apakah perlu menampilkan tantangan CAPTCHA kepada pengguna. Oleh karena itu, verifikasi CAPTCHA mungkin tidak terlihat oleh semua pengguna.

Untuk menerapkan halaman tantangan reCAPTCHA, lakukan hal berikut:

  1. Buat kunci halaman tantangan untuk situs Anda.

    gcloud

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan invisible.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci. Tentukan --allow-all-domains.
    • WAF_FEATURE: Nama fitur WAF. Tentukan challenge-page.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Jalankan perintah gcloud recaptcha keys create:

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

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    REST

    Untuk informasi referensi API tentang jenis kunci dan jenis integrasi, lihat Kunci dan Jenis integrasi.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • INTEGRATION_TYPE: Jenis integrasi. Tentukan invisible.
    • DOMAIN_NAME: Domain atau subdomain situs yang diizinkan untuk menggunakan kunci. Tentukan --allow-all-domains.
    • WAF_FEATURE: Nama fitur WAF. Tentukan challenge-page.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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

    Anda akan melihat respons JSON seperti berikut:

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

    Catat kunci halaman tantangan untuk digunakan nanti.

  2. Untuk mengalihkan pengguna ke halaman tantangan reCAPTCHA dan menerima token reCAPTCHA, buat kebijakan firewall dengan tindakan redirect di halaman yang dilindungi.

express

Untuk menerapkan perlindungan ekspres reCAPTCHA WAF, buat kunci ekspres.

  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

    Untuk membuat kunci reCAPTCHA, gunakan perintah gcloud recaptcha keys create.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Jalankan perintah gcloud recaptcha keys create:

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

    Respons berisi kunci reCAPTCHA yang baru dibuat.

    REST

    Untuk informasi referensi API tentang jenis kunci dan jenis integrasi, lihat Kunci dan Jenis integrasi.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • DISPLAY_NAME: Nama untuk kunci. Biasanya nama situs.
    • WAF_SERVICE: Nama penyedia layanan WAF. Tentukan akamai untuk Akamai.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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

    Anda akan melihat respons JSON seperti berikut:

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

    Catat kunci ekspres Anda untuk digunakan nanti.

Berintegrasi dengan Akamai

Untuk berintegrasi dengan Akamai, Anda harus menyiapkan layanan EdgeWorker dan mengonfigurasi properti untuk layanan EdgeWorker di Pengelola Properti.

Menyiapkan layanan EdgeWorker

  1. Dari Akamai Control Center, buat ID EdgeWorker dan tetapkan peran Editor ke ID EdgeWorker yang Anda buat.

  2. Untuk mengupload paket reCAPTCHA untuk Akamai, buat versi EdgeWorker menggunakan paket reCAPTCHA yang Anda download.

  3. Aktifkan versi EdgeWorker.

Mengonfigurasi properti di Pengelola Properti

  1. Luncurkan Pengelola Properti.

  2. Pilih properti Akamai yang ingin Anda lindungi, dan buat versi baru properti tersebut.

  3. Bergantung pada fitur WAF yang telah Anda terapkan, buat variabel global yang ditentukan pengguna. Variabel global yang Anda tetapkan dalam properti dimulai dengan awalan PMUSER_.

    Tabel berikut mencantumkan variabel yang dapat Anda buat dan tambahkan di bagian variabel properti:

    Nama variabel Deskripsi Setelan keamanan
    RECAPTCHAJSINSTALL Masukkan JavaScript reCAPTCHA. URL halaman tempat Anda ingin Akamai memanggil reCAPTCHA API untuk menilai skor reCAPTCHA dan melakukan tindakan yang dikonfigurasi dalam kebijakan firewall. Tentukan jalur sebagai pola glob dan gunakan `;` sebagai pemisah. Tersembunyi
    RECAPTCHACHALLENGESITEKEY Kunci halaman tantangan reCAPTCHA. Variabel ini diperlukan jika Anda ingin mengalihkan pengguna ke halaman tantangan reCAPTCHA. Tersembunyi
    RECAPTCHAACTIONSITEKEY Kunci token tindakan reCAPTCHA. Variabel ini diperlukan jika Anda menggunakan token tindakan reCAPTCHA untuk melindungi halaman. Tersembunyi
    RECAPTCHASESSIONSITEKEY Kunci token sesi reCAPTCHA. Variabel ini diperlukan jika Anda menggunakan token sesi reCAPTCHA untuk melindungi halaman. Anda harus menggunakan variabel ini jika RECAPTCHAJSINSTALL ditetapkan untuk mengonfigurasi JavaScript reCAPTCHA dari Akamai. Tersembunyi
    RECAPTCHAEXPRESSSITEKEY Kunci ekspres reCAPTCHA. Variabel ini diperlukan jika Anda menggunakan reCAPTCHA Express untuk melindungi halaman. Tersembunyi
    GCPPROJECTNUMBER

    ID Project Google Cloud Anda.

    Tersembunyi
    GCPAPIKEY

    Kunci API yang Anda buat untuk autentikasi.

    Tersembunyi

    Untuk mengetahui petunjuknya, lihat Membuat variabel.

  4. Untuk mengaktifkan layanan EdgeWorker, tambahkan aturan menggunakan Template Aturan Kosong dengan informasi berikut:

    • Kriteria

      • Nama: reCAPTCHA EdgeWorkers rule
      • Kriteria: Cocokkan Semua
        Jika
        Jalur
        cocok dengan salah satu
        /*

        Kriteria matches one of harus cocok dengan superset URL yang perlu dilindungi oleh reCAPTCHA. Jalur /* menyertakan semua jalur. Anda dapat memilih untuk menambahkan halaman tertentu.

      • Opsional: Jika Anda ingin menambahkan kondisi tambahan untuk membatasi ekstensi file, gunakan hal berikut:

        Jika
        Ekstensi File
        adalah salah satu dari
        html

    • Perilaku

      • Aktifkan: Aktif
      • ID: Your_EdgeWorker_ID
      • Aktifkan laporan mPulse: Nonaktif
  5. Untuk meneruskan panggilan dari layanan EdgeWorker ke reCAPTCHA createAssessment API, tambahkan aturan baru menggunakan Template Aturan Kosong dengan informasi berikut:

    • Kriteria

      • Nama: reCAPTCHA assessment rule
      • Kriteria: Cocokkan Semua
        Jika
        Jalur
        cocok dengan salah satu
        /v1/projects/*/assessments
    • Perilaku

      • Origin Type: Your Origin
      • Nama Host Server Origin: public-preview-recaptchaenterprise.googleapis.com
      • Teruskan Header Host: Nilai Khusus
      • Header Host Penerusan Kustom: public-preview-recaptchaenterprise.googleapis.com
      • Nama Host Kunci Cache: Nama Host Origin
      • Mendukung Kompresi Gzip: Ya
      • Kirim Header IP Klien yang Benar: Ya
      • Nama Header IP Klien yang Sebenarnya: True-Client-IP
      • Allow Clients To Set True Client IP Header: No
      • Verification Settings: Use platform settings
      • Gunakan Ekstensi TLS SNI: Ya
      • Port HTTP: 80
      • Port HTTPS: 443
  6. Opsional: Untuk meneruskan panggilan dari layanan EdgeWorker ke halaman reCAPTCHA, tambahkan aturan baru untuk mengalihkan traffic ke halaman tantangan dengan informasi berikut:

    • Kriteria

      • Nama: reCAPTCHA challenge page rule
      • Kriteria: Cocokkan Semua
        Jika
        Jalur
        cocok dengan salah satu
        /recaptcha/challengepage
    • Perilaku

      • Origin Type: Your Origin
      • Nama Host Server Asal: www.google.com
      • Teruskan Header Host: Nilai Khusus
      • Header Host Penerusan Kustom: www.google.com
      • Nama Host Kunci Cache: Nama Host Origin
      • Mendukung Kompresi Gzip: Ya
      • Kirim Header IP Klien yang Benar: Ya
      • Nama Header IP Klien yang Sebenarnya: True-Client-IP
      • Allow Clients To Set True Client IP Header: No
      • Verification Settings: Use platform settings
      • Gunakan Ekstensi TLS SNI: Ya
      • Port HTTP: 80
      • Port HTTPS: 443
  7. Aktifkan perubahan:

    1. Aktifkan perubahan di staging.
    2. Uji perubahan pada staging.
    3. Aktifkan perubahan pada produksi.

Membuat kebijakan firewall reCAPTCHA

Anda harus membuat kebijakan firewall yang menentukan aturan untuk setiap halaman yang ingin Anda lindungi di situs. Anda dapat membuat kebijakan firewall dengan satu atau beberapa fitur reCAPTCHA untuk WAF.

Dalam kebijakan firewall reCAPTCHA, tambahkan aturan sesuai urutan prioritas yang diinginkan. Aturan pertama memiliki urutan tertinggi. Anda juga dapat mengurutkan ulang prioritas menggunakan ReorderFirewallPoliciesRequest. Untuk permintaan masuk, saat kondisi kebijakan cocok untuk jalur yang ditentukan, penyedia layanan WAF Anda akan menerapkan tindakan yang ditentukan dan aturan berikutnya tidak dievaluasi.

  1. Berdasarkan fitur yang Anda pilih, lakukan hal berikut:
    • Identifikasi jalur yang ingin dilindungi.
    • Identifikasi kondisi untuk mengizinkan, mengalihkan, atau memblokir akses.
    • Prioritaskan aturan.
  2. Pahami komponen kebijakan firewall dan atributnya.
  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. Untuk mengganti gcloud CLI agar dapat mengakses reCAPTCHA API versi pratinjau publik, jalankan perintah berikut:
        gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
        
  5. Untuk membuat kebijakan firewall reCAPTCHA, gunakan perintah gcloud reCAPTCHA firewall-policies create:

    Dalam kebijakan firewall reCAPTCHA, tambahkan aturan sesuai urutan prioritas yang diinginkan. Anda harus menambahkan aturan dengan prioritas tertinggi terlebih dahulu. Untuk permintaan masuk, jika kondisi kebijakan cocok untuk jalur yang ditentukan, penyedia layanan WAF Anda akan menerapkan tindakan yang ditentukan dan aturan berikutnya tidak dievaluasi. Aturan defaultnya adalah mengizinkan akses.

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

    Berikan nilai berikut:

    • ACTION: Tindakan yang harus dilakukan penyedia layanan WAF Anda untuk permintaan yang masuk. Ini dapat berisi maksimal satu tindakan terminal, yang adalah tindakan yang memaksa respons. Tentukan salah satu tindakan berikut:
      • allow: mengizinkan akses ke halaman yang diminta. Ini adalah tindakan terminal.
      • block: menolak akses ke halaman yang diminta. Ini adalah tindakan terminal.
      • redirect: mengalihkan permintaan pengguna yang masuk ke halaman tantangan reCAPTCHA. Ini adalah tindakan terminal.
      • substitute: menayangkan halaman yang berbeda selain halaman yang diminta untuk permintaan pengguna yang menipu. Ini adalah tindakan terminal.
      • set_header: menetapkan header kustom dan memungkinkan permintaan pengguna yang masuk untuk melanjutkan ke backend. Kemudian, backend dapat memicu perlindungan yang disesuaikan. Ini adalah tindakan non-terminal.
    • CONDITION: ekspresi bersyarat CEL (Common Expression Language) yang menentukan apakah kebijakan firewall reCAPTCHA berlaku untuk permintaan pengguna yang masuk. Jika kondisi ini bernilai benar dan jalur yang diminta cocok dengan pola jalur, tindakan terkait akan dijalankan oleh penyedia layanan WAF. String kondisi diperiksa keakuratannya sintaksis CEL saat pembuatan. Untuk mengetahui informasi selengkapnya tentang definisi bahasa, definisi bahasa CEL.
    • DESCRIPTION: deskripsi tujuan kebijakan reCAPTCHA untuk mencapai tujuan. Deskripsi harus terdiri dari maksimal 256 karakter UTF-8.
    • PATH: jalur yang menerapkan kebijakan firewall reCAPTCHA. Pola ini harus ditentukan sebagai pola glob. Untuk informasi selengkapnya tentang glob, lihat halaman manual.

    Setelah perintah berhasil dieksekusi, output yang mirip dengan berikut akan ditampilkan:

         Created [100].
       

    Contoh berikut membuat kebijakan firewall reCAPTCHA untuk memblokir penargetan traffic untuk /example/page.html jika skornya kurang dari 0,1.

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

Langkah selanjutnya