আপনি কীভাবে একটি একক সঞ্চিত পদ্ধতিতে অনুমতি কার্যকর করতে মঞ্জুর করেন?


40

সাধারণত যখন আমি একটি সঞ্চিত প্রক্রিয়া তৈরি করি তখন নিম্নলিখিতটি সাজানোর টেম্পলেট হিসাবে ব্যবহার করি

Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..> 
as begin

 <procedure>

end

আমি যখন থাকি তখন কেবল সেই সঞ্চিত পদ্ধতিতে সম্পাদন করার অনুমতি দেওয়ার অন্তর্ভুক্ত করার কোনও উপায় আছে?
উদাহরণস্বরূপ যেমন ...

Grant execute [User_Execute] 

... তবে কেবল এই সঞ্চিত পদ্ধতির জন্য?

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

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

Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..> 
as begin

<procedure>

end
GO
GRANT EXECUTE ON <procedurename> to <username>
GO

সম্পাদিত পাঠ্যে প্রদত্ত কোডটি বৈধ এবং এই প্রশ্নের সঠিক উত্তর।
ninty9not

উত্তর:



10

কাটা টেবিল কাটা স্টোরেজ পদ্ধতির মতো অবজেক্টগুলিতে অনুমতি নির্ধারণের মাধ্যমে এটি সম্পন্ন করা যেতে পারে:

GRANT EXECUTE ON <schema>.<object> to <user>;

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

সঞ্চিত পদ্ধতিতে ঠিক নীচে কোডে যুক্ত করুন:

CREATE PROCEDURE dbo.MyProcedure WITH EXECUTE AS OWNER

এই ক্ষেত্রে আপনি কল করা মডিউলটির মালিকের ছদ্মবেশ তৈরি করছেন। আপনি নিজেই নিজের ছদ্মবেশ তৈরি করতে পারেন, বা ব্যবহারকারী মডিউলটি তৈরি বা পরিবর্তন করছেন বা ... নকল কল, যা বর্তমান ব্যবহারকারীর অনুমতি গ্রহণের জন্য মডিউলকে সক্ষম করবে, বা ... ছদ্মবেশী মালিক, যা অনুমতি নেবে প্রক্রিয়াটির মালিককে বলা হচ্ছে ... ... ছদ্মবেশী 'ব্যবহারকারীর নাম', যা একটি নির্দিষ্ট ব্যবহারকারীর নকল করবে ... বা 'লগইন_নাম' দিয়ে একটি নির্দিষ্ট লগইনের ছদ্মবেশ তৈরি করবে।

EXECUTEবেশিরভাগ সময়, আপনাকে কেবল সঞ্চিত প্রোকগুলিতে অধিকার প্রদান করতে হবে এবং তারপরে সংরক্ষণ করা সমস্ত প্রজেক্টের মধ্যে রেফারেন্সযুক্ত সমস্ত বস্তুর অধিকার দেওয়া হবে।

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

এই উদাহরণটি এই সমস্তটি পরিষ্কার করতে সহায়তা করতে পারে:

একটি ডাটাবেসে জনসাধারণের অ্যাক্সেস সহ NoPrivUser নামে একটি ব্যবহারকারী তৈরি করুন (যেমন dbadb):

USE [master];
GO 
CREATE LOGIN [NoPrivUser] WITH PASSWORD=N'ABC5%', DEFAULT_DATABASE=[dbadb], 
  CHECK_EXPIRATION=ON, CHECK_POLICY=ON;
GO 
USE [DBAdb];
GO 
CREATE USER [NoPrivUser] FOR LOGIN [NoPrivUser];
GO

দ্রষ্টব্য: এই প্রক্রিয়াটির স্রষ্টা বা তার মালিকানা লক্ষ্যবস্তু ডাটাবেসের মধ্যে টেবিলের অধিকার তৈরি করতে প্রয়োজনীয় হবে।

use DBAdb 
go 
CREATE PROCEDURE dbo.MyProcedure 
WITH EXECUTE AS OWNER 

truncate table MyTable

GO
GRANT EXEC ON dbo.MyProcedure TO NoPrivUser; 
GO
-- Now log into your database server as NoPrivUser and run the following.

সঙ্গে EXECUTE ASদফা সঞ্চিত পদ্ধতি বস্তুর মালিক প্রেক্ষাপটে অধীনে চালানো হয়। এই কোডটি সাফল্যের সাথে তৈরি করে dbo.MyTableএবং সারিগুলি সফলভাবে .োকানো হয়েছে। এই উদাহরণে, ব্যবহারকারীর NoPrivUserটেবিলটি সংশোধন করার, বা এই টেবিলের কোনও ডেটা পড়তে বা সংশোধন করার নিখরচায় অনুমোদিত কোনও অধিকার নেই।

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

এই অধিকারগুলি স্থায়ীভাবে বরাদ্দ না করে উন্নত সুরক্ষা অধিকারগুলির প্রয়োজন এমন কাজ সম্পাদন করতে পারে এমন সঞ্চিত পদ্ধতি তৈরির এই পদ্ধতিটি খুব কার্যকর।


4
এটি গতকাল আপনি এসওতে পোস্ট করেছেন একই উত্তর , যা আমাকে পঠনযোগ্যতার জন্য ফর্ম্যাটও করতে হয়েছিল।
অ্যারন বারট্র্যান্ড

5

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

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

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


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