কম্পিউটার

SQL সার্ভার 2016-এ সারি-স্তরের নিরাপত্তা

Microsoft® SQL Server®-এ নিরাপত্তার উপর দৃষ্টি নিবদ্ধ করেছে, এবং প্রায় সব রিলিজেই বিদ্যমান বৈশিষ্ট্যের উন্নতি হয়েছে বা নতুন নিরাপত্তা বৈশিষ্ট্য প্রবর্তন করেছে। এসকিউএল সার্ভার 2016-এ, মাইক্রোসফ্ট অনেক নতুন নিরাপত্তা বৈশিষ্ট্য চালু করেছে যা ব্যবহারকারীদের তাদের ডেটা সুরক্ষিত রাখতে সাহায্য করে, যার মধ্যে রয়েছে সারি-স্তরের নিরাপত্তা, সর্বদা এনক্রিপ্ট করা এবং ডায়নামিক ডেটা মাস্কিং৷

পরিচয়

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

আরএলএসের প্রয়োজনীয়তা

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

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

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

SQL সার্ভার 2016-এ সারি-স্তরের নিরাপত্তা

ছবির উৎস: https://sqlwithmanoj.com/2015/07/13/implementing-row-level-security-rls-with-sql-server-2016/

RLS বৈশিষ্ট্য

RLS এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

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

আরএলএস কীভাবে কাজ করে

RLS বাস্তবায়ন করতে, আপনাকে নিম্নলিখিত উপাদানগুলি বিবেচনা করতে হবে:

  • প্রেডিকেট ফাংশন
  • নিরাপত্তার পূর্বাভাস
  • নিরাপত্তা নীতি

নিম্নলিখিত বিভাগগুলি এই আইটেমগুলিকে বর্ণনা করে৷

প্রেডিকেট ফাংশন

একটি predicate ফাংশন হল একটি ইন-লাইন টেবিল ভ্যালু ফাংশন যা পরীক্ষা করে যে একটি প্রশ্ন নির্বাহকারী auser এর উপর সংজ্ঞায়িত যুক্তির উপর ভিত্তি করে ডেটাতে অ্যাক্সেস আছে কিনা। এই ফাংশন 1 প্রদান করে প্রতিটি সারির জন্য যা একজন ব্যবহারকারীকে অ্যাক্সেস করার অনুমতি দেওয়া হয়েছে।

নিরাপত্তা পূর্বাভাস

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

  • SELECT
  • UPDATE
  • DELETE

ব্লক প্রিডিকেট স্পষ্টভাবে একটি ত্রুটি উত্থাপন করে এবং ব্যবহারকারীকে ডেটাতে নিম্নলিখিত ক্রিয়াকলাপগুলি ব্যবহার করা থেকে অবরুদ্ধ করে যা প্রিডিকেট ফাংশন লজিক লঙ্ঘন করে:

  • AFTER INSERT
  • AFTER UPDATE
  • BEFORE UPDATE
  • BEFORE DELETE

নিরাপত্তা নীতি

একটি নিরাপত্তা নীতি অবজেক্ট RLS গোষ্ঠীবদ্ধ করার জন্য তৈরি করা হয় যে সমস্ত নিরাপত্তা পূর্বাভাসগুলি predicate ফাংশন উল্লেখ করে।

কেস ব্যবহার করুন

এখানে RLS কিভাবে ব্যবহার করা যেতে পারে তার কিছু ডিজাইন উদাহরণ রয়েছে:

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

আরএলএস প্রয়োগ করুন

RLS কিভাবে প্রয়োগ করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল:

ধাপ 1:একটি ডাটাবেস RowFilter তৈরি করতে নিম্নলিখিত কোডটি চালান এবং দুইজন ব্যবহারকারীর সাথে পরীক্ষা করার জন্য:

CREATE SECURITY POLICY UserFilter
ADD FILTER PREDICATE dbo.rowLevelPredicate(userCode)
ON dbo.SalesFigures
WITH (STATE = ON);
GO

ধাপ 2:উদাহরণ সহ একটি টেবিল তৈরি করতে নিম্নলিখিত কোডটি চালান এবং নতুন ব্যবহারকারীদের SELECT বিশেষাধিকার প্রদান করুন:

CREATE TABLE dbo.SalesFigures (
[userCode] NVARCHAR(10),
[sales] MONEY)
GO
INSERT  INTO dbo.SalesFigures
VALUES ('userBrian',100), ('userJames',250), ('userBrian',350)
GO
GRANT SELECT ON dbo.SalesFigures TO userBrian
GRANT SELECT ON dbo.SalesFigures TO userJames
GO

ধাপ 3:একটি ফিল্টার প্রিডিকেট ফাংশন যোগ করতে নিম্নলিখিত কোডটি চালান:

CREATE FUNCTION dbo.rowLevelPredicate (@userCode as sysname)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS rowLevelPredicateResult
WHERE @userCode = USER_NAME();
GO

ধাপ 4:সারণিতে একটি ফিল্টার প্রিডিকেট যোগ করতে নিচের কোডটি চালানdbo.Sales Figures :

CREATE SECURITY POLICY UserFilter
ADD FILTER PREDICATE dbo.rowLevelPredicate(userCode)
ON dbo.SalesFigures
WITH (STATE = ON);
GO

ধাপ 5:ধাপ 2 এ যোগ করা ব্যবহারকারীর সাথে ফলাফল পরীক্ষা করতে নিম্নলিখিত কোডটি চালান:

EXECUTE AS USER = 'userBrian';
SELECT * FROM dbo.SalesFigures;
REVERT;
GO

এই কোড দুটি সারি প্রদান করে, যেমনটি নীচে দেখানো হয়েছে:

SQL সার্ভার 2016-এ সারি-স্তরের নিরাপত্তা (/article/uploadfiles/202207/202201701082) পি>

EXECUTE AS USER = 'userJames';
SELECT * FROM dbo.SalesFigures;
REVERT;
GO

এই কোডটি একটি সারি প্রদান করে, যেমনটি নীচে দেখানো হয়েছে:

SQL সার্ভার 2016-এ সারি-স্তরের নিরাপত্তা (/article/uploadfiles/202207/2022011082) পি>

অনুমতি

নিরাপত্তা নীতিগুলি তৈরি, পরিবর্তন বা বাদ দেওয়ার জন্য যেকোনও নিরাপত্তা নীতি পরিবর্তন করুন প্রয়োজন অনুমতি।

একটি নিরাপত্তা নীতি তৈরি বা বাদ দেওয়ার জন্য ALTER প্রয়োজন৷ স্কিমাতে অনুমতি।

অতিরিক্তভাবে, প্রতিটি পূর্বনির্ধারণের জন্য নিম্নলিখিত অনুমতিগুলির প্রয়োজন, যা যুক্ত করা হয়েছে:

  • নির্বাচন করুন এবং রেফারেন্স ফাংশনের অনুমতি যা predicate হিসাবে ব্যবহৃত হয়।
  • রেফারেন্স লক্ষ্য টেবিলে অনুমতি যা নীতির সাথে আবদ্ধ।
  • রেফারেন্স টার্গেট টেবিল থেকে প্রতিটি কলামে অনুমতি ব্যবহার করা হয় আর্গুমেন্ট।

নিরাপত্তা নীতি ডাটাবেসের মালিক (DBO) ব্যবহারকারী সহ সকল ব্যবহারকারীর জন্য প্রযোজ্য। DBO ব্যবহারকারীরা নিরাপত্তা নীতি পরিবর্তন বা বাদ দিতে পারেন। যাইহোক, নিরাপত্তা নীতিতে তাদের পরিবর্তনগুলি অডিট করা যেতে পারে। উচ্চ-সুবিধাপ্রাপ্ত ব্যবহারকারীদের ক্ষেত্রে যেমন sysadmin অথবা db_owner , ট্রাবলশুটর যাচাই করার জন্য আপনাকে সমস্ত সারি দেখতে হবে, তাই আপনাকে অনুমতি দিতে নিরাপত্তা নীতি লিখতে হবে।

যদি একটি নিরাপত্তা নীতি SCHEMABINDING = OFF দিয়ে তৈরি করা হয় , তারপর ব্যবহারকারীদের অবশ্যই SELECT থাকতে হবে অথবা EXECUTE predicate ফাংশন এবং কোনো অতিরিক্ত সারণি, ভিউ, বা ফাংশন predicate ফাংশনের মধ্যে ব্যবহার করা লক্ষ্য সারণীকে জিজ্ঞাসা করার জন্য অনুমতি। যদি SCHEMABINDING = ON দিয়ে একটি নিরাপত্তা নীতি তৈরি করা হয় , যা ডিফল্ট, তারপর এই অনুমতি চেকগুলি বাইপাস করা হয় যখন ব্যবহারকারীরা টার্গেট টেবিলকে জিজ্ঞাসা করে।

SQL সার্ভার 2016 RLS সংশোধন করা হচ্ছে

একটি নীতির জন্য SQL সার্ভার RLS নিষ্ক্রিয় করতে নিম্নলিখিত কর্ম সম্পাদন করুন:

  • নিরাপত্তা নীতি পরিবর্তন করুন ফিল্টার ব্যবহার করুন State = off সহ .

ফিল্টার এবং নিরাপত্তা নীতি বাদ দিতে নিম্নলিখিত ক্রিয়াগুলি সম্পাদন করুন:

  • নিরাপত্তা নীতি বাদ দিন ফিল্টার ব্যবহার করুন .
  • ড্রপ ফাংশন dbo.rowlevelPredicate .

সর্বোত্তম অনুশীলন

Microsoft এই সর্বোত্তম অনুশীলনের পরামর্শ দেয়:

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

আরএলএস-এ সীমাবদ্ধতা এবং সীমাবদ্ধতা

RLS-এ প্রযোজ্য কিছু সীমাবদ্ধতা নিম্নরূপ:

  • প্রেডিকেট ফাংশনটি অবশ্যই SCHEMABINDING দিয়ে তৈরি করতে হবে . যদি SCHEMABINDING ছাড়াই ফাংশন তৈরি করা হয় , এবং আপনি এটি একটি নিরাপত্তা নীতির সাথে আবদ্ধ করার চেষ্টা করেন, এটি একটি ত্রুটি ছুড়ে দেয়৷
  • আরএলএস প্রয়োগ করা হয় এমন একটি টেবিলে ইন্ডেক্সড ভিউ তৈরি করা যাবে না।
  • ইন-মেমরি টেবিল RLS-এর জন্য সমর্থিত নয়।
  • পূর্ণ-পাঠ্য সূচী সমর্থিত নয়।

উপসংহার

SQL সার্ভার 2016-এ RLS বৈশিষ্ট্য সহ, আপনি অ্যাপ্লিকেশন স্তরে পরিবর্তন না করেই ডেটাবেস স্তরে রেকর্ডের জন্য নিরাপত্তা প্রদান করতে পারেন। আপনি আপনার ডাটাবেসে ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (DML) কোড পরিবর্তন করার প্রয়োজন ছাড়াই আপনার বিদ্যমান কোডের পাশাপাশি একটি পূর্বনির্ধারিত ফাংশন এবং নতুন নিরাপত্তা নীতি বৈশিষ্ট্য ব্যবহার করে RLS প্রয়োগ করতে পারেন।

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাবটি ব্যবহার করুন৷

বিশেষজ্ঞ প্রশাসন, ব্যবস্থাপনা এবং কনফিগারেশনের মাধ্যমে আপনার পরিবেশকে অপ্টিমাইজ করুন

Rackspace এর অ্যাপ্লিকেশন পরিষেবা(RAS) বিশেষজ্ঞরা অ্যাপ্লিকেশনগুলির বিস্তৃত পোর্টফোলিও জুড়ে নিম্নলিখিত পেশাদার এবং পরিচালিত পরিষেবাগুলি প্রদান করে:

  • ইকমার্স এবং ডিজিটাল অভিজ্ঞতার প্ল্যাটফর্ম
  • এন্টারপ্রাইজ রিসোর্স প্ল্যানিং (ERP)
  • ব্যবসায়িক বুদ্ধিমত্তা
  • সেলসফোর্স কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (CRM)
  • ডাটাবেস
  • ইমেল হোস্টিং এবং উৎপাদনশীলতা

আমরা সরবরাহ করি:

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

শুরু করতে এখনই চ্যাট করুন।


  1. Microsoft SQL সার্ভার ক্যোয়ারী স্টোর

  2. স্ট্রেচ ডেটাবেস—একটি বোঝাপড়া পান

  3. ইউনিফাইড ডেটা প্ল্যাটফর্ম:SQL সার্ভার 2019

  4. এমএস অ্যাক্সেস থেকে SQL সার্ভার ডেটাবেসে ডেটা স্থানান্তর করুন