db_ddladmin বনাম db_owner
আমি যা পরীক্ষা করে পড়েছি এবং যা থেকে পড়তে পারি তার থেকে আমি কী বলতে পারি, বেশিরভাগ অংশে আপনার তালিকাটি db_ddladmin
আপনাকে অনুমতি দেয় না তার বাইরে বেশিরভাগ অংশের জন্য সঠিক দেখাচ্ছে CREATE SCHEMA
। আমি নিশ্চিত করেছি যে আপনি তালিকাভুক্ত অন্যান্য সুরক্ষা অনুমতিগুলি সত্যই অস্বীকৃত ছিল।
কেবলমাত্র DDLADMIN দিয়ে অস্বীকার করা হয়েছে:
[ALTER ANY USER]
[BACKUP DATABASE]
, [BACKUP LOG]
,[CHECKPOINT]
[ALTER ANY APPLICATION ROLE]
, [ALTER ANY ROLE]
[DROP DATABASE]
লক্ষ্য করে যে। । ।
db_datareader
SELECT
সমস্ত টেবিল অ্যাক্সেস অনুমতি দেবে
db_datarwriter
অনুমতি দেয় INSERT
, UPDATE
এবং DELETE
সমস্ত টেবিল অ্যাক্সেস
db_executor
EXECUTE
সমস্ত এক্সিকিউটেবল অবজেক্টে অ্যাক্সেসের অনুমতি দেবে
যোগসূত্র হিসাবে, db_ddladmin ভূমিকা অনুমতি থাকার অর্থ হতে পারে। । ।
দ্রষ্টব্য: ২০০৫ - ২০১৪ সাল থেকে আপনার কাছে এসকিউএল সার্ভারের অনেকগুলি ভিন্ন সংস্করণ রয়েছে, তাই কে কেঙ্কস ইত্যাদিতে আস্তে আস্তে আস্তে আস্তে আস্তে আস্তে আসে সে দেখার জন্য প্রথমে ব্যবহারকারীদের একটি ছোট সেট এটি পরীক্ষা করা ভাল be
এই ভূমিকার সাথে তাদের যে বিষয়গুলির মালিকানা রয়েছে সেগুলি ডিবিওর মালিকানাধীন হবে না তাই এই স্তরের কিছু নিয়ে যদি কখনও সমস্যা হয় তবে আপনাকে মালিকানা দেওয়ার সমস্যাগুলি মোকাবেলা করতে হতে পারে। আমি 100% নিশ্চিত নই যে এটি একটি সমস্যা হবে তবে এটি কেবল ক্ষেত্রে উল্লেখ করার মতো।
সূত্র: মালিকানা চেইন
এই ভূমিকার সাথে (এসকিউএল সার্ভারের সংস্করণ অনুসারে পৃথক হতে পারে) তারা বর্তমান ডিবিতে সংজ্ঞায়িত এসকিউএল সুরক্ষা নীতিগুলি এখনও অবধি তাদের নিজস্ব অবজেক্টগুলিতে যুক্ত করতে সক্ষম হতে পারে, কেবল সমস্ত বস্তু নয় (যাদের নিজস্ব নয়) বা একটি নতুন সার্ভার যুক্ত করতে পারে ডিবি স্তরে স্তরের সংজ্ঞা দেওয়া হয়েছে le
অতিরিক্তভাবে, ডিবিও রোলের অনুমতি না থাকার অর্থ হতে পারে। । ।
দ্রষ্টব্য: ২০০৫ - ২০১৪ সাল থেকে আপনার কাছে এসকিউএল সার্ভারের অনেকগুলি ভিন্ন সংস্করণ রয়েছে, তাই কে কেঙ্কস ইত্যাদিতে আস্তে আস্তে আস্তে আস্তে আস্তে আস্তে আসে সে দেখার জন্য প্রথমে ব্যবহারকারীদের একটি ছোট সেট এটি পরীক্ষা করা ভাল be
অন্যান্য বিবেচ্য বিষয়
যেহেতু আপনি বলেছেন যে এটি কেস-কেস-কেস ভিত্তিতে পর্যালোচনা করা হচ্ছে
বর্তমানে সীমাবদ্ধ থাকার অনুমতিগুলির মধ্যে একটি হ'ল ডিবি_মালার অনুমতি।
এই অনুমতিটি কেস-কেস-কেস ভিত্তিতে পর্যালোচনা করা হচ্ছে, তবে একটি সাধারণ পরিবর্তন হ'ল নিম্নলিখিত সাথে db_owner অনুমতিগুলি প্রতিস্থাপন করা:
- db_datareader
- db_datawriter
- db_ddladmin
- db_executor
আপনি কি আরও "সমস্ত বস্তু" ডিবি-স্তরের অ্যাক্সেসের জন্য অতিরিক্ত কাস্টম রোল তৈরির কথা বিবেচনা করেছেন যা প্রতিটি ব্যক্তির db_ddladmin
ভূমিকা দেওয়ার পরিবর্তে তাদের প্রয়োজনীয় প্রয়োজন যা সম্ভবত তাদের ডিবি স্তরের অবজেক্টগুলির প্রয়োজনের তুলনায় সম্ভবত আরও বেশি দেয়।
আমি তাদের কাজটি করার জন্য সাধারণত যা প্রয়োজন ঠিক তা দিয়ে থাকি এবং কোনও ডিবিতে সমস্ত ডিবিতে ডিবি স্তরের অবজেক্ট অ্যাক্সেসের জন্য যদি "স্বাভাবিক" বা "স্ট্যান্ডার্ড" প্রয়োজন হয় তবে আমি একটি কাস্টম ডিবি রোল্ট তৈরি করি db_executor
তবে আমার নীচের উদাহরণটি দেখুন। আপনি যদি তাদের সুরক্ষার জন্য আপনার ডিবিগুলিতে স্পষ্টভাবে অবজেক্ট স্তর না পেয়ে থাকেন তবে আপনি নির্দিষ্ট ডিবিতে সমস্ত ডিবি অবজেক্টের জন্য তাদের সত্যই কী প্রয়োজন তা আপনি এইভাবে লোককে দিতে পারেন।
----Custom Database Roles
/* CREATE A NEW ROLE -- Execute to all stored procs including newly created ones*/
-- Database specific
CREATE ROLE db_All_StoredProc_Execute
GRANT EXECUTE TO db_All_StoredProc_Execute
/* CREATE A NEW ROLE -- Alter to all stored procs including newly created ones*/
-- Database specific
CREATE ROLE db_All_StoredProc_Alter
GRANT ALTER ANY SCHEMA TO db_All_StoredProc_Alter
/* CREATE A NEW ROLE -- View Definition to all stored procs including newly created ones*/
-- Database specific
CREATE ROLE db_All_StoredProc_View
GRANT VIEW DEFINITION TO db_All_StoredProc_View
/* CREATE A NEW ROLE - Any schema alter and create procedure permissions */
-- Database specific
CREATE ROLE db_All_CreateProc_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateProc_AlterSchema
GRANT CREATE PROCEDURE TO db_All_CreateProc_AlterSchema
GO
/* CREATE A NEW ROLE - Any schema alter and create table permissions */
-- Database specific
CREATE ROLE db_All_CreateTable_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateTable_AlterSchema
GRANT CREATE TABLE TO db_All_CreateTable_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create function permissions */
-- Database specific
CREATE ROLE db_All_CreateFunction_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateFunction_AlterSchema
GRANT CREATE FUNCTION TO db_All_CreateFunction_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create aggregate permissions */
-- Database specific
CREATE ROLE db_All_CreateAggregate_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateAggregate_AlterSchema
GRANT CREATE AGGREGATE TO db_All_CreateAggregate_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create view permissions */
-- Database specific
CREATE ROLE db_All_CreateView_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateView_AlterSchema
GRANT CREATE VIEW TO db_All_CreateView_AlterSchema
/* CREATE A NEW ROLE - Any schema alter and create schema permissions */
-- Database specific
CREATE ROLE db_All_CreateSchema_AlterSchema
GRANT ALTER ANY SCHEMA TO db_All_CreateSchema_AlterSchema
GRANT CREATE SCHEMA TO db_All_CreateSchema_AlterSchema
আমি এমন একটি ডিবি_ডিডিএলডিডমিন_সংশ্লিষ্ট ভূমিকাটিও ভাগ করে নিতে চেয়েছিলাম যা আপনি স্পষ্ট DENY
করে অন্যটি তৈরি করার বিষয়ে বিবেচনা করতে চাইতে পারেন db_ddladmin
যাতে কোন অ্যাক্সেস দেয় তা সীমাবদ্ধ করার জন্য আপনি কমপক্ষে এটি ডিবিগুলিতে তৈরি করতে পারেন যেখানে আপনি এই ভূমিকাটি প্রদান করেন এবং DENY
প্রকৃত বস্তুর ধরণের জন্য স্পষ্টত সেট করতে পারেন , ইত্যাদি আপনি তাদের অ্যাক্সেস রাখতে চান না।
উদাহরণস্বরূপ, যদি আপনি জানেন তারা স্পষ্টভাবে সঞ্চিত পদ্ধতি এবং ফাংশন তৈরি হও, আপনি বাদ যাবে DENY CREATE FUNCTION
, DENY CREATE PROCEDURE
, DENY ALTER ANY SCHEMA
।
---Create ddladmin restriction custom DB role
DENY ALTER ANY ASSEMBLY TO db_DDLAdmin_Restriction
DENY ALTER ANY ASYMMETRIC KEY TO db_DDLAdmin_Restriction
DENY ALTER ANY CERTIFICATE TO db_DDLAdmin_Restriction
DENY ALTER ANY CONTRACT TO db_DDLAdmin_Restriction
DENY ALTER ANY DATABASE DDL TRIGGER TO db_DDLAdmin_Restriction
DENY ALTER ANY DATABASE EVENT NOTIFICATION TO db_DDLAdmin_Restriction
DENY ALTER ANY DATASPACE TO db_DDLAdmin_Restriction
DENY ALTER ANY FULLTEXT CATALOG TO db_DDLAdmin_Restriction
DENY ALTER ANY MESSAGE TYPE TO db_DDLAdmin_Restriction
DENY ALTER ANY REMOTE SERVICE BINDING TO db_DDLAdmin_Restriction
DENY ALTER ANY ROUTE TO db_DDLAdmin_Restriction
DENY ALTER ANY SCHEMA TO db_DDLAdmin_Restriction
DENY ALTER ANY SERVICE TO db_DDLAdmin_Restriction
DENY ALTER ANY SYMMETRIC KEY TO db_DDLAdmin_Restriction
DENY CHECKPOINT TO db_DDLAdmin_Restriction
DENY CREATE AGGREGATE TO db_DDLAdmin_Restriction
DENY CREATE DEFAULT TO db_DDLAdmin_Restriction
DENY CREATE FUNCTION TO db_DDLAdmin_Restriction
DENY CREATE PROCEDURE TO db_DDLAdmin_Restriction
DENY CREATE QUEUE TO db_DDLAdmin_Restriction
DENY CREATE RULE TO db_DDLAdmin_Restriction
DENY CREATE SYNONYM TO db_DDLAdmin_Restriction
DENY CREATE TABLE TO db_DDLAdmin_Restriction
DENY CREATE TYPE TO db_DDLAdmin_Restriction
DENY CREATE VIEW TO db_DDLAdmin_Restriction
DENY CREATE XML SCHEMA COLLECTION TO db_DDLAdmin_Restriction
DENY REFERENCES TO db_DDLAdmin_Restriction
GO