এসকিউএল সার্ভারে সিএলআর ব্যবহার করার ক্ষেত্রে কি কোনও বিশেষ সুরক্ষা বা পারফরম্যান্স ঝুঁকি রয়েছে?
এসকিউএল সার্ভারে সিএলআর ব্যবহার করার ক্ষেত্রে কি কোনও বিশেষ সুরক্ষা বা পারফরম্যান্স ঝুঁকি রয়েছে?
উত্তর:
রিমাস যেভাবে নির্দেশ করেছে, প্রশ্নটি উত্তর পেতে খুব জেনারিক কারণ উত্তর কী কার্যকারিতাটি ব্যবহার করতে হবে এবং কীভাবে এটি ব্যবহার করা হবে তার প্রসঙ্গে নির্ভর করে।
"সুরক্ষা" সম্পর্কিত:
যদি আপনি এমন কিছু সম্পর্কে জিজ্ঞাসা করছেন যা চিহ্নিত একটি অ্যাসেমব্লিতে করা যেতে পারে PERMISSION_SET = SAFE
, তবে এমন কোনও সমস্যা নেই যা আমি খুঁজে পেতে সক্ষম হয়েছি। এবং এসকিউএলসিএলআর ব্যবহার করার চেয়ে xp_cmdshell
বা আশ্চর্যজনক (যে sp_OA*
ব্যঙ্গাত্মক ছিল) প্রকাক্স (বা এমনকি বর্ধিত স্টোরড পদ্ধতিগুলি রয়েছে, তবে আশা করা যায় যে এগুলি আর কেউ তৈরি করছে না ) than
আপনি যদি ব্যবহারিক দিক থেকে "নিরাপদ" অর্থটি বোঝাতে চান তবে দয়া করে এই নিবন্ধটি দেখুন: এসকিউএলসিআর-এর স্তর সিঁড়ি 3: সুরক্ষা (সাধারণ এবং নিরাপদ সমাবেশগুলি) নিখরচায় নিবন্ধকরণ প্রয়োজন।
যদি আপনি এমন কোনও কিছু সম্পর্কে জিজ্ঞাসা করছেন যা চিহ্নিত একটি অ্যাসেমব্লিতে করা যেতে পারে PERMISSION_SET = EXTERNAL_ACCESS
, তবে কার্যকারিতা কীভাবে ব্যবহৃত হচ্ছে তার উপর নির্ভর করে আবার অবশ্যই ঝুঁকি রয়েছে। আপনি যদি ডিরেক্টরি এবং ফাইলের নাম (যেমন পঠনযোগ্য কেবল) পড়তে একটি রুটিন লিখেন তবে এটি কী দেখা উচিত এবং কী দেখা উচিত নয় তা কেবল বিষয় just আপনি যদি এমন কোনও কোড লিখছেন যা কোনও ফাইল মুছে ফেলার অনুমতি দেয় তবে ঝুঁকি বাড়ে। কিন্তু কি করতে ঐ বৈদেশিক সম্পদ সঙ্গে সম্পন্ন করা দ্বারা নিয়ন্ত্রিত হয়:
আপনি যদি এমন কিছু সম্পর্কে জিজ্ঞাসা করছেন যা চিহ্নিত একটি অ্যাসেমব্লিতে করা যেতে পারে PERMISSION_SET = UNSAFE
, এটি মোটামুটি খোলামেলা। ইউএনএসএফই অ্যাসেমব্লিতে প্রচুর কার্যকারিতা কেবলমাত্র ব্যবহারযোগ্য হিসাবে বিবেচিত হয় কারণ এগুলি সুরক্ষা বা পারফরম্যান্সের চেয়ে স্থায়িত্ব এবং / অথবা ধারাবাহিক আচরণের বিষয়। উদাহরণস্বরূপ, একটি ইউএনএসএফই অ্যাসেমব্লিতে লিখিত স্থিতিশীল পরিবর্তনশীল হওয়া সম্ভব। এসকিউএলসিআরআর ক্লাসগুলি সমস্ত সেশনে ভাগ করা হওয়ায় এটি করা সাধারণত ভাল কাজ নয়। যদি আপনার উদ্দেশ্যটি সমস্ত সেশন জুড়ে মেমরির মধ্যে ডেটা ভাগ করে নেওয়ার এবং রেস শর্তগুলির (এবং প্রচুর পরীক্ষামূলকভাবে সম্পন্ন করার) পরিকল্পনা করে থাকে, তবে আপনি যেমন আচরণের প্রত্যাশা করছেন ঠিক তেমনই আপনার উচিত। তবে যদি আপনি কেবল কোনও নির্দিষ্ট অধিবেশনটির জন্য এটির পুনরায় সন্ধানের বা পুনরায় গণনা না করে কোনও মান ক্যাচ করার জন্য লিখনযোগ্য স্থিতিশীল ভেরিয়েবলটি চেয়েছিলেন এবং অন্য সেশনগুলি সেই মানটি পড়ছে এবং সম্ভবত এটি অতিরিক্ত লিখিত রয়েছে, তবে সচেতন ছিল না well এটি একটি সমস্যা হবে।
তবে যদি আপনি রেজিস্ট্রিতে কেউ লিখতে ভেবে উদ্বিগ্ন হন, তবে এখনও রেজিস্ট্রি লিখতে এমন কোনও কোড না পেয়ে থাকেন তবে আপনাকে সম্ভবত এই সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই ;-)।
যদি আপনি কীভাবে এক্সটার্নাল_এসিসিএসএস এবং ইউএনএসএফই ব্যবহারিক দিক থেকে কাজ করেন এবং অসমমিত্রিক কী TRUSTWORTHY ON
বা শংসাপত্র ভিত্তিক লগইন ব্যবহার করে বনাম সেটিং (পছন্দ না করা) এর মধ্যে পার্থক্য দেখতে চান তবে দয়া করে এই নিবন্ধটি দেখুন: এসকিউএলসিআর স্তরের 4 সিঁড়ি: সুরক্ষা (বহিরাগত এবং UNSAFE সমাবেশগুলি) (নিখরচায় নিবন্ধকরণ প্রয়োজন)।
"পারফরম্যান্স" সম্পর্কিত:
আপনি যা করতে চেষ্টা করছেন এবং কীভাবে আপনি এটি চালিয়ে যাচ্ছেন তা এই বিষয়। কিছু জিনিস রয়েছে যা এসকিউএলসিআরআর-তে অনেক দ্রুত এবং কিছু জিনিস ধীর। তবে টি-এসকিউএলের মতোই কিছুটা সহজ এবং / অথবা দক্ষ কোনও কাজ করা এবং ভুলভাবে কাজ করে জটিল ও / বা অদক্ষ করে তোলা সম্ভব। তবে এসকিউএল সিএলআর ব্যবহার করা স্বভাবগতভাবে নয়, এটি খুব ধীরে ধীরে nature
SQLCLR সমাহারগুলি নিরাপত্তা এক্সেস তিন স্তরের দিয়ে ইনস্টল করা যেতে পারে: SAFE | EXTERNAL_ACCESS | UNSAFE
। এটি যথেষ্ট নথিভুক্ত হয়েছে, সমাবেশগুলি ডিজাইন করুনCREATE ASSEMBLY
এবং ডিজাইনিং করুন :
অ্যাসেম্বলি সুরক্ষা পরিচালনা করা
আপনি কোনও নিয়ন্ত্রণ করতে পারবেন যখন কোনও পরিচালনা পরিষদ পরিচালিত কোডটি চালায় তখন কোনও এন.এইটি কোড অ্যাক্সেস সুরক্ষা দ্বারা NET কোড অ্যাক্সেস সুরক্ষা দ্বারা সুরক্ষিত সংস্থানগুলিতে অ্যাকসেসি কতটা অ্যাক্সেস করতে পারে। আপনি যখন কোনও অ্যাসেম্বলি তৈরি বা সংশোধন করেন তখন তিনটি অনুমতির সেটগুলির মধ্যে একটি নির্দিষ্ট করে আপনি এটি করেন: নিরাপদ, এক্সটার্নাল_অ্যাকসেস, বা ইউএনএসএফই।
SAFE
নিরাপদটি ডিফল্ট অনুমতি সেট এবং এটি সীমাবদ্ধ। নিরাপদে অনুমতি নিয়ে কোনও অ্যাসেমব্লির দ্বারা চালিত কোড বাহ্যিক সিস্টেম সংস্থান যেমন ফাইল, নেটওয়ার্ক, পরিবেশের ভেরিয়েবল বা রেজিস্ট্রি অ্যাক্সেস করতে পারে না। নিরাপদ কোড স্থানীয় এসকিউএল সার্ভার ডেটাবেসগুলি থেকে ডেটা অ্যাক্সেস করতে পারে বা স্থানীয় ডেটাবেসের বাইরে সংস্থানগুলি অ্যাক্সেসের সাথে জড়িত না এমন গণনা এবং ব্যবসায়িক যুক্তি সম্পাদন করতে পারে।
বেশিরভাগ সমাবেশগুলি এসকিউএল সার্ভারের বাইরের সংস্থান অ্যাক্সেস না করে গণনা এবং ডেটা ম্যানেজমেন্টের কাজগুলি সম্পাদন করে। সুতরাং, আমরা সমাবেশের অনুমতি সেট হিসাবে SAFE সুপারিশ করি recommend
EXTERNAL_ACCESS
এক্সটার্নাল_এইসিএসিএসএসিসমূহগুলি ফাইল, নেটওয়ার্ক, ওয়েব পরিষেবাদি, পরিবেশগত পরিবর্তনশীল এবং রেজিস্ট্রি ইত্যাদির মতো নির্দিষ্ট বাহ্যিক সিস্টেমের সংস্থানগুলিতে অ্যাক্সেসের অনুমতি দেয়। এক্সটার্নাল অ্যাক্সেসের অনুমতি সহ কেবলমাত্র এসকিউএল সার্ভার লগইনগুলি এক্সটারনাল_এসিএসসি সমাবেশগুলি তৈরি করতে পারে। SAFE এবং EXTERNAL_ACCESS সমাবেশগুলিতে কেবলমাত্র কোড থাকতে পারে যা যাচাইযোগ্যভাবে টাইপ-নিরাপদ। এর অর্থ এই যে এসেম্বলিগুলি কেবল সংজ্ঞায়িত এন্টি পয়েন্টগুলির মাধ্যমে শ্রেণীর অ্যাক্সেস করতে পারে যা টাইপ সংজ্ঞার জন্য বৈধ। সুতরাং, তারা যথেচ্ছভাবে কোডের মালিকানাধীন মেমরি বাফারগুলিতে অ্যাক্সেস করতে পারবেন না। অতিরিক্তভাবে, তারা অপারেশন করতে পারে না যা এসকিউএল সার্ভার প্রক্রিয়াটির দৃ rob়তার উপর বিরূপ প্রভাব ফেলতে পারে।
UNSAFE
ইউএনএসএফই এসকিউএল সার্ভারের এবং এর বাইরে উভয়ই সংস্থাগুলিকে সংস্থানসমূহকে রিসোর্সগুলিতে সীমাবদ্ধ অ্যাক্সেস দেয়। যে কোডটি একটি ইউএনএসএফই অ্যাসেমব্লির মধ্যে থেকে চলছে সেগুলি পরিচালনা করা কোডগুলিতে কল করতে পারে call এছাড়াও, ইউএনএসএফই উল্লেখ করে সিএলআর ভেরিফায়ার দ্বারা টাইপ-অনিরাপদ হিসাবে বিবেচিত অপারেশনগুলি সমাবেশের কোডের অনুমতি দেয়। এই ক্রিয়াকলাপগুলি অনিয়ন্ত্রিত পদ্ধতিতে সম্ভাব্যভাবে এসকিউএল সার্ভার প্রক্রিয়া স্থানের মেমরি বাফারগুলিতে অ্যাক্সেস করতে পারে। ইউএনএসএফই অ্যাসেমব্লিগুলি এসকিউএল সার্ভার বা সাধারণ ভাষার রানটাইম উভয়েরই সুরক্ষা সিস্টেমকে সম্ভাব্যভাবে নষ্ট করতে পারে। UNSAFE অনুমতিগুলি কেবল অভিজ্ঞ বিকাশকারী বা প্রশাসকগণের দ্বারা অত্যন্ত বিশ্বস্ত সমাবেশগুলিতে দেওয়া উচিত। কেবলমাত্র সিসাদমিন স্থির সার্ভার রোলের সদস্যরা ইউএনএসএফই অ্যাসেমব্লি তৈরি করতে পারে।
অনুমোদিত সিএলআর বৈশিষ্ট্যগুলিতে আরও বিধিনিষেধ রয়েছে এবং কেবল নেট ফ্রেমওয়ার্ক অ্যাসেমব্লির একটি উপসেট সমর্থিত। আবার, লিঙ্কযুক্ত ডকুমেন্টেশন পড়ুন।
পারফরম্যান্সের ক্ষেত্রে, সবচেয়ে গুরুত্বপূর্ণ ধারণাটি মনে রাখতে হবে যে এসকিউএল সার্ভার একটি সমবায় মাল্টি-টাস্কিং পরিবেশ, যখন সিএলআর নেই। SQLCLR কোড আবশ্যক কল Thread.BeginThreadAffinity()
যে কোনো সময় এটা (অবরুদ্ধ করা সমেত) কোন চলাকালীন CPU- র হগ। অ্যাডাম মাচানিকের একটি দুর্দান্ত উপস্থাপনা রয়েছে, ডেটা দেখুন, দ্রুত: এসকিউএলসিআর সহ মাইক্রোসফ্ট এসকিউএল সার্ভার পারফরম্যান্স কৌশল ।
বিষয়টি বিশাল এবং প্রশ্নটি অস্পষ্ট। এসকিউএলসিএলআর কিছু অনন্য কাজ সম্পাদন করতে পারে যা অন্য কোনও বৈশিষ্ট্য মেলে না। এবং এসকিউএলসিএলআর এসকিউএল সার্ভার অস্ত্রাগারগুলির মধ্যে একটি অন্য অস্ত্র যা আপনি নিজের কর্মক্ষমতা বা সুরক্ষা দিয়ে পায়ে গুলি করতে পারেন। ডকুমেন্টেশন পড়ুন।