আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
আপনি যখন Edge-এ API কল ডিবাগ করেন, তখন এর কন্টেন্টে মাঝে মাঝে সংবেদনশীল ডেটা থাকতে পারে, যেমন ক্রেডিট কার্ড বা ব্যক্তিগতভাবে শনাক্তযোগ্য স্বাস্থ্য তথ্য (PHI), যা গোপন করা প্রয়োজন।
Edge ট্রেস এবং ডিবাগ সেশন থেকে সংবেদনশীল ডেটা গোপন বা আড়াল করার বিভিন্ন উপায় প্রদান করে।
সংবেদনশীল তথ্য গোপন করা
আপনি " private. " উপসর্গযুক্ত কাস্টম ভেরিয়েবল তৈরি করে ট্রেস টুল এবং ডিবাগ সেশনে সংবেদনশীল ডেটা প্রদর্শিত হওয়া আটকাতে পারেন।
উদাহরণস্বরূপ, একটি এনক্রিপ্টেড কী-ভ্যালু ম্যাপ থেকে ভ্যালু পুনরুদ্ধার করার জন্য 'কী-ভ্যালু ম্যাপ অপারেশনস' পলিসি ব্যবহার করার সময়, ভেরিয়েবলের নামগুলো নিম্নলিখিতভাবে ফরম্যাট করুন, যাতে ভ্যালুগুলো ট্রেস বা ডিবাগ সেশনে প্রদর্শিত না হয়:
<Get assignTo="private.hiddenData">
সংবেদনশীল ভেরিয়েবল লুকানো হলো ডেটা মাস্কিং ব্যবহারের একটি বিকল্প, যা পরবর্তীতে বর্ণনা করা হয়েছে। লুকানো এবং মাস্কিং-এর মধ্যে পার্থক্য হলো, লুকানো ভেরিয়েবলগুলো মোটেও প্রদর্শিত হয় না, এবং মাস্ক করা মানগুলো ট্রেস ও ডিবাগ সেশনে অ্যাস্টারিস্ক (*) দ্বারা প্রতিস্থাপিত হয়।
" private. " উপসর্গ ছাড়া ভেরিয়েবলগুলো ট্রেস এবং ডিবাগ সেশনে স্পষ্ট টেক্সটে প্রদর্শিত হয়, এমনকি যদি ডেটা কোনো এনক্রিপ্টেড ডেটা স্টোর, যেমন একটি এনক্রিপ্টেড কী-ভ্যালু ম্যাপ থেকে আসে। আপনি যদি এই মানগুলো মাস্ক করতে চান, তাহলে মাস্কিং (নিচে) ব্যবহার করুন।
সংবেদনশীল ডেটা গোপন করা
Edge আপনাকে ট্রেস এবং ডিবাগ সেশনে নির্দিষ্ট ডেটা মাস্ক করার জন্য 'মাস্ক কনফিগারেশন' নির্ধারণ করার সুযোগ দেয়। মাস্কিং কনফিগারেশন বিশ্বব্যাপী (সংস্থা-স্তরে) অথবা স্থানীয়ভাবে (এপিআই প্রক্সি স্তরে) সেট করা যেতে পারে।
যখন ডেটা মাস্ক করা হয়, তখন ট্রেস আউটপুটে সেটিকে অ্যাস্টারিস্ক (*) দিয়ে প্রতিস্থাপন করা হয়। উদাহরণস্বরূপ:
<description>**********</description>
মাস্ক কনফিগারেশন ব্যবহার করে
মাস্ক কনফিগারেশন আপনাকে এই উৎসগুলিতে সংবেদনশীল ডেটা সনাক্ত করতে সক্ষম করে:- এক্সএমএল পেলোড: এক্সপাথ (XPath) ব্যবহার করে, আপনি অনুরোধ বা প্রতিক্রিয়া বার্তার পেলোড থেকে ফিল্টার করার জন্য এক্সএমএল উপাদানগুলো শনাক্ত করেন।
- 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>
একটি মাস্ক কনফিগারেশন রিসোর্স কনফিগার করা
নিম্নলিখিত উপাদানগুলি ব্যবহার করে একটি মাস্ক কনফিগারেশন সংজ্ঞায়িত করুন।
| ক্ষেত্রের নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
|---|---|---|---|
| এক্সপাথ অনুরোধ | XPath এক্সপ্রেশনগুলির একটি তালিকা যা রিকোয়েস্ট পাথে থাকা XML পেলোডগুলির (যদি থাকে) উপর মূল্যায়ন করা হবে। যে কোনো XPath সফলভাবে সমাধান হলে, XML এলিমেন্টের মান মাস্ক করা হবে। | প্রযোজ্য নয় | না |
| এক্সপাথসরেসপন্স | XPath এক্সপ্রেশনগুলির একটি তালিকা যা রেসপন্স পাথে থাকা XML পেলোডগুলির (যদি থাকে) উপর মূল্যায়ন করা হবে। যে কোনো XPath সফলভাবে সমাধান হলে, XML এলিমেন্টের মান মাস্ক করা হবে। | প্রযোজ্য নয় | না |
| JSONPathsRequest | JSONPath এক্সপ্রেশনগুলির একটি তালিকা যা রিকোয়েস্ট পাথে থাকা JSON পেলোডগুলির (যদি থাকে) বিপরীতে মূল্যায়ন করা হবে। যে কোনো JSONPath সফলভাবে সমাধান হলে, JSON প্রপার্টির মান মাস্ক করা হবে। | প্রযোজ্য নয় | না |
| JSONPathsResponse | JSONPath এক্সপ্রেশনগুলির একটি তালিকা যা রেসপন্স পাথে থাকা JSON পেলোডগুলির (যদি থাকে) বিপরীতে মূল্যায়ন করা হবে। যে কোনো JSONPath সফলভাবে সমাধান হলে, JSON প্রপার্টির মান মাস্ক করা হবে। | প্রযোজ্য নয় | না |
| এক্সপাথসফল্ট | XPath এক্সপ্রেশনগুলির একটি তালিকা যা এরর ফ্লো-তে (যা ফ্লো-র যেকোনো পর্যায়ে ফল্ট ঘটলে এক্সিকিউট হয়) XML পেলোডগুলির (যদি থাকে) বিপরীতে মূল্যায়ন করা হবে। যে কোনো XPath সফলভাবে রিজলভ হলে, তার ফলে XML এলিমেন্টের ভ্যালুটি মাস্কড হয়ে যাবে। | প্রযোজ্য নয় | না |
| JSONPathsFault | JSON এক্সপ্রেশনগুলির একটি তালিকা যা এরর ফ্লো-তে (যা ফ্লো-র যেকোনো পর্যায়ে ফল্ট ঘটলে এক্সিকিউট হয়) JSON পেলোডগুলির (যদি থাকে) বিপরীতে মূল্যায়ন করা হবে। সফলভাবে রিজলভ হওয়া যেকোনো JSONPath-এর ফলে JSON প্রপার্টির মান মাস্ক করা হবে। | প্রযোজ্য নয় | না |
| ভেরিয়েবল | ভেরিয়েবলের একটি তালিকা (পূর্বনির্ধারিত বা কাস্টম), যার মানগুলো গোপন রাখা হবে। ডিফল্ট ভেরিয়েবলের তালিকার জন্য, ভেরিয়েবল রেফারেন্স দেখুন। | প্রযোজ্য নয় | না |
মাস্ক কনফিগারেশন এপিআই
মাস্ক কনফিগারেশনগুলো XML- বা JSON-ফরম্যাটের ফাইল হিসেবে সংজ্ঞায়িত করা হয়, যেগুলো আপনি RESTful ম্যানেজমেন্ট API ব্যবহার করে আপলোড ও ডাউনলোড করেন। ডেটা মাস্কিং API-গুলোর সম্পূর্ণ তালিকার জন্য, ডেটা মাস্কস (Data Masks) দেখুন।
বিদ্যমান মাস্ক কনফিগারেশনগুলো দেখতে, আপনি আপনার প্রতিষ্ঠানে থাকা /maskconfigs এপিআই রিসোর্সটি কল করতে পারেন:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u emailএই উদাহরণটি অথেনটিকেশনের জন্য বেসিক সিনট্যাক্স দেখাচ্ছে। আপনি Oauth2 বা SAML-এর মতো অন্যান্য ধরনের অথেনটিকেশনও ব্যবহার করতে পারেন।
নির্দিষ্ট 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 ভার্ব ব্যবহার করে এমন একটি পেলোড সাবমিট করুন যা মাস্ক কনফিগারেশনটি সংজ্ঞায়িত করে:
$ 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
$ 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 , যাতে কোনো বার্তা থাকে না।
এক্সএমএল নেমস্পেসের জন্য মাস্কিং
মাস্ক কনফিগারেশনে XPATH সংজ্ঞায় <Namespace> এলিমেন্টের প্রয়োজন হয় না, যদি না 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>
যদি 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>