কীভাবে কোনও এসকিউএল সার্ভার ডাটাবেস থেকে সুরক্ষা সম্পর্কিত সমস্ত তথ্য রফতানি করতে হয়


11

আপনি যেহেতু সম্ভবত জানেন, এসকিউএল সার্ভার ডাটাবেসের প্রতিটি উপাদানগুলির জন্য ঘোষিত সমস্ত সুরক্ষা সম্পর্কিত বিবৃতি রফতানি করার জন্য একটি বাক্সের বাইরে সমাধান সরবরাহ করে না (উভয় ডাটাবেস স্তরে এবং বস্তু স্তরেও)

আমি এই তথ্যটি নিয়ে আসার দক্ষতার কথা বলছি

  • সমস্ত ব্যবহারকারী
  • সমস্ত ব্যবহারকারী সংজ্ঞায়িত ভূমিকা
  • ডাটাবেস স্তরে সমস্ত অনুমতি (যেমন গ্রান্ট ক্রিয়েট ফাংশন)
  • অবজেক্ট স্তরে সমস্ত অনুমতি (যেমন অনুদানের উপর অনুদান নির্বাচন করুন :: এক্সএক্সএক্সএক্স)

আপনি ভাববেন যে এসকিউএল সার্ভারের অবশ্যই এই জাতীয় কিছু থাকতে হবে তবে এসকিউএল সার্ভার এক্সপোর্ট উইজার্ড বা বিভিন্ন স্ক্রিপ্টগুলি সঠিকভাবে বস্তুগুলিকে ক্লিক করার ফলে উত্পন্ন হওয়া এই তথ্যটি ক্যাপচার করে না।

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

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

কারও দ্বারা সরবরাহ করা কোনও সরঞ্জাম নেই (হয় এসকিউএল সার্ভার পণ্যের অংশ হিসাবে বা কোনও তৃতীয় পক্ষের সরঞ্জাম হিসাবে) যা আপনাকে নির্ভরযোগ্যভাবে এই তথ্য সরবরাহ করতে পারে?

বা কমপক্ষে, কোনও সম্প্রদায় সমর্থিত স্ক্রিপ্ট কি বেশিরভাগ লোকেরা "কাজটি করবে" তাতে সম্মত হবে?

ধন্যবাদ!

উত্তর:


6

ইডেরা এসকিউএল অনুমতি এক্সট্রাক্টরটি আপনি যে পণ্যটি সন্ধান করছেন বলে মনে হচ্ছে।

এটি স্ক্রিপ্ট সার্ভার এবং বস্তুর অনুমতিগুলি করতে পারে এবং এটি বিনামূল্যে। এসকিউএল সিকিওর নামে একটি বাণিজ্যিক সংস্করণ রয়েছে যার আরও বৈশিষ্ট্য রয়েছে।

দুটি সংস্করণের মধ্যে বৈশিষ্ট্যটির তুলনাটি এখানে পাওয়া যাবে


ধন্যবাদ @ স্প্যাগেটিডিবা আমি আপনার প্রতিক্রিয়া চিহ্নিত করব এবং আপনার উত্তরটি গ্রহণ করব কারণ আমার পক্ষে একক সরঞ্জাম ব্যবহার করে নিষ্কাশন বাস্তবায়ন করা সহজতর যা সম্পূর্ণরূপে অনুমোদিত নয় এমন স্ক্রিপ্টগুলির একটি তালিকা সংকলন করে।
মার্টিন সুরস্কি

8

আমি দুঃখিত যে গতকাল থেকে আপনার কোনও প্রতিক্রিয়া নেই; আপনার পক্ষে কমপক্ষে একটি সূচনা পয়েন্ট এখানে।

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

আমি আসলে এগুলির কোনও ব্যবহার করি নি, তবে সেগুলি কোনও নির্দিষ্ট ক্রমে বিন্দুগুলির সূচনা পয়েন্ট।

সমস্ত ডাটাবেসে সমস্ত অনুমতি তালিকাবদ্ধ করুন

পাওয়ারশেল এবং টি-এসকিউএল সহ অটোমেটেড অনুমতিগুলি অডিটিং: পার্ট 1

সমস্ত ডাটাবেসের মাধ্যমে অনুমতি স্ক্রিপ্টিং

স্ক্রিপ্ট ডিবি স্তর অনুমতিসমূহ v2.1

ব্যবহারকারীর অনুমতি স্ক্রিপ্ট আউট স্টোরেজ পদ্ধতি

সুরক্ষা প্রশ্নাবলী: ডাটাবেস-স্তর

সুরক্ষা প্রশ্নাবলী: সার্ভার-স্তর


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

1

https://gallery.technet.microsoft.com/Extract-Database-dfa53d5a/

নীচের কোডটি ডাউনলোড করতে সেই লিঙ্কটি উল্লেখ করুন

set nocount off

IF OBJECT_ID(N'tempdb..##temp1') IS NOT NULL
     DROP TABLE ##temp1

create table ##temp1(query varchar(1000))

insert into ##temp1 
select 'use '+db_name() +';'

insert into ##temp1 
select 'go'

/*creating database roles*/
insert into ##temp1
                    select 'if DATABASE_PRINCIPAL_ID('''+name+''')  is null 
                    exec sp_addrole '''+name+''''  from sysusers
where issqlrole = 1 and (sid is not null and sid <> 0x0)

/*creating application roles*/
insert into ##temp1
                    select 'if DATABASE_PRINCIPAL_ID('+char(39)+name+char(39)+')
                    is null CREATE APPLICATION ROLE ['+name+'] WITH DEFAULT_SCHEMA = ['+
                    default_schema_name+'], Password='+char(39)+'Pass$w0rd123'+char(39)+' ;'
 from sys.database_principals
where type_desc='APPLICATION_ROLE'

insert into ##temp1 
                     select  
                                case  
                                          when state_desc='GRANT_WITH_GRANT_OPTION' 
                                                       then
                                                                substring (state_desc,0,6)+' '+permission_name+' to '+'['+USER_NAME(grantee_principal_id)+']'+' WITH GRANT OPTION ;'

                                                         else 
                                                                  state_desc+' '+permission_name+' to '+'['+USER_NAME(grantee_principal_id)+']'+' ;'
                    END
from sys.database_permissions 
where class=0 and USER_NAME(grantee_principal_id) not in ('dbo','guest','sys','information_schema')

insert into ##temp1 
                    select 
                               case 
                                         when state_desc='GRANT_WITH_GRANT_OPTION' 
                                                   then
                                                             substring (state_desc,0,6)+' '+permission_name+' on '+OBJECT_SCHEMA_NAME(major_id)+'.['+OBJECT_NAME(major_id)
                                                             +'] to '+'['+USER_NAME(grantee_principal_id)+']'+' with grant option ;'
                                                     else 
                                                              state_desc+' '+permission_name+' on '+OBJECT_SCHEMA_NAME(major_id)+'.['+OBJECT_NAME(major_id)
                                                              +'] to '+'['+USER_NAME(grantee_principal_id)+']'+' ;'
                                  end
from sys.database_permissions where class=1 and USER_NAME(grantee_principal_id) not in ('public');


 insert into ##temp1 
                      select 
                                 case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION' 
                                                     then
                                                              substring (state_desc,0,6)+' '+permission_name+' ON schema::['+sa.name+
                                                               '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                                       else
                                                               state_desc+' '+permission_name+' ON schema::['+sa.name+
                                                               '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                       COLLATE LATIN1_General_CI_AS  
                                      end
from sys.database_permissions dp inner join sys.schemas sa on
 sa.schema_id = dp.major_id where dp.class=3

 insert into ##temp1 
                     select 
                                 case 
                                            when state_desc='GRANT_WITH_GRANT_OPTION'
                                             then
                                                    substring (state_desc,0,6)+' '+permission_name+' ON APPLICATION  ROLE::['+sa.name+
                                                     '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                             else
                                                      state_desc+' '+permission_name+' ON  APPLICATION ROLE::['+sa.name+
                                                      '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                      COLLATE LATIN1_General_CI_AS  
                         end
from sys.database_permissions dp inner join sys.database_principals  sa on
 sa.principal_id = dp.major_id where dp.class=4 and sa.type='A'

 insert into ##temp1 
                      select 
                                 case 
                                          when state_desc='GRANT_WITH_GRANT_OPTION' 
                                           then
                                                  substring (state_desc,0,6)+' '+permission_name+' ON   ROLE::['+sa.name+
                                                  '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                           else
                                                   state_desc+' '+permission_name+' ON   ROLE::['+sa.name+
                                                    '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                     COLLATE LATIN1_General_CI_AS  
                                           end
 from sys.database_permissions dp inner join
sys.database_principals  sa on sa.principal_id = dp.major_id 
 where dp.class=4 and sa.type='R'

 insert into ##temp1 
                      select 
                                  case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION' 
                                                       then
                                                               substring (state_desc,0,6)+' '+permission_name+' ON ASSEMBLY::['+sa.name+
                                                                '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                                        else
                                                                state_desc+' '+permission_name+' ON ASSEMBLY::['+sa.name+
                                                                 '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                                 COLLATE LATIN1_General_CI_AS  
                                       end
 from sys.database_permissions dp inner join sys.assemblies sa on
 sa.assembly_id = dp.major_id 
 where dp.class=5

 insert into ##temp1
                     select 
                                 case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION' 
                                            then
                                                    substring (state_desc,0,6)+'  '+permission_name+' ON type::['
                                                    +SCHEMA_NAME(schema_id)+'].['+sa.name+
                                                    '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                            else
                                                    state_desc+' '+permission_name+' ON type::['
                                                    +SCHEMA_NAME(schema_id)+'].['+sa.name+
                                                     '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                     COLLATE LATIN1_General_CI_AS  
                                              end
 from sys.database_permissions dp inner join sys.types sa on
 sa.user_type_id = dp.major_id 
 where dp.class=6


 insert into ##temp1
                      select 
                                 case 
                                          when state_desc='GRANT_WITH_GRANT_OPTION' 
                                           then
                                                     substring (state_desc,0,6)+'  '+permission_name+' ON  XML SCHEMA COLLECTION::['+
                                                     SCHEMA_NAME(SCHEMA_ID)+'].['+sa.name+'] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                            else
                                                     state_desc+' '+permission_name+' ON  XML SCHEMA COLLECTION::['+
                                                     SCHEMA_NAME(SCHEMA_ID)+'].['+sa.name+'] to ['+user_name(dp.grantee_principal_id)+'];'
                                                     COLLATE LATIN1_General_CI_AS  
                                   end
 from sys.database_permissions dp inner join sys.xml_schema_collections sa on
 sa.xml_collection_id = dp.major_id 
 where dp.class=10



insert into ##temp1
                    select
                               case 
                                         when state_desc='GRANT_WITH_GRANT_OPTION' 
                                          then
                                                   substring (state_desc,0,6)+'  '+permission_name+' ON message type::['+sa.name+
                                                    '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                           else
                                                    state_desc+' '+permission_name+' ON message type::['+sa.name+
                                                    '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                     COLLATE LATIN1_General_CI_AS  
                                             end
 from sys.database_permissions dp inner join sys.service_message_types sa on
 sa.message_type_id = dp.major_id 
 where dp.class=15


 insert into ##temp1
                      select 
                                  case 
                                            when state_desc='GRANT_WITH_GRANT_OPTION' 
                                              then
                                                       substring (state_desc,0,6)+'  '+permission_name+' ON contract::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                                else
                                                         state_desc+' '+permission_name+' ON contract::['+sa.name+
                                                         '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                         COLLATE LATIN1_General_CI_AS  
                                   end
 from sys.database_permissions dp inner join sys.service_contracts sa on
 sa.service_contract_id = dp.major_id 
 where dp.class=16



  insert into ##temp1
                      select 
                                 case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION' 
                                            then
                                                      substring (state_desc,0,6)+'  '+permission_name+' ON SERVICE::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                              else
                                                       state_desc+'  '+permission_name+' ON SERVICE::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                        COLLATE LATIN1_General_CI_AS  
                                    end
 from sys.database_permissions dp inner join sys.services sa on
 sa.service_id = dp.major_id 
 where dp.class=17


 insert into ##temp1 
                      select 
                                   case 
                                              when state_desc='GRANT_WITH_GRANT_OPTION'
                                               then
                                                          substring (state_desc,0,6)+'  '+permission_name+' ON REMOTE SERVICE BINDING::['+sa.name+
                                                          '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                                 else
                                                          state_desc+' '+permission_name+' ON REMOTE SERVICE BINDING::['+sa.name+
                                                           '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                          COLLATE LATIN1_General_CI_AS  
                                      end
 from sys.database_permissions dp inner join sys.remote_service_bindings sa on
 sa.remote_service_binding_id = dp.major_id 
 where dp.class=18

 insert into ##temp1
                      select
                                  case 
                                            when state_desc='GRANT_WITH_GRANT_OPTION'
                                              then
                                                        substring (state_desc,0,6)+'  '+permission_name+' ON route::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                                else
                                                          state_desc+' '+permission_name+' ON route::['+sa.name+
                                                          '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                         COLLATE LATIN1_General_CI_AS  
                                      end
 from sys.database_permissions dp inner join sys.routes sa on
 sa.route_id = dp.major_id 
 where dp.class=19

 insert into ##temp1 
                      select 
                                 case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION' 
                                            then
                                                     substring (state_desc,0,6)+'  '+permission_name+' ON FULLTEXT CATALOG::['+sa.name+
                                                      '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                             else
                                                       state_desc+' '+permission_name+' ON FULLTEXT CATALOG::['+sa.name+
                                                       '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                        COLLATE LATIN1_General_CI_AS  
                                       end
 from sys.database_permissions dp inner join sys.fulltext_catalogs sa on
 sa.fulltext_catalog_id = dp.major_id 
 where dp.class=23

  insert into ##temp1 
                      select 
                                 case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION'
                                            then
                                                        substring (state_desc,0,6)+'  '+permission_name+' ON SYMMETRIC KEY::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                             else
                                                        state_desc+' '+permission_name+' ON SYMMETRIC KEY::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                        COLLATE LATIN1_General_CI_AS  
                                             end
 from sys.database_permissions dp inner join sys.symmetric_keys sa on
 sa.symmetric_key_id = dp.major_id 
 where dp.class=24

 insert into ##temp1 
                      select 
                                  case 
                                           when state_desc='GRANT_WITH_GRANT_OPTION' 
                                             then
                                                       substring (state_desc,0,6)+'  '+permission_name+' ON certificate::['+sa.name+
                                                        '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                               else
                                                          state_desc+' '+permission_name+' ON certificate::['+sa.name+
                                                          '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                           COLLATE LATIN1_General_CI_AS  
                                   end
 from sys.database_permissions dp inner join sys.certificates sa on
 sa.certificate_id = dp.major_id 
 where dp.class=25


 insert into ##temp1 
                     select 
                                 case 
                                          when state_desc='GRANT_WITH_GRANT_OPTION' 
                                          then
                                                     substring (state_desc,0,6)+'  '+permission_name+' ON ASYMMETRIC KEY::['+sa.name+
                                                     '] to ['+user_name(dp.grantee_principal_id)+'] with grant option ;'
                                             else
                                                      state_desc+' '+permission_name+' ON ASYMMETRIC KEY::['+sa.name+
                                                       '] to ['+user_name(dp.grantee_principal_id)+'] ;'
                                                       COLLATE LATIN1_General_CI_AS  
                        end
 from sys.database_permissions dp inner join sys.asymmetric_keys sa on
 sa.asymmetric_key_id = dp.major_id 
 where dp.class=26

insert into ##temp1 
                     select  'exec sp_addrolemember ''' +p.NAME+''','+'['+m.NAME+']'+' ;'
FROM sys.database_role_members rm
JOIN sys.database_principals p
ON rm.role_principal_id = p.principal_id
JOIN sys.database_principals m
ON rm.member_principal_id = m.principal_id
where m.name not like 'dbo';





select *  from ##temp1  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.