API Gateway menyediakan plug-in penyembunyian log untuk menyembunyikan informasi sensitif dalam permintaan dan respons HTTP sebelum mengirimkan data ke Simple Log Service untuk penyimpanan. Anda dapat mengonfigurasi aturan penyembunyian kustom untuk menyembunyikan data di lokasi seperti Header, Query, Token, dan Body dalam permintaan dan respons.
1. Prasyarat
Instance khusus digunakan.
API Gateway terintegrasi dengan Simple Log Service, dan sumber daya penyimpanan log yang diperlukan telah dibuat di Simple Log Service.
Pencatatan permintaan dan respons HTTP diaktifkan untuk grup API tempat API yang akan diikat dengan plug-in penyembunyian log berada. Untuk informasi lebih lanjut, lihat Konfigurasikan Pencatatan Permintaan dan Respons HTTP.
2. Ikhtisar
Anda dapat mengonfigurasi serangkaian aturan penyembunyian untuk plug-in penyembunyian log guna menentukan cara data disembunyikan. Kemudian, API Gateway akan menyembunyikan data sesuai aturan yang dikonfigurasi sebelum mengirimkan data ke Simple Log Service. Aturan penyembunyian mencakup atribut berikut:
Nama: Nama aturan. Aturan dibedakan berdasarkan nama mereka. Atribut ini wajib.
Kebijakan: Mode penyembunyian, yang dapat berupa penyembunyian penuh atau sebagian. Anda dapat menggunakan atribut ini untuk memproses tipe data yang berbeda. Atribut ini wajib.
Lokasi: Lokasi parameter yang ingin disembunyikan, seperti Header, Query, Token, atau Body. Atribut ini wajib.
Parameter: Parameter yang ingin disembunyikan. Atribut ini wajib ketika nilai Lokasi adalah Header, Query, atau Token.
MatchMode: Ekspresi reguler yang digunakan untuk mencocokkan informasi sensitif. Atribut ini wajib ketika nilai Lokasi adalah Body, dalam hal ini Anda tidak perlu menentukan atribut Parameter. Anda dapat menggunakan atribut ini untuk mencocokkan angka dengan panjang tertentu, alamat email, dan nomor ID.
3. Konfigurasi
Saat mengonfigurasi aturan penyembunyian, Anda dapat menetapkan nilai kustom untuk Nama dan Parameter. Namun, Anda harus menggunakan nilai preset untuk atribut lainnya. Jika tidak, aturan mungkin tidak berlaku. Bagian ini menjelaskan setiap atribut secara rinci:
Atribut Kebijakan menyediakan opsi berikut:
ALL(default): Semua karakter disembunyikan. Sebagai contoh, 123456 disembunyikan sebagai ******.KEEP_LEFT: Semua karakter disembunyikan kecuali N karakter paling kiri. Jika menggunakan opsi ini, Anda harus mengonfigurasi parameter integer untuk menentukan N. Sebagai contoh, jika Anda mengonfigurasi KEEP_LEFT:3, string 123456 disembunyikan sebagai 123***.KEEP_RIGHT: Semua karakter disembunyikan kecuali N karakter paling kanan. Jika menggunakan opsi ini, Anda harus mengonfigurasi parameter integer untuk menentukan N. Sebagai contoh, jika Anda mengonfigurasi KEEP_RIGHT:3, string 123456 disembunyikan sebagai ***456.KEEP_CENTER: Semua karakter disembunyikan kecuali M karakter setelah N karakter paling kiri. Jika menggunakan opsi ini, Anda harus mengonfigurasi dua parameter integer untuk menentukan M dan N. Sebagai contoh, jika Anda mengonfigurasi KEEP_CENTER:2,2, string 123456 disembunyikan sebagai **34***.
Atribut Lokasi menyediakan opsi berikut:
REQUEST_HEADER: Header permintaan. Atribut ini digunakan bersama dengan Parameter.REQUEST_QUERY: Query permintaan. Atribut ini digunakan bersama dengan Parameter.REQUEST_TOKEN: Token permintaan atau Claims dari Jason Web Token (JWT). Atribut ini digunakan bersama dengan Parameter.REQUEST_BODY: Body permintaan. Atribut ini digunakan bersama dengan MatchMode.RESPONSE_HEADER: Header respons. Atribut ini digunakan bersama dengan Parameter.RESPONSE_BODY: Body respons. Atribut ini digunakan bersama dengan MatchMode.
Atribut MatchMode menyediakan opsi berikut:
D: Mencocokkan angka desimal. Jika menggunakan opsi ini, Anda harus mengonfigurasi parameter integer untuk menentukan jumlah karakter yang cocok. Sebagai contoh, jika Anda mengonfigurasi D:11, semua angka desimal dengan 11 digit akan cocok.HEX: Mencocokkan angka heksadesimal. Huruf tidak peka huruf besar/kecil. Jika menggunakan opsi ini, Anda harus mengonfigurasi parameter integer untuk menentukan jumlah karakter yang cocok. Sebagai contoh, jika Anda mengonfigurasi HEX:16, semua angka heksadesimal dengan 16 digit akan cocok.C: Mencocokkan string huruf-huruf saja. Huruf tidak peka huruf besar/kecil. Jika menggunakan opsi ini, Anda harus mengonfigurasi parameter integer untuk menentukan jumlah karakter yang cocok. Sebagai contoh, jika Anda mengonfigurasi C:18, semua string dengan 18 huruf akan cocok.DC: Mencocokkan string campuran huruf dan angka. Huruf tidak peka huruf besar/kecil. Jika menggunakan opsi ini, Anda harus mengonfigurasi parameter integer untuk menentukan jumlah karakter yang cocok. Sebagai contoh, jika Anda menentukan DC:15, semua string campuran huruf dan angka dengan panjang 15 karakter akan cocok.EMAIL: Mencocokkan alamat email.IDCARD: Mencocokkan nomor kartu identitas.
4. Contoh konfigurasi
Anda dapat mengonfigurasi plug-in penyembunyian log dalam format JSON atau YAML. Kedua format tersebut memiliki skema yang sama dan dapat dikonversi satu sama lain menggunakan alat konversi. Kode berikut memberikan template dalam 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 dengan panjang 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.Item berikut menggambarkan aturan yang dikonfigurasi dalam contoh sebelumnya:
maskRequestQuery: Menyembunyikan nilai parameter userid dan name di bagian Query dari permintaan. Semua karakter kecuali empat karakter paling kiri dalam string disembunyikan.
maskRequestHeader: Menyembunyikan nilai parameter userid dan name di bagian Header dari permintaan. Semua karakter kecuali lima karakter setelah empat karakter paling kiri dalam string disembunyikan.
maskRequestBody: Menyembunyikan semua angka heksadesimal dengan panjang 10 karakter dalam body permintaan. Semua karakter dalam angka tersebut disembunyikan.
maskResponseBody: Menyembunyikan semua alamat email dalam body respons. Semua karakter kecuali tujuh karakter paling kanan disembunyikan dalam alamat email tersebut.
Jika dua aturan yang dikonfigurasi bertentangan satu sama lain, API Gateway menerapkan kedua aturan berdasarkan urutan mereka dalam daftar aturan.
5. Skenario sampel
Kode potongan berikut menunjukkan sampel 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"
}Kode potongan berikut menunjukkan sampel respons HTTP (idcard menunjukkan nomor ID) untuk permintaan sebelumnya:
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 dari permintaan dan respons
Menyembunyikan nilai Authorization di bagian Header dari permintaan. Semua karakter disembunyikan kecuali lima karakter setelah empat karakter paling kiri.
Menyembunyikan nilai name di bagian Query dari permintaan. Semua karakter disembunyikan kecuali dua karakter paling kiri.
---
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 disembunyikan kecuali dua karakter paling kiri.
- 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 disembunyikan kecuali lima karakter setelah empat karakter paling kiri.Periksa apakah aturan berlaku dalam log:


5.2 Menyembunyikan informasi dalam body permintaan dan respons
Menyembunyikan nomor ID dalam body permintaan dan respons. Semua karakter disembunyikan.
Menyembunyikan angka desimal dengan panjang 10 karakter. Semua karakter disembunyikan kecuali tiga karakter paling kanan.
---
rules:
- name: request_body_IDCARD # Nama aturan.
location: "REQUEST_BODY" # Lokasi informasi yang akan disembunyikan. Nomor ID disembunyikan dalam body permintaan.
matchMode: IDCARD # Mode pencocokan. Nomor ID 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 dengan panjang 10 karakter dicocokkan.
policy: "KEEP_RIGHT:3" # Kebijakan penyembunyian. Semua karakter disembunyikan kecuali tiga karakter paling kanan.
- name: response_body_IDCARD # Nama aturan.
location: "RESPONSE_BODY" # Lokasi informasi yang akan disembunyikan. Nomor ID disembunyikan dalam body respons.
matchMode: IDCARD # Mode pencocokan. Nomor ID dicocokkan.
policy: "ALL" # Kebijakan penyembunyian. Semua karakter disembunyikan.Periksa apakah aturan berlaku dalam log:


6. Batasan
Plug-in penyembunyian log disediakan hanya untuk instance khusus.
Metadata dari satu plug-in tidak boleh melebihi 50 KB dalam ukuran.
Jika plug-in penyembunyian log tidak berlaku di instance khusus Anda yang dibeli sebelum 02 April 2024, ajukan tiket untuk meningkatkan instance Anda.