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

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

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

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

הסתרה של מידע אישי ורגיש

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

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

<Get assignTo="private.hiddenData">

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

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

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

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

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

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

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

הגדרות של מיסוך מאפשרות לכם לזהות מידע אישי רגיש במקורות הבאים:
  • מטענים ייעודיים (payloads) של XML: באמצעות XPath, אתם מזהים רכיבי XML שצריך לסנן ממטענים ייעודיים של הודעות בקשה או תגובה.
  • מטענים ייעודיים (payloads) של JSON: באמצעות JSONPath, אתם מזהים מאפייני JSON שצריך לסנן ממטענים ייעודיים של הודעות בקשה או תגובה.
  • משתני זרימה: אפשר לציין רשימה של משתנים שצריכים להיות מוסתרים בפלט של ניפוי הבאגים. כשמציינים את משתני הזרימה 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 שיוערכו מול נתוני XML (אם יש כאלה) בנתיב הבקשה. כל XPath שייפתר בהצלחה יגרום להסתרת הערך של רכיב ה-XML. לא רלוונטי לא
XPathsResponse רשימה של ביטויי XPath שיוערכו ביחס למטענים ייעודיים (payloads) של XML (אם יש כאלה) בנתיב התגובה. כל XPath שייפתר בהצלחה יגרום להסתרת הערך של רכיב ה-XML. לא רלוונטי לא
JSONPathsRequest רשימה של ביטויי JSONPath שיוערכו ביחס למטעני JSON (אם יש כאלה) בנתיב הבקשה. כל נתיב JSON שייפתר בהצלחה יגרום להסתרת הערך של מאפיין ה-JSON. לא רלוונטי לא
JSONPathsResponse רשימה של ביטויי JSONPath שיוערכו ביחס למטעני JSON (אם יש כאלה) בנתיב התגובה. כל נתיב JSON שייפתר בהצלחה יגרום להסתרת הערך של מאפיין ה-JSON. לא רלוונטי לא
XPathsFault רשימה של ביטויי XPath שיוערכו מול מטען ייעודי (payload) של XML (אם יש כאלה) בתהליך השגיאה (שמופעל אם מתרחשת שגיאה בכל נקודה בתהליך). כל XPath שפועל בהצלחה יגרום להסתרת הערך של רכיב ה-XML. לא רלוונטי לא
JSONPathsFault רשימה של ביטויי JSON שיוערכו ביחס למטעני JSON (אם יש כאלה) בתהליך השגיאה (שמופעל אם מתרחשת תקלה בשלב כלשהו בתהליך). כל נתיב JSONPath שנפתר בהצלחה יגרום להסתרת הערך של מאפיין ה-JSON. לא רלוונטי לא
משתנים

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

לא רלוונטי לא

Mask configuration API

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

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

אם מטען ה-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>