প্রায় 10 বছর ধরে আমি এসকিউএল সার্ভার ডেটা স্টোরের সাথে বিভিন্ন ইন-হাউস ডেস্কটপ ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে কাজ করেছি। খুব কমই আমি এই প্রকল্পগুলি শুরু করেছিলাম - বেশিরভাগটি টেকওভারের কাজ।
একটি জিনিস যা সর্বত্র স্থির বলে মনে হয়েছিল তা হ'ল একটি একক গ্লোবাল এসকিউএল সার্ভার ব্যবহারকারীর অ্যাকাউন্ট ছিল যা এই অ্যাপ্লিকেশনটি ব্যবহার করে এটি সাধারণ ডাটাবেসটিকে অনুমতি দিয়েছে এবং হ্যাঁ কিছু নিষ্পাপ পরিস্থিতিতে এটি sa
ব্যবহারকারীর অ্যাকাউন্টটি ব্যবহার করেছে , যা আমি সাধারণত যখন সম্ভব হয়েছিল তখন ঠিক করার চেষ্টা করেছি ।
অ্যাপ্লিকেশনটি ডাটাবেস অ্যাক্সেস করতে ব্যবহার করে এমন ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি আপনি কার্যকরভাবে আড়াল করতে পারবেন না। এগুলি সাধারণত কোনও ini
বা config
ফাইলে সংরক্ষণ করা হয় বা সম্ভবত কার্যকর কার্যকর অবস্থায় বেকড থাকে। সমস্ত ক্ষেত্রে, তারা যদি কিছুটা খনন করে তবে তারা ব্যবহারকারীর কাছে দৃশ্যমান। একটি ক্ষেত্রে আমরা প্রকৃতপক্ষে একটি config
ফাইল ব্যবহার করেছি তবে এটি এনক্রিপ্ট করেছি, তবে অবশ্যই এনক্রিপশন কীটি এক্সিকিউটেবলের মধ্যে সংরক্ষণ করতে হয়েছিল (আমরা এর সীমাবদ্ধতার জন্য নিখুঁত ছিলাম না, তবে এটি কার্যকরভাবে যারা যথেষ্ট বুদ্ধিমান ছিল তাদের লোকজনকে পোঁতা দেওয়া থেকে বিরত করেছিল) সন্ধান করার জন্য config
ফাইল)।
এই সমস্ত সিস্টেমে অ্যাপ্লিকেশনটিতে একটি ব্যবহারকারী-প্রমাণীকরণ সিস্টেম তৈরি করা হয়েছিল, তবে অবশ্যই সেগুলি সমস্ত অ্যাপ্লিকেশনটির মাধ্যমেই পরিচালিত হয়েছিল, যার অর্থ ব্যবহারকারীর তথ্য ডাটাবেসে সংরক্ষিত ছিল। অ্যাপ্লিকেশনটি আপনার অ্যাক্সেস স্তরের ভিত্তিতে আপনি কী করতে পারেন তা সীমাবদ্ধ করে, তবে আপনি কেবল ডাটাবেসের সাথে সংযোগ করতে এবং অ্যাড-হক অনুসন্ধানগুলি চালাতে পারলে এটি সমস্ত ধরণের মোট।
এই সমস্যাটি পেতে অন্যান্য সিস্টেমগুলি কী করে তা জানতে আগ্রহী। আমি জানি বিকল্পগুলি এখানে:
- কোনও ব্যবহারকারী এবং ভূমিকা তালিকা বজায় রাখতে এসকিউএল সার্ভারের সুরক্ষা ব্যবস্থাটি ব্যবহার করুন এবং ডেস্কটপ অ্যাপ্লিকেশনটিকে টি-এসকিউএল কোয়েরির মাধ্যমে ব্যবহারকারীদের যুক্ত এবং সরান।
- সরাসরি ডাটাবেসের সাথে সংযোগ স্থাপনের পরিবর্তে, এমন কোনও ওয়েব সার্ভিস তৈরি করুন যা সার্ভারে চলে এবং সেখানে প্রমাণীকরণের যুক্তি যুক্ত করে। সুরক্ষা বৈধতা প্রতিটি অনুরোধ করুন।
প্রথম বিকল্পগুলি কিছুটা কুৎসিত কারণ আপনি ব্যবহারকারীদের ডাটাবেস থেকে পৃথক করছেন সুতরাং ব্যবহারকারীরা আর প্রথম শ্রেণির সত্তা নেই এবং আপনি তাদের বিদেশী কী সম্পর্কগুলি ইত্যাদির সাথে উল্লেখ করতে পারবেন না etc.
দ্বিতীয়টি কেবল একটি বড় পারফরম্যান্স সমস্যা, এবং প্রচুর অতিরিক্ত কাজের মতো মনে হচ্ছে, তত সহজে আপনি NHibernate (যেমন আমার মনে হয়) এর মতো ORM ম্যাপারগুলি সহজে ব্যবহার করতে পারবেন না।
কাহারো কি এটির সাথে অভিজ্ঞতা আছে? সেরা অনুশীলন?
সম্পাদন করা
আরও কিছু চিন্তা করে, এসকিউএল সার্ভার প্রমাণীকরণ আসলে এই সমস্যাটি সমাধান করতে পারে? উদাহরণস্বরূপ, যদি আপনার ব্যবহারকারীর অবশ্যই টাইমশিট রেকর্ডগুলি সন্নিবেশ করতে এবং আপডেট করতে সক্ষম হয় যাতে আপনি নিজের টাইমশিটটি সম্পাদনা করতে পারেন, এসকিউএল সার্ভারের সময় পত্রকের বিবরণ সারণীতে অন্য সারিগুলিতে অ্যাক্সেসকে বঞ্চিত করার কোনও উপায় নেই, যার অর্থ আপনি অন্য ব্যক্তির টাইমশিটগুলিও পড়তে এবং লিখতে পারেন ।