কোনও অ্যাপ্লিকেশনের প্রতিটি ব্যবহারকারীর জন্য একটি স্বতন্ত্র ডাটাবেস অ্যাকাউন্ট ব্যবহার করা কি কখনও ভাল অনুশীলন?


13

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

এমন কি কোনও জটিল জটিল ব্যবসায়িক অ্যাপ্লিকেশন রয়েছে যেখানে প্রতিটি ব্যক্তির নিজস্ব ডাটাবেস অ্যাকাউন্টের প্রয়োজন হয় এবং প্রতিটি ব্যবহারকারীর কী করার অনুমতি দেওয়া উচিত এবং কী করা উচিত নয় সে সম্পর্কে নীতি নিয়মগুলি প্রয়োগ করতে ডাটাবেস সার্ভারের উপর নির্ভর করা হয়?

আমি এমন অ্যাপ্লিকেশনগুলি সম্পর্কে ভাবছি যেখানে একাধিক লোকেরা একটি ডাটাবেসে তথ্য অবদান রাখে এবং অন্যদের দ্বারা সঞ্চিত তথ্য অ্যাক্সেস করতে পারে - যেমন কোনও সংস্থার সহকর্মীদের যাদের গ্রাহকের রেকর্ডে অ্যাক্সেস করা দরকার।

এছাড়াও এই ধরণের সেট আপের জন্য কোনও নাম আছে?


1
আসুন এটিকে তার মাথায় ফ্লিপ করুন, আমি কি কখনও ভাল অনুশীলন না করাই চাই?
স্টিভেটেক

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

@ স্টিভটেক মনে হচ্ছে আমার প্রশ্নের আপনার উত্তরটি "হ্যাঁ"। আপনি একটি সম্পূর্ণ উত্তরে এটি প্রসারিত করতে পারেন?
বিডিএসএল

উত্তর:


6

আপনার যদি প্রয়োজন হয় ডেটা পর্যায়ে কঠোর নিয়ন্ত্রণ প্রয়োগ করা। উদাহরণস্বরূপ বিস্তৃত নিরীক্ষণ। বেশ কয়েকটি ব্যবহারকারী একই অ্যাকাউন্ট ভাগ করে নিলে নিরীক্ষণ খুব ভাল হয় না। আপনার যদি এমন কিছু ব্যবহারকারী থাকে যাঁর সরাসরি ডেটা ডাটাবেস অ্যাক্সেস করার দরকার পড়ে।

সুরক্ষা যদি এমন কঠোর হয় তবে আপনি সাধারণত ডাটাবেস সরাসরি সরাসরি প্রকাশ করেন না। আপনার একটি পরিষেবা আছে এবং ক্লায়েন্টকে অবশ্যই পরিষেবাটি থেকে ডেটা পেতে হবে।

কোনও ওয়েব অ্যাপ্লিকেশনে ডাটাবেস (উদাহরণস্বরূপ পোর্ট 1433) সরাসরি উন্মুক্ত হয় না তাই আপনার সুরক্ষার স্তর রয়েছে। এমনকি যদি ওয়েব অ্যাপ্লিকেশন ডাটাবেসের ব্যবহারের সরাসরি ব্যবহারকারীরা নেই সরাসরি ডাটাবেসের অ্যাক্সেসের অনুমোদন দেয়।

যদি লগইন এবং পাসওয়ার্ড ক্লায়েন্ট অ্যাপ্লিকেশন থাকে তবে এটি হ্যাক হতে পারে। যদি কোনও ডোমেন আপনি সমন্বিত সুরক্ষা ব্যবহার করতে পারেন।

ডাটাবেসে আপনার বেশ সূক্ষ্ম নিয়ন্ত্রণ থাকতে পারে। তবে সারি স্তরের নিয়ন্ত্রণ কিছুটা কাজ। ব্যবসায়ের নিয়মের জন্য একটি ডাটাবেস ভাল সরঞ্জাম নয়। ব্যবসায়ের নিয়ম এবং বিস্তারিত সুরক্ষা সাধারণত প্রয়োগের স্তরে প্রয়োগ করা হয়।

আপনার একটি মিশ্র মোড থাকতে পারে যেখানে অ্যাডমিনদের দ্বারা ব্যবহৃত কিছু সঞ্চিত পদ্ধতি রয়েছে এবং আপনি কোন প্রশাসককে ট্র্যাক করতে চান। এবং আপনি কেবলমাত্র প্রতিবেদন উত্পন্ন এমন ব্যবহারকারীদের কেবল পঠনের অ্যাক্সেস দিতে পারেন।


5

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

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

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

এখানে চিত্র বর্ণনা লিখুন

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

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


4

আপনার যত তাড়াতাড়ি সম্ভব সর্বাধিক দানাদার স্তরে সুরক্ষা প্রয়োগ করা শুরু করা উচিত। এক্ষেত্রে ভূমিকাগুলি সহায়তা করে - একবারে অনেকগুলি টেবিলগুলিতে লোককে অ্যাক্সেস দেওয়া কোনও দুঃস্বপ্ন নয়।

প্রত্যেকের জন্য একক অ্যাকাউন্ট এখানে এবং অন্য কোথাও প্রশ্নের দুর্দান্ত উত্স - "রেকর্ড এক্স মুছে ফেলা হয়েছিল, কীভাবে এটি করব তা আমি কীভাবে খুঁজে বের করব?" - স্বতন্ত্র অ্যাকাউন্ট এবং নিরীক্ষণ ব্যতীত - উত্তরটি আপনি পারবেন না ।

"অডিট" করার অর্থ আমি বোঝাতে চাইছি যে এটি যখন সবার পক্ষে একাউন্টে রয়েছে তখনই এর অর্থ এই নয় যে আপনার সত্যিকারের সুরক্ষা রয়েছে। যদি, বলুন, এইচআর টেবিলের একটি রেকর্ড মুছে ফেলা হয়েছে, তবে আপনি কেবলমাত্র এটিই বলতে পারবেন যে এইচআর টেবিলটিতে অ্যাক্সেস থাকা কেউ এই কাজটি করেছেন - এটি x সংখ্যা number

আপনার সিস্টেমে ট্রিগারগুলি দরকার যা অ্যাকশন এক্স সম্পাদন করে এমন স্বতন্ত্র স্তরে ট্র্যাক করতে সক্ষম হওয়া লগ ক্রিয়াকলাপগুলি (যদি না আপনার কাছে আরডিবিএমএস যেমন ওরাকলের মতো যেখানে এটি স্বয়ংক্রিয়ভাবে তৈরি করা যায়)।

যাইহোক, আপনার সুরক্ষাটি যত তাড়াতাড়ি সম্ভব আপনার দাতাগুলি যত তাড়াতাড়ি সম্ভব করা উচিত - কেবলমাত্র "জানা প্রয়োজন" ভিত্তিতে লোককে টেবিলগুলিতে অ্যাক্সেস দিন। এবং, সর্বদা টেবিলগুলিতে কর্মের টাইমস্ট্যাম্পগুলি অন্তর্ভুক্ত করুন - লোকেরা ঘন ঘন তাদের আইডিগুলি অন্যকে দেয় - আপনি যদি বলতে পারেন "জিমি, আপনি 17:49-এ অফিসে একমাত্র ছিলেন ..." - আবার, এটি আয়রনক্ল্যাড নয়, কেবল আপনার কাঁপুনে অন্য তীর।

হতে পারে আপনি যদি আমাদের আপনার আরডিবিএমএস দেন, তবে আপনি আপনার পরিস্থিতির সাথে আরও সুনির্দিষ্ট / প্রাসঙ্গিক পরামর্শ পেতে পারেন?


আমি মনে করি না এটি আমার পরিস্থিতির সাথে সরাসরি জড়িত, আমি বেশিরভাগ কৌতূহল প্রকাশ করে জিজ্ঞাসা করি। আমি ওয়েব অ্যাপ্লিকেশন এবং মাইএসকিউএল নিয়ে কাজ করি।
বিডিএসএল

1
আপনি বলে যাচ্ছেন বলে মনে হচ্ছে যে সমস্ত ডাটাবেসের জন্য প্রতিটি মানব শেষ ব্যবহারকারীকে একটি স্বতন্ত্র লগইন করা উচিত, তবে আমি অনেকগুলি সার্ভার অ্যাপ্লিকেশন সম্পর্কে জানি যা কেবলমাত্র একটি অ্যাপ্লিকেশনটির জন্য একটি ডিবিএমএস ব্যবহারকারী ব্যবহার করে, এবং আমি এর চেয়ে কম নিন্দিতও দেখিনি have অনুশীলন করা.
বিডএসএল

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

1
@ বিডিএসএল আপনি ব্যবসায়ের প্রয়োগের সাথে সার্ভার মিশ্রণ করুন এবং এটি বিভ্রান্তির একটি উত্স। ব্যবসায়িক অ্যাপ্লিকেশনগুলির মধ্যে ডেস্কটপ অ্যাপ্লিকেশন অন্তর্ভুক্ত।
পাপারাজ্জো

1
@bdsl এর পরে সার্ভার অ্যাপ্লিকেশন শব্দটি ব্যবহার বন্ধ করুন যদি আপনি ডেস্কটপ অ্যাপ্লিকেশনটি বাদ দিতে চান না।
পাপারাজ্জো

3

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

এটি সাধারণত অজ্ঞতা, সরলতার জন্য, বা কখনও কখনও পারফরম্যান্সের কারণে করা হয়।

ডেটাবেসগুলি প্রায়শই দীর্ঘস্থায়ী হয় এবং একই সময়ে এবং সময়ের সাথে সাথে একাধিক অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়। আপনি একাধিক অ্যাপ্লিকেশন না দিয়ে ডাটাবেসে অ্যাক্সেস নিয়ন্ত্রণকে কেন্দ্রিয় করে সংস্থানগুলি সংরক্ষণ করতে পারেন।

আপনি একটি ডিবি সার্ভার চয়ন করতে চান যা সারি সুরক্ষা, কলাম সুরক্ষা এবং ছদ্মবেশ / প্রক্সী প্রমাণীকরণকে সমর্থন করে (যা প্রকৃত ডিবি ব্যবহারকারীদের + সংযোগ পুলিং সমর্থন করে)

এটি ওয়ার্ডপ্রেসের মতো "প্লাগইন" ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য আরও সুরক্ষিত হতে পারে যেখানে দক্ষ নয় এমন প্লাগইন লেখকদের কারণে এসকিউএল ইঞ্জেকশনগুলি এড়ানো শক্ত। প্রতিটি প্লাগইন পুরো প্রয়োগের পরিবর্তে ডিবি লগইন পায়।


ওয়ার্ডপ্রেস সাইটের প্রতিটি ব্যবহারকারীর বিভিন্ন শংসাপত্রের সাহায্যে ডাটাবেসের সাথে সংযোগ স্থাপন করা সম্ভব?
বিডিএসএল

@ বিডিএসএল হ্যাঁ এটি
নীল ম্যাকগুইগান 21

1
আপনি কীভাবে এটি করতে কোনও গাইডের সাথে লিঙ্ক করতে পারেন? আমি দ্রুত অনুসন্ধান করেছি এবং এটি খুঁজে পেলাম না। এর অর্থ কি ওয়ার্ডপ্রেস লগইন পৃষ্ঠাটি ডিবিতে লগ ইন করার জন্য প্রয়োজনীয় শংসাপত্রগুলির জন্য জিজ্ঞাসা করে?
বিডিএসএল

@ বিডিএসএল আমার পিএইচপি বেশ মরিচা। আপনি কীভাবে এটি বসন্ত (জাভা) এবং পোস্টগ্র্রেএসকিউএল দিয়ে করবেন তা এখানে। ব্লগ.ডাটাবেসটপটর্নস.কম / ২০১3 / ২০১৩stackoverflow.com/questions/2998597/…
নীল ম্যাকগুইগান

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