Che giấu và ẩn dữ liệu

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Khi bạn gỡ lỗi các lệnh gọi API trong Edge, đôi khi nội dung có thể chứa dữ liệu nhạy cảm như thẻ tín dụng hoặc thông tin sức khoẻ có thể nhận dạng cá nhân (PHI) cần được che giấu.

Edge cung cấp nhiều cách để ẩn hoặc che giấu dữ liệu nhạy cảm khỏi Trace (Theo dõi) và các phiên gỡ lỗi.

Đang ẩn dữ liệu nhạy cảm

Bạn có thể ngăn dữ liệu nhạy cảm xuất hiện trong công cụ Theo dõi và các phiên gỡ lỗi bằng cách tạo biến tuỳ chỉnh có tiền tố "private.".

Ví dụ: khi sử dụng chính sách Hoạt động bản đồ giá trị khoá để truy xuất các giá trị từ bản đồ giá trị khoá đã mã hoá, hãy định dạng tên biến như sau để đảm bảo các giá trị đó không xuất hiện trong các phiên Theo dõi hoặc gỡ lỗi:

<Get assignTo="private.hiddenData">

Việc ẩn các biến nhạy cảm là một giải pháp thay thế cho việc sử dụng tính năng che giấu dữ liệu, như mô tả trong phần tiếp theo. Sự khác biệt giữa tính năng ẩn và ẩn giấu là các biến ẩn không hề xuất hiện và các giá trị đã ẩn giấu sẽ được thay thế bằng dấu hoa thị trong các phiên Theo dõi và gỡ lỗi.

Những biến không có tiền tố "private." sẽ hiển thị ở dạng văn bản rõ ràng trong các phiên Theo dõi và gỡ lỗi ngay cả khi dữ liệu được lấy từ một kho dữ liệu đã mã hoá như bản đồ khoá-giá trị đã mã hoá. Sử dụng tính năng ẩn giấu (bên dưới) nếu bạn muốn che những giá trị này.

Che dữ liệu nhạy cảm

Edge cho phép bạn xác định "cấu hình mặt nạ" để che giấu dữ liệu cụ thể trong các phiên theo dõi và gỡ lỗi. Bạn có thể đặt cấu hình ẩn giấu trên toàn cục (ở cấp tổ chức) hoặc cục bộ (ở cấp proxy API).

Khi dữ liệu được che giấu, dữ liệu đó sẽ được thay thế bằng dấu hoa thị ở dữ liệu đầu ra theo dõi. Ví dụ:

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

Sử dụng cấu hình mặt nạ

Cấu hình mặt nạ cho phép bạn xác định dữ liệu nhạy cảm trong các nguồn sau:
  • Tải trọng XML: Bằng cách sử dụng XPath, bạn xác định các phần tử XML sẽ được lọc khỏi tải trọng thông báo yêu cầu hoặc phản hồi.
  • Tải trọng JSON: Khi sử dụng JSONPath, bạn có thể xác định các thuộc tính JSON cần được lọc khỏi các tải trọng thông báo yêu cầu hoặc phản hồi.
  • Biến luồng: Bạn có thể chỉ định danh sách các biến cần được che giấu trong đầu ra gỡ lỗi. Khi bạn chỉ định biến luồng request.content, response.content hoặc message.content, nội dung yêu cầu/phản hồi cũng sẽ được che giấu.

Cấu trúc cơ bản của cấu hình mặt nạ được thể hiện bằng cách trình bày XML sau đây:

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

Định cấu hình tài nguyên cấu hình mặt nạ

Xác định cấu hình mặt nạ bằng cách sử dụng các phần tử sau.

Tên trường Nội dung mô tả Mặc định Bắt buộc?
XPathsRequest Danh sách các biểu thức XPath sẽ được đánh giá dựa trên các tải trọng XML (nếu có) trong đường dẫn yêu cầu. Bất kỳ XPath nào được phân giải thành công sẽ dẫn đến việc giá trị của phần tử XML bị ẩn giấu. Không áp dụng Không
XPathsResponse Danh sách các biểu thức XPath sẽ được đánh giá dựa trên các tải trọng XML (nếu có) trong đường dẫn phản hồi. Bất kỳ XPath nào được phân giải thành công sẽ dẫn đến việc giá trị của phần tử XML bị ẩn giấu. Không áp dụng Không
JSONPathsRequest Danh sách các biểu thức JSONPath sẽ được đánh giá dựa trên các tải trọng JSON (nếu có) trong đường dẫn yêu cầu. Nếu bạn phân giải thành công JSONPath, giá trị của thuộc tính JSON sẽ bị che giấu. Không áp dụng Không
JSONPathsResponse Danh sách các biểu thức JSONPath sẽ được đánh giá dựa trên các tải trọng JSON (nếu có) trong đường dẫn phản hồi. Nếu bạn phân giải thành công JSONPath, giá trị của thuộc tính JSON sẽ bị che giấu. Không áp dụng Không
XPathsFault Danh sách các biểu thức XPath sẽ được đánh giá dựa trên các tải trọng XML (nếu có) trong luồng lỗi (thực thi nếu lỗi được gửi tại bất kỳ thời điểm nào trong luồng). Bất kỳ XPath nào được phân giải thành công sẽ dẫn đến việc giá trị của phần tử XML bị ẩn giấu. Không áp dụng Không
JSONPathsFault Danh sách các biểu thức JSON sẽ được đánh giá dựa trên các tải trọng JSON (nếu có) trong luồng lỗi (thực thi nếu lỗi được gửi tại bất kỳ thời điểm nào trong luồng). Nếu bạn phân giải thành công JSONPath, thì giá trị của thuộc tính JSON sẽ bị che giấu. Không áp dụng Không
Biến

Danh sách các biến (được xác định trước hoặc tuỳ chỉnh) có giá trị sẽ bị ẩn giấu. Để biết danh sách các biến mặc định, hãy xem phần Tài liệu tham khảo về biến.

Không áp dụng Không

API cấu hình mặt nạ

Cấu hình mặt nạ được xác định là các tệp có định dạng XML hoặc JSON mà bạn tải lên và tải xuống bằng API quản lý RESTful. Để xem danh sách đầy đủ các API ẩn giấu dữ liệu, hãy xem bài viết Mặt nạ dữ liệu.

Để xem các cấu hình mặt nạ hiện có, bạn chỉ cần gọi tài nguyên API /maskconfigs trong tổ chức của mình:

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

Ví dụ này cho thấy cú pháp Cơ bản để xác thực. Bạn có thể sử dụng các hình thức xác thực khác, chẳng hạn như Oauth2 hoặc SAML.

Để xem các cấu hình mặt nạ được xác định cho các proxy API cụ thể, bạn có thể gọi API /maskconfigs:

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

Để xem một cấu hình mặt nạ cụ thể, hãy chỉ định tên của mặt nạ:

$ 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

Để tạo cấu hình mặt nạ, hãy sử dụng động từ POST để gửi tải trọng xác định cấu hình mặt nạ:

$ 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
Cách tạo cấu hình mặt nạ trong phạm vi một proxy API cụ thể:
$ 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

Bạn có thể xoá cấu hình mặt nạ bằng động từ DELETE:

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

Ví dụ này cho thấy cú pháp Cơ bản để xác thực. Bạn có thể sử dụng các hình thức xác thực khác, chẳng hạn như Oauth2 hoặc SAML.

Phản hồi cho thao tác DELETE là mã HTTP 204 không có nội dung thông báo.

Tạo mặt nạ cho không gian tên XML

Cấu hình mặt nạ không cần có phần tử <Namespace> trong định nghĩa XPATH, trừ phi một không gian tên được xác định trong tải trọng XML. Điều này cũng đúng nếu tải trọng XML sử dụng không gian tên mặc định.

Ví dụ: tải trọng XML không xác định không gian tên:

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

Do đó, cấu hình mặt nạ không yêu cầu phần tử <Namespace>:

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

Nếu tải trọng XML chứa một không gian tên và tiền tố:

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

Thì định nghĩa cấu hình mặt nạ phải chứa phần tử <Namespace>:

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

Nếu Tải trọng XML có không gian tên nhưng không có tiền tố, tức là không gian tên mặc định:

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

Thì cấu hình mặt nạ vẫn sẽ chứa phần tử <Namespace>:

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