মাইক্রোসার্ভেসিস ব্যবহার করা উচিত?


13

আমরা মাইক্রোসার্চিস আর্কিটেকচারে ব্যবহারকারীদের অনুমোদনের সর্বোত্তম উপায় নির্ধারণ করার চেষ্টা করছি, যখন মাইক্রোসার্ভেসিসের সীমিত অনুমতি রয়েছে তা নিশ্চিত করে। আমাদের আর্কিটেকচার জেডাব্লুটি টোকেন জারি পরিচালনা করতে কেন্দ্রীয় অনুমোদন পরিষেবা ব্যবহার করে।

আমাদের নিম্নলিখিত প্রয়োজনীয়তা রয়েছে:

  1. ব্যবহারকারীদের নির্দিষ্ট ভূমিকা পালনে সীমাবদ্ধ থাকতে হবে। যেমন কোনও ব্যবহারকারীর কেবল নিজের মালিকানাধীন সামগ্রী তৈরি / সংশোধন / পড়তে সক্ষম হওয়া উচিত।

  2. মাইক্রোসার্ভেসিস কেবল তাদের প্রয়োজনীয় অনুমতিগুলিতে সীমাবদ্ধ থাকতে হবে। উদাহরণস্বরূপ এমন একটি মাইক্রোসার্ভাইস যা কেবলমাত্র অন্য পরিষেবা থেকে ডেটা পড়তে হবে সে পরিষেবাতে ডেটা লেখার থেকে স্পষ্টভাবে নিষেধ করা উচিত।

উদাহরণস্বরূপ, ধরুন আমাদের কাছে এমন একটি সিস্টেম রয়েছে যেখানে ব্যবহারকারীরা কোনও চিত্র স্টোর সার্ভিসে ছবি আপলোড করতে পারেন। আমাদের একটি ট্যাগিং পরিষেবা রয়েছে যা কোনও অবস্থানের সাথে ছবিগুলি স্বয়ংক্রিয়ভাবে ট্যাগ করে। ব্যবহারকারীরা কেবল তাদের নিজস্ব ছবি সিআরইউডি করতে পারেন। ট্যাগিং পরিষেবা ইমেজ স্টোর পরিষেবা থেকে যে কোনও চিত্র পড়তে পারে, তবে পরিবর্তন / মুছতে সক্ষম হবে না।

JWT টোকেন ব্যবহার করে উপরেরটি অর্জনের একটি ভাল উপায় কী? কিছু সমাধান যা আমরা আলোচনা করেছি তা হ'ল:

  1. ইমেজ স্টোর পরিষেবাটি 2 টি এপিআই প্রকাশ করে, এটি একটি বাহ্যিকভাবে উপলব্ধ (ব্যবহারকারীকে সিআরইউডি অ্যাক্সেস দেয়), এবং একটি যা অভ্যন্তরীণভাবে উপলব্ধ (কেবল অভ্যন্তরীণ পঠনযোগ্য অ্যাক্সেস দেয়)) জটিল বলে মনে হচ্ছে - অন্য কোনও অভ্যন্তরীণ পরিষেবায় যদি সমস্ত চিত্র পড়ার / লেখার অ্যাক্সেসের প্রয়োজন হয় (যেমন একটি যা স্বয়ংক্রিয়ভাবে স্পষ্ট চিত্রগুলি মুছে ফেলে)?

  2. আমরা ব্যবহারকারীর জেডাব্লুটিটিতে দুটি অনুমতি সেট আপ করেছি, একটি হ'ল সিআরইউডি_উইনআইমেজস, অন্যটি হচ্ছে READ_forAnalysis। ট্যাগিং পরিষেবাটি দেখতে পাবে যে ব্যবহারকারীর READ_ForAnalysis অনুমতি রয়েছে কিনা এবং যদি তাই হয় তবে উপযুক্ত অনুরোধ করুন। আমাদের কাছে আরও একটি মাইক্রোসারভাইস রয়েছে যা ব্যবহারকারীদের নিজস্ব ইমেজগুলিতে সিআরইউডি অপারেশনের জন্য CRUD_OwnImages আছে কিনা তা পরীক্ষা করে দেখুন। এটি ব্যবহারকারীকে তার প্রয়োজনীয় ক্রিয়াকলাপের মধ্যে সীমাবদ্ধ রয়েছে তা নিশ্চিত করার জন্য এটি প্রতিটি মাইক্রোসার্ভিসকে দায়িত্ব দেয়। ইমেজ স্টোরটিতে এই পদ্ধতির সাথে প্রতিটি মাইক্রোসার্চিসিকে সীমাবদ্ধ করার কোনও উপায় নেই, সুতরাং এটি সম্ভাব্যভাবে ফ্লকি এবং ত্রুটির প্রবণ।

  3. অনুমতি হিসাবে READ_forAnalysis সহ আমরা ট্যাগিং মাইক্রোসার্ভিসকে তার নিজস্ব ব্যবহারকারীর দেই। তারপরে, যখন ট্যাগিং পরিষেবা ইমেজ স্টোর থেকে চিত্রগুলির জন্য অনুরোধ করে, তখন এটিগুলিতে অ্যাক্সেস দেওয়া হয় তবে সেগুলি পরিবর্তন করতে নিষেধ করা হয়। ব্যবহারকারীর ব্যবহারকারীর কাছে কেবল CRUD_OwnImages অনুমতি রয়েছে, তাই তিনি কেবল সীমারেখা থেকে কেবল তার চিত্রগুলি পুনরুদ্ধার করতে এবং অ্যাক্সেস পেতে সক্ষম হন। অন্য কোনও পরিষেবায় যদি সমস্ত ডেটাতে সিআরইউডি প্রয়োজন হয়, আমরা এটিকে CRUD_AllData বা অনুরূপ দিতে পারি। আমরা এই পদ্ধতির পছন্দ করি কারণ প্রতিটি পরিষেবা এখন তার নিজস্ব ডেটার জন্য দায়ী (একাধিক পরিষেবা জুড়ে সেই যুক্তিটি সদৃশ করার চেয়ে) তবে পরিষেবাটি যদি ব্যবহারকারীর অনুমতি এবং মাইক্রোসার্চিস অনুমতি উভয়ই প্রয়োজন? আমরা কি দুটি জেডাব্লুটি টোকন (ব্যবহারকারীর এবং মাইক্রোসার্ভাইস উভয়) নিরাপদে প্রেরণ করতে পারি? অনুমতিগুলি নিরাপদে একত্রিত করার মাধ্যমে এটি পাঠানোর কোনও উপায় আছে কি? যেমন

যদি ব্যবহারকারীদের আরও নিচে প্রবাহের তথ্য প্রয়োজন হয় (2 বা 3 মাইক্রোসার্কেস দূরে) সমস্যাটি আরও বাড়িয়ে তোলে। আমরা কি কেবল ধরে নিয়েছি যে পৃথক মাইক্রোসার্ভিসেসগুলি তাদের প্রয়োজনীয় ক্রিয়াগুলিতে সীমাবদ্ধ করা এবং এটিকে স্পষ্ট করে তুলবে না?


1
আপনি কি এই মাইক্রোসার্ভিসেসগুলির একমাত্র বিকাশকারী, বা অন্যান্য সংস্থা / সংস্থা / বিভাগগুলি (যেমন কোনও সুরক্ষার সীমানা সহ কিছু) আপনার সিস্টেমকে লক্ষ্য করে মাইক্রোসার্ভিসেসও লেখেন?
রবার্ট হার্ভে

1
সম্ভবত এটির অন্যান্য পরিষেবাগুলি সিস্টেমে ব্যয় করবে এবং আমরা এই ক্ষেত্রে নকশা তৈরি করতে চাই।
AWR

উত্তর:


6

সাধারণভাবে, যতটা সম্ভব অপারেশন একটি বাস্তব, মানব ব্যবহারকারীর সাথে আবদ্ধ করা উচিত। এটি লোকেদের যথাযথভাবে প্রমাণীকরণে বাধ্য করে, এটি একটি একক ধারাবাহিক অনুমোদনের কৌশলকে ঠেলে দেয় এবং এটি সম্মিলিত নিরীক্ষণের ট্রেইল সরবরাহ করার একটি গুরুত্বপূর্ণ অঙ্গ।

এবং সাধারণভাবে, আপনার কাছে মাইক্রোসার্ভেসিস সহ তিন ধরণের পরিস্থিতি রয়েছে:

1. ব্যবহারকারী আসেন, একটি ফটো আপলোড করেন এবং এটি ট্যাগ করা দরকার। গ্রেট। ফটো সার্ভিস কেবল JWT বরাবর ট্যাগিং পরিষেবাতে (বা বিপরীতে আপনার নির্ভরতার দিকের উপর নির্ভর করে) যেতে পারে এবং যদি ব্যবহারকারীর সাব-অপারেশন করার অধিকারের অভাব হয় তবে আপনি যথাযথ পদক্ষেপ নেন (সম্ভবত ট্যাগ ছাড়াই ছবি আপলোড করুন) , সম্ভবত ত্রুটিটি ফিরিয়ে দিন, সম্ভবত অন্য কিছু)।

২. ব্যবহারকারী আসেন, একটি ফটো আপলোড করেন এবং এটি ট্যাগ করা দরকার ... তবে এখন নেই। কুল। আপনি এখন ফটো স্বাভাবিক হিসাবে পরিচালনা করেন। পরে, যখন ট্যাগিং ঘটে (ইভেন্ট / মেসেজ হ্যান্ডলিং, সিকিউআরএস স্টাইল কমান্ড প্রসেসিং, কিছু পর্যায়ক্রমিক জব প্রসেসিং, যাই হোক না কেন) ট্যাগিং পরিষেবা ব্যবহারকারীর ছদ্মবেশ তৈরি করবে (সম্ভবত লেখকের কাছ থেকে কাস্টম জেডাব্লুটিটির অনুরোধ করার জন্য একটি ভাগ করা গোপন ব্যবহার করে) এবং তারপরে মূল অনুরোধকারীর পক্ষে সাব-অপারেশন (তাদের সমস্ত অনুমতি এবং সীমাবদ্ধতার সাথে)। এই পদ্ধতিটিতে অ্যাসিক্রোনাস অপারেশনগুলির ক্ষেত্রে স্বাভাবিক সমস্যা রয়েছে যেখানে জিনিসগুলি সহজে না চললে ব্যবহারকারীকে ত্রুটি ফিরিয়ে দেওয়া কঠিন, তবে আপনি যদি ক্রস-পরিষেবা ক্রিয়াকলাপের জন্য এই প্যাটার্নটি ব্যবহার করেন তবে আপনি ইতিমধ্যে এটি সমাধান করে ফেলবেন।

৩. কিছু উপ-সিস্টেমের ব্যবহারকারীর প্রসঙ্গে বাইরে স্টাফ করা দরকার। পুরানো চিত্রগুলি সংরক্ষণাগারভুক্ত করার জন্য আপনি কিছু রাত্রে কাজ পেয়েছেন। হতে পারে আপনার ট্যাগগুলি একত্রীকরণের প্রয়োজন ... এই ক্ষেত্রে, আপনি সম্ভবত এই অভিনেতাদের প্রত্যেকেরই নিজের সিউডো-ব্যবহারকারী সীমাবদ্ধ অনুমতি এবং অডিট ট্রেলের জন্য একটি অনন্য আইডি রাখতে চান।

কোনটি ব্যবহার করবেন তা আপনার পরিস্থিতি, আপনার প্রয়োজন এবং আপনার ঝুঁকি সহনশীলতার উপর নির্ভর করে পরিবর্তিত হবে। এবং অবশ্যই, এগুলি কেবল ব্রড স্ট্রোক জেনারালাইজেশনের একটি অসম্পূর্ণ সেট।

তবে সাধারণভাবে, মাইক্রোসার্ভেসিসগুলি সম্ভব হলে ব্যবহারকারী হওয়া উচিত নয়।


1
আপনার প্রথম এবং শেষ অনুচ্ছেদ বিপরীত নয়?
রবার্ট হার্ভে

1
কোন? অপারেশনগুলি কোনও ব্যবহারকারীর সাথে আবদ্ধ করা উচিত। মাইক্রো সার্ভিসগুলি নিজেরাই ব্যবহারকারী নয় ... আমি স্পষ্ট করে বলব।
টেলাস্টিন

1
আমি সমস্যার সমাধানটি পেয়েছি যা প্রস্তাবিত হয়েছিল: প্রতিটি মাইক্রোসার্চিসের জন্য একটি ক্ষেত্র নির্ধারণ করুন যা এর অ্যাক্সেস টোকনে কোন শেষ পয়েন্টগুলি অ্যাক্সেস করতে পারে তা উল্লেখ করে। পৃথক শিরোনাম হিসাবে ব্যবহারকারীর JWT আইডি টোকেনটিও পাস করুন pass এইভাবে আমরা মাইক্রোসার্ফেস এবং ব্যবহারকারী উভয়কেই সীমাবদ্ধ করতে পারি (গভীরতার সাথে প্রতিরক্ষা)। অধ্যায় 10 manning.com/books/microservices-in-net-core
AWR

পরিস্থিতি 3 একটি আকর্ষণীয় একটি, যা আংশিকভাবে আমাদের সিদ্ধান্ত নিয়েছিল যে ব্যবহারকারীদের মাইক্রোসার্ভেস হওয়া উচিত। তবে দেখে মনে হচ্ছে এটি নিয়মের চেয়ে ব্যতিক্রম হতে পারে।
AWR
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.