Dokumen ini menjelaskan cara mengonfigurasi kebijakan verifikasi dengan integrasi Google Cloud Fraud Defense yang ada.
Kebijakan verifikasi memungkinkan Anda memicu verifikasi CAPTCHA secara selektif berdasarkan aturan kustom. Aturan ini menentukan kapan harus menampilkan verifikasi Fraud Defense berdasarkan skor risiko, alamat IP, agen pengguna, ASN, wilayah geografis, atau identitas bot (agen AI) yang terverifikasi.
Anda dapat menggunakan kebijakan verifikasi dengan fitur yang direkomendasikan berikut:
- Konfigurasi AutoExecute: Menyederhanakan integrasi JavaScript untuk aplikasi klien.
- Verifikasi: Memicu verifikasi pengguna jika diperlukan oleh aturan verifikasi Anda.
Fraud Defense mendukung jenis verifikasi berikut:
- Tantangan visual: Meminta pengguna memilih gambar berdasarkan perintah. Secara default, verifikasi visual dipilih saat aturan dikonfigurasi dengan opsi verifikasi yang dipilih.
- Tantangan audio: Meminta pengguna mengidentifikasi isyarat audio lisan sebagai alternatif aksesibilitas.
- Tantangan kode QR: Minta pengguna memindai kode QR dengan perangkat seluler mereka untuk menyelesaikan tantangan. Kunci Universal Anda harus ada dalam daftar yang diizinkan untuk menggunakan fitur ini. Untuk menambahkan kunci Universal ke daftar yang diizinkan, hubungi tim Fraud Defense di fraud-defense@google.com dan berikan kunci Universal Anda.
Sebelum memulai
- Menyiapkan lingkungan Anda untuk Google Cloud Fraud Defense.
- Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Anda dapat mengaktifkan penagihan menggunakan kartu kredit atau ID penagihan project Google Cloud yang ada. Jika Anda memerlukan bantuan terkait penagihan, hubungi dukungan Penagihan Cloud.
Buat atau identifikasi kunci Universal untuk project Anda. Untuk membuat kunci, lihat Membuat kunci Universal. Atau, Anda dapat menyalin ID kunci Universal yang ada dengan menyelesaikan salah satu langkah berikut:
Untuk menyalin ID kunci yang ada dari konsol Google Cloud , lakukan hal berikut:
Di konsol Google Cloud , buka halaman Google Cloud Fraud Defense.
Dalam daftar Keys, temukan kunci yang ingin Anda salin, lalu klik Copy to clipboard.
Untuk menyalin ID kunci yang ada menggunakan REST API, panggil metode
projects.keys.list.Untuk menyalin ID kunci yang ada menggunakan gcloud CLI, jalankan perintah
gcloud recaptcha keys list.
Rencanakan integrasi Fraud Defense dengan mengidentifikasi tindakan pengguna yang ingin Anda lindungi (seperti
login,signup, ataupassword_reset) dan halaman mana di situs Anda yang memicu tindakan ini. Jika Anda menggunakan konfigurasi AutoExecute, pastikan tindakan ini konsisten dengan nama tindakan yang ditentukan dalamprotected_endpoint_group.Mengintegrasikan Fraud Defense ke halaman web Anda. Sebaiknya gunakan konfigurasi Fraud Defense AutoExecute. Untuk mengetahui petunjuk penyiapan umum, lihat Menginstal kunci Universal di situs.
Ringkasan konfigurasi kebijakan Fraud Defense
Konfigurasi kebijakan Fraud Defense memungkinkan Anda menyesuaikan perilaku perlindungan Fraud Defense. Anda dapat mengonfigurasi kebijakan verifikasi menggunakan bagian challenge_rule_groups.
Anda dapat melihat dan memperbarui konfigurasi kebijakan menggunakan konsol Google Cloud , gcloud CLI, atau REST API reCAPTCHA Enterprise.
Konsol
Untuk melihat atau memperbarui konfigurasi kebijakan di konsol Google Cloud , lakukan hal berikut:
Di konsol Google Cloud , buka halaman Fraud Defense.
Pastikan project Anda dipilih di pemilih resource.
Di tabel reCAPTCHA keys, klik nama kunci yang ingin Anda konfigurasi kebijakan verifikasinya.
Di halaman Key details, buka tab Policy.
Di bagian Rule groups, Anda dapat melihat, menambahkan, atau mengedit aturan verifikasi dan ekspresi kondisi.
Klik Simpan.
gcloud
Untuk memperbarui konfigurasi kebijakan kunci, jalankan perintah gcloud alpha recaptcha policies update:
gcloud alpha recaptcha policies update --key=KEY_ID --policy=POLICY.yaml
Untuk melihat konfigurasi kebijakan saat ini untuk kunci, jalankan perintah gcloud alpha recaptcha policies describe:
gcloud alpha recaptcha policies describe --key=KEY_ID
REST API
Untuk memperbarui konfigurasi kebijakan untuk kunci, panggil metode projects.keys.updatePolicy:
PATCH https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys/KEY_ID/policy
{
"clientSettings": {
"allowedDomains": [
"example.com"
]
},
"challengeRuleGroups": [
{
"actions": ["login"],
"challengeRules": [
{
"condition": "score < 0.7",
"challenge": {}
}
]
}
]
}
Untuk melihat konfigurasi kebijakan saat ini untuk kunci, panggil metode projects.keys.getPolicy:
GET https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys/KEY_ID/policy
Konfigurasi kebijakan menggunakan format YAML untuk Google Cloud CLI dan format JSON untuk REST API. Untuk skema lengkap bagian challenge_rule_groups, lihat Mengonfigurasi kebijakan verifikasi.
Untuk contoh berbagai kasus penggunaan, lihat Contoh konfigurasi aturan verifikasi.
Mengonfigurasi kebijakan verifikasi
Anda mengonfigurasi kebijakan verifikasi dalam bagian challenge_rule_groups pada konfigurasi kebijakan Fraud Defense. Jika Anda sudah memiliki
kebijakan dengan client_settings, termasuk informasi domain, Anda dapat memperbarui
kebijakan untuk menyertakan aturan kebijakan verifikasi.
Bagian challenge_rule_groups memiliki struktur berikut:
challenge_rule_groups:
- actions: [string, ...]
challenge_rules:
- condition: string
challenge:
# difficulty is optional: USABILITY | BALANCE (default) | SECURITY
difficulty: BALANCE
# OR no_challenge: {}
- condition: string
challenge:
difficulty: BALANCE
# OR no_challenge: {}
Di setiap aturan verifikasi, kolom condition bersifat opsional. Jika condition tidak ditentukan atau kosong, aturan akan berlaku tanpa syarat. Selain itu, kolom challenge dan no_challenge bersifat sama-sama eksklusif, dan hanya satu dari kolom tersebut yang harus ada di setiap aturan.
Urutan evaluasi aturan
Grup aturan dan aturan internalnya dievaluasi secara berurutan dari atas ke bawah. Aturan pertama yang cocok akan diterapkan. Jika tidak ada grup dan aturan yang cocok dengan interaksi, evaluasi akan ditetapkan secara default ke penilaian standar tanpa menampilkan verifikasi, tetapi skor risiko akan dibuat untuk permintaan tersebut.
Tingkat kesulitan tantangan
Anda dapat menentukan tingkat kesulitan saat memicu tantangan. Untuk mengetahui daftar lengkap nilai tingkat kesulitan yang valid, lihat referensi API ChallengeSecurityPreference.
Sintaksis kondisi
Kolom condition adalah string opsional yang diformat sebagai ekspresi Common Expression Language (CEL). Jika condition tidak ditentukan atau kosong, aturan akan berlaku tanpa syarat. CEL menyediakan operator standar seperti C, termasuk operator relasional (<, <=, >, >=, ==, !=), aritmetika (+, -, /, *, %), logis (!, &&, ||), dan penampung ([], in). CEL mendukung jenis data primitif umum (bool, int, uint, double, string), jenis penampung dasar (lists, messages), dan konstanta (seperti true, 1, 0.5, "hello", dan [1, 2, 3]).
Dalam runtime, variabel Fraud Defense berikut dapat diakses:
| Variabel | Jenis | Deskripsi |
|---|---|---|
score |
double |
Skor bot Fraud Defense. |
user_ip_address |
string |
Alamat IP (IPv4 atau IPv6) pengguna yang membuat permintaan. |
user_agent |
string |
Agen pengguna dari pengguna yang membuat permintaan. |
user_asn |
int |
Nomor Sistem Otonom (ASN) pengguna yang membuat permintaan. Hilangkan awalan AS (misalnya, gunakan 12345, bukan AS12345). |
region_code |
string |
Kode wilayah CLDR Unicode (berdasarkan ISO 3166-1 alpha-2) yang terkait dengan lokasi permintaan (misalnya, "US", "CA", atau "FR"). |
verified_bots |
list(Bot) |
Daftar crawler atau agen otomatis terverifikasi (seperti pengindeks mesin telusur, asisten penelusuran AI, dan scraper konten partner) yang telah diidentifikasi oleh Fraud Defense. |
Jenis non-primitif tambahan berikut ditentukan. Untuk mengetahui daftar lengkap nilai, lihat Bot.
message Bot {
name [string] - the name of the bot
bot_type [BotType] - the type of automated agent
}
Untuk mengetahui informasi selengkapnya tentang kemungkinan nilai name, lihat referensi API Bot. Untuk mengetahui informasi selengkapnya tentang nilai enum bot_type yang valid, lihat referensi API BotType.
Dalam kebijakan verifikasi Fraud Defense, Anda dapat menggunakan salah satu variabel ini untuk menghasilkan ekspresi boolean. Misalnya, score > 0.5, user_ip_address == "192.0.2.1", region_code == "US", dan user_asn == 12345 adalah ekspresi kondisi valid yang dievaluasi ke boolean. Perhatikan bahwa karena user_asn adalah jenis bilangan bulat, Anda harus menghilangkan awalan AS saat memeriksa ASN.
Fungsi berikut tersedia untuk digunakan dalam kondisi kebijakan verifikasi Fraud Defense:
| Nama | Signature | Deskripsi |
|---|---|---|
contains |
string.contains(string) -> bool |
Memeriksa apakah operand string berisi substring. |
startsWith |
string.startsWith(string) -> bool |
Memeriksa apakah operand string dimulai dengan awalan yang ditentukan. |
endsWith |
string.endsWith(string) -> bool |
Memeriksa apakah operand string diakhiri dengan akhiran yang ditentukan. |
size |
size(string) -> intsize(list) -> intstring.size() -> intlist.size() -> int |
Menampilkan ukuran string (jumlah titik kode) atau daftar (jumlah elemen). |
Fungsi pemahaman adalah gaya makro yang disertakan dalam CEL. Pemahaman berikut tersedia:
| Nama | Signature | Deskripsi | Contoh |
|---|---|---|---|
has |
has(message.field) -> bool |
Memeriksa apakah kolom tersedia. | has(verified_bots[0].name) |
all |
list(A).all(A, predicate(A) -> bool) -> bool |
Memeriksa apakah semua elemen x dalam daftar e cocok dengan predikat p. |
[1, 2, 3].all(x, x > 0) |
exists |
list(A).exists(A, predicate(A) -> bool) -> bool |
Memeriksa apakah elemen x dalam daftar e cocok dengan predikat p. |
[1, 2, 3].exists(i, i % 2 != 0) |
exists_one |
list(A).exists_one(A, predicate(A)) -> bool |
Memeriksa apakah tepat satu elemen x dalam daftar e cocok dengan predikat p. |
[1, 2, 2].exists_one(i, i < 2) |
Contoh konfigurasi aturan verifikasi
Bagian ini berisi contoh konfigurasi aturan verifikasi yang valid.
Memverifikasi semua permintaan yang memiliki skor rendah
challenge_rule_groups:
- actions: ['*']
challenge_rules:
- condition: 'score < 0.5'
challenge: {}
Pilih verifikasi dengan friksi tinggi untuk semua permintaan dengan skor rendah
challenge_rule_groups:
- actions: ['*']
challenge_rules:
- condition: 'score < 0.5'
challenge:
difficulty: 'SECURITY'
Menantang tindakan tertentu yang memiliki skor rendah
challenge_rule_groups:
- actions: ['login', 'signup']
challenge_rules:
- condition: 'score < 0.5'
challenge: {}
Mengonfigurasi batas aturan yang berbeda untuk tindakan yang berbeda
challenge_rule_groups:
- actions: ['login']
challenge_rules:
- condition: 'score < 0.5'
challenge: {}
- actions: ['signup']
challenge_rules:
- condition: 'score < 0.7'
challenge: {}
Jangan tampilkan verifikasi ke alamat IP di daftar yang diizinkan
challenge_rule_groups:
- actions: ['*']
challenge_rules:
- condition: 'user_ip_address in ["123.255.255.001", "123.255.255.002"]'
no_challenge: {}
Catatan: Aturan ini berbeda dengan fitur Daftar IP yang diizinkan untuk Perlindungan dari Penipuan.
Jangan tampilkan verifikasi ke subnet alamat IP
challenge_rule_groups:
- actions: ['*']
challenge_rules:
- condition: 'user_ip_address.startsWith("123.255.255")'
no_challenge: {}
Jangan tampilkan verifikasi untuk permintaan dari ASN tertentu
challenge_rule_groups:
- actions: ['*']
challenge_rules:
# Note that ASNs must be specified as integers without the AS prefix (e.g., 12345 instead of AS12345)
- condition: 'user_asn in [12345, 67890]'
no_challenge: {}
Jangan tampilkan tantangan kepada agen Google
challenge_rule_groups:
- actions: ['*']
challenge_rules:
- condition: 'verified_bots.exists(e, e.name == "google-agent")'
no_challenge: {}
Menampilkan verifikasi berdasarkan kondisi yang kompleks
challenge_rule_groups:
- actions: ['*']
challenge_rules:
- condition: '(user_agent.contains("Chrome/143") && score < 0.5) || (user_agent.contains("Chrome/149") && score < 0.7)'
challenge: {}
Langkah berikutnya
- Untuk menilai token respons reCAPTCHA, lihat Membuat penilaian untuk situs.