Plugin penyembunyian log menyembunyikan informasi sensitif dalam permintaan dan respons HTTP sebelum data dikirim ke Simple Log Service. Anda dapat mengonfigurasi aturan penyembunyian untuk berbagai lokasi, seperti Header, Query, Token, dan Body.
1. Prasyarat
-
Instans khusus digunakan.
-
API Gateway telah dikonfigurasi untuk mencatat log ke Simple Log Service.
-
Pencatatan log permintaan dan respons HTTP diaktifkan untuk kelompok API tempat API yang akan diikat dengan plugin penyembunyian log berada. Untuk informasi selengkapnya, lihat Konfigurasikan pencatatan log permintaan dan respons HTTP.
2. Ikhtisar
Plugin penyembunyian log terdiri atas serangkaian aturan penyembunyian. API Gateway menerapkan aturan-aturan ini sebelum mengirimkan data ke Simple Log Service. Setiap aturan memiliki atribut berikut:
-
Name: Wajib diisi. Nama aturan, digunakan untuk membedakan antar aturan.
-
Policy: Wajib diisi. Pola penyembunyian. Mendukung penyembunyian penuh dan penyembunyian sebagian untuk menangani berbagai jenis informasi sensitif.
-
Location: Wajib diisi. Menentukan lokasi data yang akan disembunyikan dalam permintaan atau respons, seperti Header, Query, Token, atau Body.
-
Parameters: Wajib diisi jika Location diatur ke Header, Query, atau Token. Menentukan nama parameter yang akan disembunyikan.
-
MatchMode: Wajib diisi jika Location diatur ke Body. Pola yang digunakan untuk mencocokkan informasi sensitif, seperti angka dengan panjang tertentu, alamat email, atau nomor KTP. Saat MatchMode digunakan, Anda tidak perlu menentukan Parameters.
3. Konfigurasi
Anda dapat menyesuaikan nilai Name dan Parameters dalam aturan penyembunyian. Atribut lain harus menggunakan nilai yang telah ditentukan. Jika tidak, aturan tersebut mungkin tidak berlaku.
Atribut Policy menyediakan opsi berikut:
-
ALL(default): Semua karakter disembunyikan. Misalnya, 123456 disembunyikan sebagai ******. -
KEEP_LEFT: Menyimpan N karakter paling kiri dan menyembunyikan sisanya. Opsi ini memerlukan parameter bilangan bulat tambahan yang menentukan jumlah karakter yang disimpan. Misalnya, jika Anda mengonfigurasi KEEP_LEFT:3, string 123456 disembunyikan sebagai 123***. -
KEEP_RIGHT: Menyimpan N karakter paling kanan dan menyembunyikan sisanya. Opsi ini memerlukan parameter bilangan bulat tambahan yang menentukan jumlah karakter yang disimpan. Misalnya, jika Anda mengonfigurasi KEEP_RIGHT:3, string 123456 disembunyikan sebagai ***456. -
KEEP_CENTER: Menyimpan M karakter mulai dari karakter ke-N (diindeks dari 0) dan menyembunyikan sisanya. Opsi ini memerlukan dua parameter bilangan bulat tambahan untuk posisi awal dan panjang, dipisahkan dengan koma. Misalnya, jika Anda mengonfigurasi KEEP_CENTER:2,2, string 123456 disembunyikan sebagai **34**.
Atribut Location menyediakan opsi berikut:
-
REQUEST_HEADER: Header permintaan. Harus digunakan bersama Parameters. -
REQUEST_QUERY: Query permintaan. Harus digunakan bersama Parameters. -
REQUEST_TOKEN: Token permintaan, khususnya klaim dalam JSON Web Token (JWT). Harus digunakan bersama Parameters. -
REQUEST_BODY: Body permintaan. Harus digunakan bersama MatchMode. -
RESPONSE_HEADER: Header respons. Harus digunakan bersama Parameters. -
RESPONSE_BODY: Body respons. Harus digunakan bersama MatchMode.
Atribut MatchMode menyediakan opsi berikut:
-
D: Mencocokkan digit desimal. Opsi ini memerlukan parameter bilangan bulat tambahan yang menentukan jumlah digit yang dicocokkan. Misalnya, D:11 mencocokkan urutan apa pun yang terdiri dari 11 digit. -
HEX: Mencocokkan digit heksadesimal. Huruf tidak peka terhadap kapitalisasi. Opsi ini memerlukan parameter bilangan bulat tambahan yang menentukan jumlah karakter yang dicocokkan. Misalnya, HEX:16 mencocokkan urutan heksadesimal sepanjang 16 karakter. -
C: Mencocokkan string yang hanya terdiri dari huruf. Huruf tidak peka terhadap kapitalisasi. Opsi ini memerlukan parameter bilangan bulat tambahan yang menentukan jumlah karakter yang dicocokkan. Misalnya, C:18 mencocokkan urutan alfabet sepanjang 18 karakter. -
DC: Mencocokkan kombinasi huruf dan digit. Huruf tidak peka terhadap kapitalisasi. Opsi ini memerlukan parameter bilangan bulat tambahan yang menentukan jumlah karakter yang dicocokkan. Misalnya, DC:15 mencocokkan urutan alfanumerik sepanjang 15 karakter. -
EMAIL: Mencocokkan alamat email. -
IDCARD: Mencocokkan nomor KTP.
4. Contoh konfigurasi
Anda dapat mengonfigurasi plugin penyembunyian log dalam format JSON atau YAML. Kedua format tersebut memiliki skema yang sama dan dapat saling dikonversi. Templat berikut menggunakan format YAML:
---
rules:
-name: maskRequestQuery # Nama aturan.
location: "REQUEST_QUERY" # Lokasi parameter yang akan disembunyikan.
parameters: # Parameter yang akan disembunyikan.
- userid
- name
policy: "KEEP_LEFT:4" # Kebijakan penyembunyian. Semua karakter disembunyikan kecuali empat karakter paling kiri.
- name: maskRequestHeader # Nama aturan.
location: "REQUEST_HEADER" # Lokasi parameter yang akan disembunyikan.
parameters: # Parameter yang akan disembunyikan.
- userid
- name
policy: "KEEP_CENTER:4,5" # Kebijakan penyembunyian. Semua karakter disembunyikan kecuali lima karakter setelah empat karakter paling kiri.
- name: maskRequestBody # Nama aturan.
location: "REQUEST_BODY" # Lokasi yang akan disembunyikan.
matchMode: HEX:10 # Mode pencocokan. String heksadesimal sepanjang 10 karakter dicocokkan.
policy: "ALL" # Kebijakan penyembunyian. Semua karakter disembunyikan.
- name: maskResponseBody # Nama aturan.
location: "RESPONSE_BODY" # Lokasi yang akan disembunyikan.
matchMode: EMAIL # Mode pencocokan. Alamat email dicocokkan.
policy: "KEEP_RIGHT:7" # Kebijakan penyembunyian. Semua karakter kecuali tujuh karakter paling kanan disembunyikan.
Contoh di atas mengonfigurasi aturan berikut:
-
maskRequestQuery: Menyembunyikan parameter userid dan name dalam Query permintaan dengan menyimpan empat karakter paling kiri.
-
maskRequestHeader: Menyembunyikan parameter userid dan name dalam Header permintaan dengan menyimpan lima karakter mulai dari karakter keempat (diindeks dari 0).
-
maskRequestBody: Menyembunyikan angka heksadesimal sepanjang 10 karakter dalam Body permintaan dengan menyembunyikan semua karakter.
-
maskResponseBody: Menyembunyikan semua alamat email dalam body respons. Semua karakter kecuali tujuh karakter paling kanan disembunyikan.
Jika dua aturan yang dikonfigurasi saling bertentangan, API Gateway menerapkan kedua aturan tersebut berdasarkan urutannya dalam daftar aturan.
5. Skenario contoh
Cuplikan berikut menunjukkan contoh permintaan HTTP:
POST /sls?name=test HTTP/1.1
Accept-Encoding: gzip,deflate
X-Ca-Stage: RELEASE
X-Ca-Timestamp: 1713423308449
User-Agent: Apache-HttpClient/4.5.6 (Java/1.8.0_172)
Content-MD5: 9QxBgTbb7psVMovQUjXXXXX
X-Ca-Real-IP: 101.37.XX.XX
eagleeye-rpcid: 0.1
Authorization: sdhfcvisdhjnvkdf
X-Forwarded-Proto: http
x-ca-nonce: cb5e4526-b4e9-42f3-a365-a095f5c22ff9
Content-Length: 31
Content-Type: application/json
Host: eaa961f4c0184712bce440XXXX-cn-beijing.alicloudapi.com
{
"Body":"{"idcard":"11000019900702XXXX"}"
"userid":"3628756075"
}
Cuplikan berikut menunjukkan respons HTTP yang sesuai (idcard menunjukkan nomor KTP):
Response:
200
Date: Thu, 18 Apr 2024 06:55:08 GMT
Content-Type: application/oct-stream
Content-Length: 854
Connection: keep-alive
X-Ca-Request-Id: 5FF51156-536B-4541-BED0-46A0C4D6929B
Content-Disposition: attachment; filename=ApiResponseForInnerDomain
{
"Body":"{"idcard":"11000019900702XXXX"}"
"userid":"3628756075"
}
5.1 Menyembunyikan parameter di bagian Header dan Query permintaan serta respons
-
Menyembunyikan nilai Authorization di bagian Header permintaan. Menyembunyikan semua karakter kecuali lima karakter setelah empat karakter paling kiri.
-
Untuk name dalam Query permintaan, simpan dua karakter paling kiri dan sembunyikan sisanya.
---
rules:
- name: request_query # Nama aturan.
location: "REQUEST_QUERY" # Lokasi parameter yang akan disembunyikan.
parameters: # Parameter yang akan disembunyikan.
- name
policy: "KEEP_LEFT:2" # Kebijakan penyembunyian. Semua karakter kecuali dua karakter paling kiri disembunyikan.
- name: request_header # Nama aturan.
location: "REQUEST_HEADER" # Lokasi parameter yang akan disembunyikan.
parameters: # Parameter yang akan disembunyikan.
- Authorization
policy: "KEEP_CENTER:4,5" # Kebijakan penyembunyian. Semua karakter kecuali lima karakter setelah empat karakter paling kiri disembunyikan.
Periksa apakah aturan tersebut berlaku dalam log:
requestHeaders: {"Authorization":"****cvisd******"}requestQueryString: name=te**
5.2 Menyembunyikan informasi dalam body permintaan dan respons
-
Menyembunyikan nomor KTP dalam body permintaan dan respons. Semua karakter disembunyikan.
-
Menyembunyikan angka desimal sepanjang 10 karakter. Semua karakter kecuali tiga karakter paling kanan disembunyikan.
--- rules: - name: request_body_IDCARD # Nama aturan. location: "REQUEST_BODY" # Lokasi informasi yang akan disembunyikan. Nomor KTP disembunyikan dalam body permintaan. matchMode: IDCARD # Mode pencocokan. Nomor KTP dicocokkan. policy: "ALL" # Kebijakan penyembunyian. Semua karakter disembunyikan. - name: request_body_D # Nama aturan. location: "REQUEST_BODY" # Lokasi yang akan disembunyikan. matchMode: D:10 # Mode pencocokan. String desimal sepanjang 10 karakter dicocokkan. policy: "KEEP_RIGHT:3" # Kebijakan penyembunyian. Semua karakter kecuali tiga karakter paling kanan disembunyikan. - name: response_body_IDCARD # Nama aturan. location: "RESPONSE_BODY" # Lokasi informasi yang akan disembunyikan. Nomor KTP disembunyikan dalam body respons. matchMode: IDCARD # Mode pencocokan. Nomor KTP dicocokkan. policy: "ALL" # Kebijakan penyembunyian. Semua karakter disembunyikan.
Periksa apakah aturan tersebut berlaku dalam log:
requestBody: { "idcard":"******************" "userid":"******075" }
responseBody: { "Body":"{\n"idcard":"******************"}" }
6. Batasan
Plugin penyembunyian log hanya tersedia untuk instans khusus.
Ukuran metadata satu plugin tidak boleh melebihi 50 KB.
Jika plugin tidak berlaku pada instans khusus yang dibeli sebelum 2 April 2024, kirimkan tiket untuk melakukan upgrade versi instans.