Gunakan petunjuk ini untuk memecahkan masalah terkait kebijakan keamanan Google Cloud Armor.
Masalah umum
Men-debug kebijakan keamanan
Jika Anda memerlukan informasi tambahan tentang peristiwa tertentu yang memicu aturan yang telah dikonfigurasi sebelumnya, baca bagian Penggunaan logging permintaan, lalu aktifkan logging panjang. Cloud Logging mencatat tingkat detail yang lebih tinggi dalam log Anda, yang dapat Anda gunakan untuk menganalisis dan men-debug kebijakan serta aturan.
Meskipun aturan penolakan dikonfigurasi dalam kebijakan keamanan Cloud Armor, traffic tetap diizinkan.
Untuk mengatasi masalah tersebut, ikuti langkah-langkah berikut:
Pastikan kebijakan keamanan Cloud Armor telah diterapkan pada layanan backend target. Misalnya, perintah berikut menggambarkan semua data yang terkait dengan layanan backend
BACKEND. Hasil yang ditampilkan harus mencakup nama kebijakan keamanan Cloud Armor yang terkait dengan layanan backend ini.gcloud compute backend-services describe BACKEND
Tinjau log HTTP(S) untuk menentukan kebijakan dan aturan mana yang cocok untuk traffic Anda beserta tindakan yang terkait. Untuk melihat log, gunakan Cloud Logging.
Berikut adalah contoh log permintaan yang diizinkan dengan kolom menarik yang ditandai. Periksa kolom berikut dan pastikan seluruh kolom cocok dengan aturan yang Anda konfigurasi untuk menolak traffic:
configuredActionharus cocok dengan tindakan yang dikonfigurasi dalam aturan.nameharus cocok dengan nama kebijakan keamanan Cloud Armor yang dilampirkan ke layanan backend ini.outcomeharus cocok denganconfiguredAction.priorityharus cocok dengan nomor prioritas aturan.
httpRequest: remoteIp: 104.133.0.95 requestMethod: GET requestSize: '801' requestUrl: http://74.125.67.38/ responseSize: '246' serverIp: 10.132.0.4 status: 200 userAgent: curl/7.35.0 insertId: ajvis5ev4i60 internalId: projectNumber: '895280006100' jsonPayload: '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry enforcedSecurityPolicy: configuredAction: ACCEPT name: mydev-policy-log-test1 outcome: ACCEPT priority: 2147483647 statusDetails: response_sent_by_backend logName: projects/mydev-staging/logs/requests resource: labels: backend_service_name: BACKEND_SERVICE_NAME forwarding_rule_name: FORWARDING_RULE_NAME project_id: PROJECT_ID target_proxy_name: TARGET_HTTP_PROXY_NAME url_map_name: URL_MAP_NAME zone: global type: http_load_balancer severity: INFO timestamp: '2017-04-18T18:57:05.845960288Z'Tinjau hierarki aturan untuk memastikan aturan yang benar telah cocok. Mungkin ada aturan prioritas yang lebih tinggi dengan tindakan izinkan yang cocok dengan traffic Anda. Gunakan perintah
describepadasecurity-policiesdi Google Cloud CLI untuk melihat isi kebijakan keamanan Cloud Armor.Misalnya, contoh berikut menunjukkan bagaimana aturan izin dengan prioritas lebih tinggi (pada prioritas 100) cocok dengan traffic yang berasal dari alamat IP 1.2.3.4, sehingga mencegah aturan penolakan dengan prioritas lebih rendah (pada prioritas 200) untuk aktif dan memblokir traffic.
gcloud compute security-policies describe POLICY_NAME
Output:
creationTimestamp: '2017-04-18T14:47:58.045-07:00 description: '' fingerprint: Yu5spBjdoC0= id: '2560355463394441057' kind: compute#securityPolicy name: POLICY_NAME rules: -action: allow description: allow high priority rule kind: compute#securityPolicyRule match: srcIpRanges: -'1.2.3.4/32' preview: false priority: 100 -action: deny description: deny lower priority rule kind: compute#securityPolicyRule match: srcIpRanges: -'1.2.3.0/24 preview: false priority: 200 -action: deny description: default rule kind: compute#securityPolicyRule match: srcIpRanges: -'*' preview: false priority: 2147483647 selfLink: http://www.googleapis.com/compute/v1/projects/bigclustertestdev0-devconsole/global/securityPolicies/sp
Aturan yang telah dikonfigurasi sebelumnya menampilkan positif palsu
Deteksi XSS dan SQLi didasarkan pada pencocokan signature statis pada header permintaan HTTP dan parameter L7 lainnya. Pola ekspresi reguler ini rentan terhadap positif palsu. Anda dapat menggunakan aturan yang telah dikonfigurasi sebelumnya untuk deteksi XSS dan SQLi dalam mode pratinjau, lalu memeriksa log untuk mengetahui apakah ada positif palsu.
Jika menemukan positif palsu, Anda dapat membandingkan konten traffic dengan
aturan OWASP CRS.
Jika aturan tidak valid atau tidak relevan, nonaktifkan menggunakan ekspresi
evaluatePreconfiguredWaf, dan tentukan ID aturan dalam argumen
exclude ID list.
Setelah meninjau log dan menghapus semua positif palsu, nonaktifkan mode pratinjau.
Untuk menambahkan aturan yang telah dikonfigurasi sebelumnya dalam mode pratinjau:
Buat kebijakan keamanan dengan serangkaian ekspresi yang telah dikonfigurasi sebelumnya dalam mode pratinjau:
gcloud compute security-policies rules create 1000 --security-policy POLICY_NAME --expression "evaluatePreconfiguredWaf('xss-stable')" --action deny-403 --previewTinjau log HTTP(S) untuk kolom permintaan HTTP seperti
urldancookie. Misalnya,requestUrlmembandingkan secara positif dengan aturan OWASP CRS ID 941180:httpRequest: remoteIp: 104.133.0.95 requestMethod: GET requestSize: '801' requestUrl: http://74.125.67.38/foo?document.cookie=1010" responseSize: '246' serverIp: 10.132.0.4 status: 200 userAgent: curl/7.35.0 insertId: ajvis5ev4i60 internalId: projectNumber: '895280006100' jsonPayload: '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry enforcedSecurityPolicy: configuredAction: ACCEPT name: POLICY_NAME outcome: ACCEPT priority: 2147483647 preconfiguredExprIds: [ 'owasp-crs-v030001-id941180-xss' ] statusDetails: response_sent_by_backend logName: projects/mydev-staging/logs/requests resource: labels: backend_service_name: BACKEND_SERVICE forwarding_rule_name: mydev-forwarding-rule project_id: mydev-staging target_proxy_name: mydev-target-http-proxy url_map_name: mydev-url-map zone: global type: http_load_balancer severity: INFO timestamp: '2017-04-18T18:57:05.845960288Z'Kecualikan aturan OWASP CRS ID 941180 dengan memperbarui aturan tersebut dalam kebijakan keamanan Cloud Armor:
gcloud compute security-policies rules update 1000 \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-stable', ['owasp-crs-v030001-id941180-xss'])" \ --action deny-403 \ --previewTinjau kembali log, lalu nonaktifkan mode pratinjau untuk menerapkan aturan.
Klien dengan signature yang ditolak tidak diblokir atau ditolak
Jika Anda menggunakan Cloud Armor bersama Cloud CDN, kebijakan keamanan hanya diterapkan untuk permintaan konten dinamis, cache yang tidak ditemukan, atau permintaan lain yang ditujukan ke server asal CDN. Cache ditemukan akan ditampilkan meskipun kebijakan keamanan Cloud Armor downstream mencegah permintaan tersebut untuk menjangkau server asal CDN.
Masalah terkait pembatasan kapasitas
Traffic tidak di-throttle seperti yang diharapkan
Anda mungkin menemukan bahwa alamat IP klien mengirimkan traffic tingkat tinggi ke aplikasi dengan kecepatan yang melebihi nilai minimum yang Anda tetapkan, tetapi traffic tidak dibatasi seperti yang Anda harapkan. Ikuti langkah-langkah berikut untuk menyelidiki masalah ini.
Pertama, pastikan apakah aturan dengan prioritas lebih tinggi mengizinkan traffic dari alamat IP
tersebut. Periksa log untuk melihat apakah aturan ALLOW diaktifkan untuk alamat
IP. Ini bisa berupa aturan ALLOW itu sendiri, atau dalam aturan THROTTLE atau
RATE_BASED_BAN lainnya.
Jika Anda menemukan aturan dengan prioritas lebih tinggi, lakukan salah satu tindakan berikut:
- Ubah prioritas untuk memastikan aturan pembatasan kecepatan memiliki prioritas yang lebih tinggi, dengan menetapkan nilai numerik yang lebih rendah.
- Kecualikan alamat IP dari ekspresi yang cocok dalam aturan yang memiliki prioritas lebih tinggi.
Masalahnya juga mungkin karena nilai minimum ditetapkan dengan tidak tepat. Jika demikian, permintaan diproses dengan akurat, namun tindakan untuk permintaan yang sesuai batas tetap dijalankan. Periksa log untuk mengonfirmasi bahwa hal ini terjadi, lalu kurangi nilai minimum dalam aturan Anda.
Terakhir, alamat IP mungkin tidak cocok dengan aturan throttle atau pemblokiran berbasis kapasitas. Untuk mengatasinya, periksa kesalahan dalam kondisi kecocokan, lalu ubah kondisi kecocokan aturan ke nilai yang tepat.