Penyamaran dan penyembunyian data

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

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

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

Menyembunyikan data sensitif

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

Misalnya, saat menggunakan kebijakan Operasi Peta Nilai Kunci 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 berikutnya. Tujuan perbedaan antara menyembunyikan dan menyamarkan adalah variabel tersembunyi tidak muncul sama sekali, dan diganti dengan tanda bintang di sesi Trace dan debug.

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

Menyamarkan data sensitif

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

Jika data disamarkan, data akan diganti dengan tanda bintang dalam output rekaman aktivitas. Contoh:

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

Menggunakan Konfigurasi Mask

Masker memungkinkan Anda mengidentifikasi data sensitif dalam sumber berikut:
  • Payload XML: Dengan menggunakan XPath, Anda mengidentifikasi elemen XML yang akan difilter dari permintaan atau payload pesan respons.
  • Payload JSON: Dengan menggunakan JSONPath, Anda mengidentifikasi properti JSON yang akan difilter payload pesan respons atau permintaan.
  • Variabel flow: Anda dapat menentukan daftar variabel yang harus disamarkan di debug {i>output<i} tersebut. Saat Anda menentukan request.content, response.content, atau variabel alur message.content, isi permintaan/respons juga 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 mask resource konfigurasi

Tentukan konfigurasi mask menggunakan elemen berikut.

Nama Kolom Deskripsi Default Wajib?
XPathsRequest Daftar ekspresi XPath yang akan dievaluasi terhadap payload XML (jika ada) dalam jalur permintaan. Setiap XPath yang berhasil di-resolve akan menghasilkan nilai XML elemen yang disamarkan. T/A Tidak
XPathsResponse Daftar ekspresi XPath yang akan dievaluasi terhadap payload XML (jika ada) dalam Infrastruktur Cloud. Setiap XPath yang berhasil di-resolve akan menghasilkan nilai XML elemen 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 menghasilkan nilai parameter Properti JSON sedang disamarkan. T/A Tidak
JSONPathsResponse Daftar ekspresi JSONPath yang akan dievaluasi terhadap payload JSON (jika ada) di dengan jalur respons. Setiap JSONPath yang berhasil di-resolve akan menghasilkan nilai parameter Properti JSON sedang disamarkan. T/A Tidak
XPathsFault Daftar ekspresi XPath yang akan dievaluasi terhadap payload XML (jika ada) dalam aliran error (yang dijalankan jika kesalahan ditampilkan pada titik mana pun dalam alur). Setiap XPath yang berhasil diselesaikan akan mengakibatkan nilai elemen XML disamarkan. T/A Tidak
JSONPathsFault Daftar ekspresi JSON yang akan dievaluasi terhadap payload JSON (jika ada) di aliran error (yang dijalankan jika kesalahan ditampilkan pada titik mana pun dalam alur). JSONPath apa pun yang berhasil diselesaikan akan mengakibatkan nilai properti JSON disamarkan. T/A Tidak
Variabel

Daftar variabel (baik yang telah ditentukan sebelumnya atau khusus) yang nilainya akan disamarkan. Untuk untuk daftar variabel default, lihat Referensi variabel.

T/A Tidak

Mask konfigurasi API

Konfigurasi mask didefinisikan sebagai file berformat XML atau JSON yang Anda upload dan download menggunakan RESTful management API. Untuk mengetahui daftar lengkap tentang data masking API, 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 otentikasi. Anda mungkin dapat menggunakan jenis otentikasi lain, seperti Oauth2 atau SAML.

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

$ 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 mengirimkan payload yang menentukan mask konfigurasi:

$ 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 dicakupkan ke 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 otentikasi. Anda mungkin dapat menggunakan jenis otentikasi lain, seperti Oauth2 atau SAML.

Respons terhadap operasi DELETE adalah kode HTTP 204 tanpa pesan saat ini.

Penyamaran untuk namespace XML

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

Misalnya, payload XML tidak mendefinisikan 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>

Kemudian, definisi konfigurasi mask harus berisi <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 tidak memiliki 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>