এসকিউএল ব্যবহারকারীদের এবং ভূমিকা নিয়ন্ত্রণ নিয়ন্ত্রণ

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

ব্যবহারকারীরা

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

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

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

ভূমিকা

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

অনুমতি প্রদান

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

এখানে বিবৃতির সিনট্যাক্স আছে:

GRANT <অনুমতিগুলি>
[অন <টেবিল>]
<ব্যবহারকারী / ভূমিকা> তে
[অনুগ্রহপূর্বক]

এখন, এই বিবৃতি লাইন-বাই-লাইনটি দেখুন। প্রথম লাইন, GRANT <অনুমতি>, আমাদের দেওয়া নির্দিষ্ট টেবিলের অনুমতিগুলি নির্দিষ্ট করার অনুমতি দেয়। এটি টেবিল-লেভেলের অনুমতি (যেমন নির্বাচন, ইনসার্ট, আপডেট এবং ডিলিট) বা ডাটাবেস অনুমতি (যেমন তৈরি টেবিল, পরিবর্তন ডেটাবাস এবং GRANT) হতে পারে। একাধিক অনুমতি একটি একক GRANT বিবৃতিতে দেওয়া যেতে পারে, কিন্তু টেবিল-স্তর অনুমতি এবং ডাটাবেস-স্তর অনুমতিগুলি একক বিবৃতিতে মিলিত হতে পারে না।

দ্বিতীয় লাইন, অন <সারণী>, টেবিল-স্তরের অনুমতিগুলির জন্য প্রভাবিত সারণী নির্দিষ্ট করার জন্য ব্যবহৃত হয়। আমরা যদি ডাটাবেস-স্তর অনুমতি প্রদান করি তবে এই লাইন বাদ দেওয়া হবে। তৃতীয় লাইনটি ব্যবহারকারী বা ভূমিকা নির্দিষ্ট করে দেওয়া হচ্ছে তা নির্দিষ্ট করে।

অবশেষে, চতুর্থ লাইন, অনুদান অপশন সহ, ঐচ্ছিক। যদি এই লাইনটি বিবৃতিতে অন্তর্ভুক্ত করা হয়, তাহলে ক্ষতিগ্রস্ত ব্যবহারকারীকে অন্যান্য ব্যবহারকারীদের কাছে একই অনুমতি দেওয়ার অনুমতি দেওয়া হয়। উল্লেখ্য, অনুমতির সাথে ভূমিকা নির্ধারিত হলে GRANT OPTION উল্লেখ করা যাবে না।

উদাহরণ

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

সন্তুষ্ট নির্বাচন করুন, অন্তর্ভুক্ত করুন, আপডেট করুন
গ্রাহকদের উপর
ডেটাএন্ট্রি থেকে

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

সারণী তৈরি করুন
ডিবিএ তে
অনুমোদন সঙ্গে

লক্ষ্য করুন যে আমরা আমাদের ডিবিএ অন্যান্য ব্যবহারকারীদের কাছে এই অনুমতি বরাদ্দ করতে পারে তা নিশ্চিত করার জন্য আমরা GRANT OPTION লাইন দিয়ে অন্তর্ভুক্ত করেছি।

অনুমতিগুলি মুছে ফেলা হচ্ছে

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

REVOKE [অনুমতি প্রদানের জন্য] <অনুমতি>
<<টেবিল>
<ব্যবহারকারী / ভূমিকা> থেকে

আপনি লক্ষ্য করবেন যে এই কমান্ডের বাক্য গঠনটি GRANT কমান্ডের অনুরূপ। একমাত্র পার্থক্য হল যে GRANT OPTION এর সাথে কমান্ডের শেষে REVOKE কমান্ড লাইনে নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, আসুন কল্পনা করি আমরা গ্রাহকদের ডাটাবেস থেকে রেকর্ডগুলি সরিয়ে দেওয়ার জন্য মারিয়ার পূর্বে অনুমোদিত অনুমতি প্রত্যাহার করতে চাই। আমরা নিম্নলিখিত কমান্ড ব্যবহার করব:

REVOKE DELETE
গ্রাহকদের উপর
মরিয়ম থেকে

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

DENY <অনুমতিগুলি>
<<টেবিল>
<ব্যবহারকারী / ভূমিকা থেকে

উদাহরণ

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

ডেনি ডিলিট
গ্রাহকদের উপর
মরিয়মের কাছে

ডেনিয়েল কমান্ডটি মূলত ডেটাবেস অ্যাক্সেস কন্ট্রোলগুলিতে "নেতিবাচক অনুমতি" তৈরি করে। যদি আমরা পরে ম্যারি গ্রাহকদের টেবিলের থেকে সারি অপসারণ করার অনুমতি দেয়, আমরা কেবল GRANT কমান্ড ব্যবহার করতে পারবেন না। যে আদেশ অবিলম্বে বিদ্যমান DENY দ্বারা overridden করা হবে এর পরিবর্তে, আমরা প্রথমে REVOKE কমান্ডটি নেতিবাচক অনুমতি এন্ট্রির অপসারণের জন্য ব্যবহার করব:

REVOKE DELETE
গ্রাহকদের উপর
মরিয়ম থেকে

আপনি লক্ষ্য করবেন যে এই কমান্ড ঠিক একই হিসাবে একটি ইতিবাচক অনুমতি অপসারণ ব্যবহৃত হিসাবে। মনে রাখবেন যে DENY এবং GRANT উভয়ই একটি অনুরূপ ফ্যাশন কাজ করে * mdash; তারা উভয় ডাটাবেস অ্যাকসেস কন্ট্রোল পদ্ধতিতে অনুমতি (ইতিবাচক বা নেতিবাচক) তৈরি করে। REVOKE কমান্ড নির্দিষ্ট ব্যবহারকারীর জন্য সমস্ত ইতিবাচক ও নেতিবাচক অনুমতিগুলি সরিয়ে দেয়। একবার এই কমান্ডটি জারি করা হলে, ম্যারি টেবিলে সারিগুলি মুছে ফেলতে সক্ষম হবে যদি সে এমন ভূমিকার সদস্য হয় যা এই অনুমতির মালিক। বিকল্পভাবে, একটি GRANT কমান্ড তার অ্যাকাউন্টে সরাসরি DELETE অনুমতি প্রদান জারি করা যেতে পারে।

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