התממה והסתרה של נתונים

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

כשמנפים באגים מקריאות לממשקי API ב-Edge, התוכן עשוי לפעמים להכיל מידע אישי רגיש, כמו כרטיסי אשראי או מידע רפואי בהתאמה אישית (PHI) שצריך לבצע אנונימיזציה.

Edge מספק דרכים שונות להסתרה או לביצוע אנונימיזציה של מידע אישי רגיש מסשנים של Trace וניפוי באגים.

מסתיר מידע אישי רגיש

כדי למנוע הופעה של מידע אישי רגיש בכלי המעקב ולניפוי באגים בסשנים, אפשר ליצור משתנים מותאמים אישית עם התחילית 'private.'.

לדוגמה, כשמשתמשים במדיניות Key Value Map Operations כדי לאחזר ערכים ממפת ערכי מפתח מוצפנת, צריך לעצב את שמות המשתנים באופן הבא כדי להבטיח שהערכים לא יופיעו בסשנים של מעקב או של ניפוי באגים:

<Get assignTo="private.hiddenData">

הסתרת משתנים רגישים היא חלופה לשימוש במיסוך נתונים, כפי שמתואר בהמשך. ההבדל בין הסתרה לאנונימיזציה הוא שמשתנים מוסתרים לא מופיעים בכלל, וערכים מוסווים מוחלפים בכוכביות בסשנים של מעקב וניפוי באגים.

משתנים בלי הקידומת 'private.' מוצגים בטקסט ברור בסשנים של מעקב וניפוי באגים, גם אם הנתונים מגיעים ממאגר נתונים מוצפן, כמו מפה של ערכי מפתח מוצפנים. אפשר להשתמש באנונימיזציה (בהמשך) אם רוצים להסתיר את הערכים האלה.

אנונימיזציה של מידע אישי רגיש

Edge מאפשר להגדיר 'תצורות מסכה' כדי לבצע אנונימיזציה של נתונים ספציפיים בסשנים של מעקב וניפוי באגים. אפשר להגדיר מיסוך הגדרות באופן גלובלי (ברמת הארגון) או באופן מקומי (ברמת ה-API של שרת ה-proxy).

כשמבצעים אנונימיזציה של הנתונים, הם מוחלפים בכוכביות בפלט של נתוני המעקב. לדוגמה:

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

שימוש בהגדרות מסכה

הגדרות המסכה מאפשרות לזהות מידע אישי רגיש במקורות הבאים:
  • מטענים ייעודיים (payloads) של קובצי XML: באמצעות XPath, אפשר לזהות רכיבי XML לסינון מתוך מטענים ייעודיים (payloads) של בקשות או הודעות תגובה.
  • מטענים ייעודיים (payloads) של JSON: באמצעות JSONPath אפשר לזהות נכסים של JSON לסינון ממטענים ייעודיים (payloads) של הודעות בקשה או הודעות תגובה.
  • משתני זרימה: אפשר לציין רשימה של משתנים שצריך לבצע אנונימיזציה בפלט של ניפוי הבאגים. כשמציינים את משתני הזרימה request.content, response.content או message.content, מתבצעת גם אנונימיזציה של גוף הבקשה/תשובה.

המבנה הבסיסי של הגדרת מסכה מוצג באמצעות ייצוג ה-XML הבא:

<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>

הגדרת משאב להגדרת מסכות

צריך להגדיר הגדרת מסכה באמצעות הרכיבים הבאים.

שם השדה התיאור ברירת המחדל חובה?
XPathsRequest רשימה של ביטויי XPath שייבדקו מול מטענים ייעודיים (payloads) של XML (אם יש) בנתיב הבקשה. כל נתיבי XPath שנפתרו בהצלחה יגרמו לביצוע אנונימיזציה לערך של רכיב ה-XML. לא רלוונטי לא
XPathsResponse רשימה של ביטויי XPath שייבדקו מול מטענים ייעודיים (payloads) של XML (אם יש) בנתיב התגובה. כל נתיבי XPath שנפתרו בהצלחה יגרמו לביצוע אנונימיזציה לערך של רכיב ה-XML. לא רלוונטי לא
JSONPathsRequest רשימה של ביטויי JSONPath שייבדקו מול מטענים ייעודיים (payloads) של JSON (אם יש) בנתיב הבקשה. כל נתיבי JSONPath מזוהים בהצלחה יגרמו לביצוע אנונימיזציה של הערך של נכס ה-JSON. לא רלוונטי לא
JSONPathsResponse רשימה של ביטויים של JSONPath שייבדקו מול מטענים ייעודיים (payloads) של JSON (אם יש) בנתיב התגובה. כל נתיבי JSONPath מזוהים בהצלחה יגרמו לביצוע אנונימיזציה של הערך של נכס ה-JSON. לא רלוונטי לא
XPathsFault רשימה של ביטויי XPath שיוערכו אל מול מטענים ייעודיים (payloads) של XML (אם יש) בתהליך השגיאה (שפועל אם מתרחשת תקלה בכל נקודה בזרימה). כל נתיבי XPath שנפתר בהצלחה יגרמו לביצוע אנונימיזציה לערך של רכיב ה-XML. לא רלוונטי לא
JSONPathsFault רשימה של ביטויי JSON שיוערכו מול מטענים ייעודיים (payloads) של JSON (אם יש) בתהליך השגיאה (שפועל אם מתרחשת תקלה בכל שלב בזרימה). כל נתיבי JSONPath שנפתר בהצלחה יגרמו לביצוע אנונימיזציה לערך של נכס ה-JSON. לא רלוונטי לא
משתנים

רשימה של משתנים (מוגדרים מראש או מותאמים אישית) שהערכים שלהם יעברו אנונימיזציה. רשימה של משתני ברירת מחדל זמינה במאמר מידע על משתנים.

לא רלוונטי לא

ממשק API להגדרת מסכה

הגדרות מסכה מוגדרות כקבצים בפורמט XML או JSON שאתם מעלים ומורידים באמצעות RESTful Management API. במאמר מסכות נתונים תוכלו למצוא רשימה מלאה של ממשקי ה-API לאנונימיזציה של נתונים.

כדי לראות הגדרות קיימות של אנונימיזציה, אפשר פשוט להפעיל את משאב ה-API /maskconfigs בארגון:

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

בדוגמה הזו מוצג תחביר בסיסי לאימות. יכול להיות שתוכלו להשתמש בסוגי אימות אחרים, כמו Oauth2 או SAML.

כדי לראות הגדרות מסכה שהוגדרו לשרתי proxy ספציפיים של API, אפשר לבצע קריאה ל-API של /maskconfigs:

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

כדי לראות הגדרה ספציפית של המסכה, צריך לציין את שם המסכה:

$ 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

כדי ליצור הגדרות מסכה, צריך להשתמש בפועל POST כדי לשלוח מטען ייעודי (payload) שמגדיר את הגדרות המסכה:

$ 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
כדי ליצור הגדרת מסכה שתחול על שרת proxy ספציפי של API:
$ 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

כדי למחוק הגדרות מסכה באמצעות הפועל DELETE:

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

בדוגמה הזו מוצג תחביר בסיסי לאימות. יכול להיות שתוכלו להשתמש בסוגי אימות אחרים, כמו Oauth2 או SAML.

התגובה לפעולת DELETE היא קוד HTTP 204 ללא תוכן הודעה.

אנונימיזציה של מרחבי שמות ב-XML

להגדרת מסכה לא נדרש הרכיב <Namespace> בהגדרת XPath, אלא אם מוגדר מרחב שמות במטען הייעודי (payload) של XML. הדבר נכון גם אם המטען הייעודי של ה-XML משתמש במרחב שמות שמוגדר כברירת מחדל.

לדוגמה, המטען הייעודי של XML לא מגדיר מרחב שמות:

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

לכן, הגדרת המסכה לא מחייבת את הרכיב <Namespace>:

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

אם המטען הייעודי של ה-XML מכיל מרחב שמות ותחילית:

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

לאחר מכן הגדרת ההגדרה של המסיכה צריכה להכיל את הרכיב <Namespace>:

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

אם למטען הייעודי (payload) של XML יש מרחב שמות אבל ללא קידומת, כלומר מרחב השמות שמוגדר כברירת מחדל:

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

אז הגדרת המסכה עדיין אמורה לכלול את הרכיב <Namespace>:

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