Penyamaran dan penyembunyian data

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Saat Anda men-debug panggilan API di Edge, konten terkadang dapat berisi data sensitif, seperti kartu kredit atau informasi kesehatan identitas pribadi (PHI) yang perlu disamarkan.

Edge menyediakan berbagai cara untuk menyembunyikan atau menyamarkan data sensitif dari sesi Trace dan debug.

Menyembunyikan data sensitif

Anda dapat mencegah data sensitif muncul di alat Trace dan sesi debug dengan membuat variabel kustom yang diawali dengan "private.".

Misalnya, saat menggunakan kebijakan Key Value Map Operations untuk mengambil nilai dari peta nilai kunci terenkripsi, format nama variabel sebagai berikut untuk memastikan nilai tidak muncul di sesi Trace atau debug:

<Get assignTo="private.hiddenData">

Menyembunyikan variabel sensitif adalah alternatif dari penggunaan data masking, yang akan dijelaskan selanjutnya. Perbedaan antara menyembunyikan dan menyamarkan adalah variabel tersembunyi tidak muncul sama sekali, dan nilai yang disamarkan diganti dengan tanda bintang di sesi Trace dan debug.

Variabel tanpa awalan "private." ditampilkan dalam teks yang jelas di sesi Trace dan debug, meskipun data berasal dari penyimpanan data terenkripsi seperti peta nilai kunci yang dienkripsi. Gunakan masking (di bawah) jika Anda ingin menyamarkan nilai-nilai ini.

Menyamarkan data sensitif

Edge memungkinkan Anda menentukan 'konfigurasi mask' untuk menyamarkan data tertentu dalam sesi rekaman aktivitas dan debug. Konfigurasi masking dapat ditetapkan secara global (di tingkat organisasi) atau secara lokal (di level proxy API).

Jika disembunyikan, data akan diganti dengan tanda bintang di output rekaman aktivitas. Contoh:

<description>**********</description>

Menggunakan Konfigurasi Mask

Konfigurasi mask memungkinkan Anda mengidentifikasi data sensitif di sumber berikut:
  • Payload XML: Dengan XPath, Anda mengidentifikasi elemen XML yang akan difilter dari payload pesan permintaan atau respons.
  • Payload JSON: Dengan JSONPath, Anda mengidentifikasi properti JSON yang akan difilter dari payload pesan permintaan atau respons.
  • Variabel alur: Anda dapat menentukan daftar variabel yang harus disamarkan dalam output debug. Saat Anda menentukan variabel alur request.content, response.content, atau message.content, isi permintaan/respons juga akan disamarkan.

Struktur dasar konfigurasi mask ditunjukkan oleh representasi XML berikut:

<MaskDataConfiguration name="default">
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:Greeting/myco:User</XPathRequest>
    </XPathsRequest>
    <XPathsResponse>
        <XPathResponse>/myco:Greeting/myco:User</XPathResponse>
    </XPathsResponse>
    <JSONPathsRequest>
        <JSONPathRequest>$.store.book[*].author</JSONPathRequest>
    </JSONPathsRequest>
    <JSONPathsResponse>
        <JSONPathResponse>$.store.book[*].author</JSONPathResponse>
    </JSONPathsResponse>
    <XPathsFault>
        <XPathFault>/myco:Greeting/myco:User</XPathFault>
    </XPathsFault>
    <JSONPathsFault>
        <JSONPathFault>$.store.book[*].author</JSONPathFault>
    </JSONPathsFault>
    <Variables>
        <Variable>request.header.user-agent</Variable>
        <Variable>request.formparam.password</Variable>
    </Variables>
</MaskDataConfiguration>

Mengonfigurasi resource konfigurasi mask

Tentukan konfigurasi mask menggunakan elemen berikut.

Nama Kolom Deskripsi Default Wajib diisi?
XPathsRequest Daftar ekspresi XPath yang akan dievaluasi terhadap payload XML (jika ada) di jalur permintaan. Setiap XPath yang berhasil di-resolve akan menghasilkan nilai elemen XML yang disamarkan. T/A Tidak
XPathsResponse Daftar ekspresi XPath yang akan dievaluasi terhadap payload XML (jika ada) di jalur respons. Setiap XPath yang berhasil di-resolve akan menghasilkan nilai elemen XML yang disamarkan. T/A Tidak
JSONPathsRequest Daftar ekspresi JSONPath yang akan dievaluasi terhadap payload JSON (jika ada) di jalur permintaan. Setiap JSONPath yang berhasil di-resolve akan menyebabkan nilai properti JSON disamarkan. T/A Tidak
JSONPathsResponse Daftar ekspresi JSONPath yang akan dievaluasi terhadap payload JSON (jika ada) di jalur respons. Setiap JSONPath yang berhasil di-resolve akan menyebabkan nilai properti JSON disamarkan. T/A Tidak
XPathsFault Daftar ekspresi XPath yang akan dievaluasi terhadap payload XML (jika ada) dalam alur error (yang dijalankan jika fault ditampilkan di titik mana pun dalam flow). Setiap XPath yang berhasil di-resolve akan menghasilkan nilai elemen XML yang disamarkan. T/A Tidak
JSONPathsFault Daftar ekspresi JSON yang akan dievaluasi terhadap payload JSON (jika ada) dalam alur error (yang dijalankan jika sebuah fault ditampilkan di titik mana pun dalam flow). Setiap JSONPath yang berhasil di-resolve akan menyebabkan nilai properti JSON disamarkan. T/A Tidak
Variabel

Daftar variabel (baik yang telah ditetapkan sebelumnya maupun khusus) yang nilainya akan disamarkan. Untuk mengetahui daftar variabel default, lihat Referensi variabel.

T/A Tidak

API konfigurasi Mask

Konfigurasi mask didefinisikan sebagai file berformat XML atau JSON yang Anda upload dan download menggunakan RESTful management API. Untuk mengetahui daftar lengkap API data masking, lihat Data Mask.

Untuk melihat konfigurasi mask yang ada, Anda cukup memanggil resource API /maskconfigs di organisasi Anda:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email

Contoh ini menunjukkan sintaksis Dasar untuk autentikasi. Anda mungkin dapat menggunakan jenis autentikasi lainnya, seperti Oauth2 atau SAML.

Guna melihat konfigurasi mask yang ditentukan untuk proxy API tertentu, Anda dapat memanggil /maskconfigs API:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email

Untuk melihat konfigurasi mask tertentu, tentukan nama mask:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs/default \
-u email
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/default \
-u email

Untuk membuat konfigurasi mask, gunakan kata kerja POST untuk mengirim payload yang menentukan konfigurasi mask:

$ curl -H "Content-type:text/xml" -X POST -d \
'<MaskDataConfiguration name="default">
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:Greeting/myco:User</XPathRequest>
    </XPathsRequest>
    <XPathsResponse>
        <XPathResponse>/myco:Greeting/myco:User</XPathResponse>
    </XPathsResponse>
    <JSONPathsRequest>
        <JSONPathRequest>$.store.book[*].author</JSONPathRequest>
    </JSONPathsRequest>
    <JSONPathsResponse>
        <JSONPathResponse>$.store.book[*].author</JSONPathResponse>
    </JSONPathsResponse>
    <XPathsFault>
        <XPathFault>/myco:Greeting/myco:User</XPathFault>
    </XPathsFault>
    <JSONPathsFault>
        <JSONPathFault>$.store.book[*].author</JSONPathFault>
    </JSONPathsFault>
    <Variables>
        <Variable>request.header.user-agent</Variable>
        <Variable>request.formparam.password</Variable>
    </Variables>
</MaskDataConfiguration>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email
Untuk membuat konfigurasi mask yang dicakup dalam proxy API tertentu:
$ curl -H "Content-type:text/xml" -X POST -d \
'<MaskDataConfiguration name="default">
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:Greeting/myco:User</XPathRequest>
    </XPathsRequest>
    <XPathsResponse>
        <XPathResponse>/myco:Greeting/myco:User</XPathResponse>
    </XPathsResponse>
    <JSONPathsRequest>
        <JSONPathRequest>$.store.book[*].author</JSONPathRequest>
    </JSONPathsRequest>
    <JSONPathsResponse>
        <JSONPathResponse>$.store.book[*].author</JSONPathResponse>
    </JSONPathsResponse>
    <XPathsFault>
        <XPathFault>/myco:Greeting/myco:User</XPathFault>
    </XPathsFault>
    <JSONPathsFault>
        <JSONPathFault>$.store.book[*].author</JSONPathFault>
    </JSONPathsFault>
    <Variables>
        <Variable>request.header.user-agent</Variable>
        <Variable>request.formparam.password</Variable>
    </Variables>
</MaskDataConfiguration>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email

Anda dapat menghapus konfigurasi mask menggunakan kata kerja DELETE:

$ curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/{maskconfig_name} \
-u email

Contoh ini menunjukkan sintaksis Dasar untuk autentikasi. Anda mungkin dapat menggunakan jenis autentikasi lainnya, seperti Oauth2 atau SAML.

Respons terhadap operasi DELETE adalah kode HTTP 204 tanpa konten pesan.

Masking untuk namespace XML

Konfigurasi mask tidak memerlukan elemen <Namespace> dalam definisi XPATH, kecuali jika namespace ditentukan dalam payload XML. Hal ini juga berlaku jika payload XML menggunakan namespace default.

Misalnya, payload XML tidak menetapkan namespace:

<employee>
    <name>abc</name>
    <age>50</age>
</employee>

Oleh karena itu, konfigurasi mask tidak memerlukan elemen <Namespace>:

<MaskDataConfiguration>
    <XPathsRequest>
        <XPathRequest>/employee/name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Jika payload XML berisi namespace dan awalan:

<myco:employee xmlns:myco="http://example.com">
    <myco:name>xyz</myco:name>
    <myco:age>50</myco:age>
</myco:employee>

Maka, definisi konfigurasi mask harus berisi elemen <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Jika Payload XML memiliki namespace tetapi tanpa awalan, artinya namespace default:

<employee xmlns="http://example.com">
    <name>xyz</name>
    <age>50</age>
</employee>

Maka, konfigurasi mask harus tetap berisi elemen <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>