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

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

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

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

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

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

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

<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 (אם יש) שגיאה (שמופעלת אם זורקת תקלה בכל שלב בתהליך). כל נתיב JSON אם ייפתרו בהצלחה, התוצאה תהיה התממה של הערך של נכס ה-JSON. לא רלוונטי לא
משתנים

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

לא רלוונטי לא

ממשק API של Mask configuration

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

כדי לראות את הגדרות המסיכות הקיימות אפשר פשוט לקרוא למשאב ה-API /maskconfigs בארגון שלך:

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

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

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

$ 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. הדבר נכון גם אם המטען הייעודי (payload) של XML משתמש במרחב שמות שמוגדר כברירת מחדל.

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

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

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

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

אם המטען הייעודי (payload) של 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>