Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

sql सर्वर 2012 में भरोसेमंद =चालू करने के सुरक्षा जोखिम

TRUSTWORTHY डेटाबेस की संपत्ति (जब ON पर सेट किया जाता है ) अनिवार्य रूप से SQL सर्वर को घोषित करता है कि उस डेटाबेस में निहित कोड, और एक प्रतिरूपित संदर्भ में निष्पादित होने पर, उस प्रतिरूपित सुरक्षा संदर्भ को बनाए रखते हुए उस डेटाबेस के बाहर पहुंचने की अनुमति दी जानी चाहिए। यह सभी . के लिए भी अनुमति देता है उस डेटाबेस में SQLCLR असेंबलियों को EXTERNAL_ACCESS पर सेट किया जाना है और UNSAFE , वह कोड सर्वर के बाहर पहुंचता है या नहीं (अर्थ के बाहर:नेटवर्क एक्सेस, फाइल सिस्टम एक्सेस, रजिस्ट्री एक्सेस, एनवायरनमेंट एक्सेस, आदि)।

यह इसके लिए अनुमति देने का एक सामान्य साधन है क्योंकि यह डेटाबेस के भीतर सभी कोड को कवर करता है। मॉड्यूल पर हस्ताक्षर करने के लिए प्रमाणपत्र और/या असममित कुंजियों का उपयोग करना--प्रोसेस और/या असेंबली-- किस कोड में क्या अनुमतियां हैं, इस पर अधिक बारीक नियंत्रण की अनुमति देता है।

डेटाबेस को TRUSTWORTHY . पर सेट करना इस डेटाबेस में शुरू होने वाली किसी भी प्रक्रिया को सर्वर-स्तर तक और/या अन्य डेटाबेस तक पहुंचने की अनुमति देता है। आम तौर पर एक प्रक्रिया को उस डेटाबेस तक सीमित/संगरोध किया जाता है जहां से यह शुरू हुआ था। यदि डेटाबेस "sa" लॉगिन के स्वामित्व में है, तो उस डेटाबेस में शुरू की गई और "dbo" के रूप में चलने वाली किसी भी प्रक्रिया में प्रभावी रूप से "sa" विशेषाधिकार होंगे (yikes!)।

यहां वर्णन करने की कोशिश करने के बजाय, प्रतिरूपण के बारे में बारीकियों को पूरी तरह से संप्रेषित करने के लिए आवश्यक विवरण की मात्रा में, उक्त प्रतिरूपण का विस्तार करना, मॉड्यूल पर हस्ताक्षर करना, आदि, मैं इस विषय पर निम्नलिखित संसाधनों का उपयोग करने की सलाह देता हूं:

आपको अपने डेटाबेस को TRUSTWORTHY . पर सेट करने से बचना चाहिए जितना संभव। यदि आपके पास वास्तव में मल्टीथ्रेडिंग / एसिंक्स कॉल्स होनी चाहिए और यदि आपके पास स्रोत कोड है और असेंबली को संकलित कर रहे हैं, तो मैं SET TRUSTWORTHY ON का उपयोग करने के लिए एक कारण के बारे में नहीं सोच सकता। विकल्प। इसके बजाय, आपको असेंबली पासवर्ड के साथ . पर हस्ताक्षर करना चाहिए और EXTERNAL_ACCESS को अनुमति देने के पसंदीदा तरीके को सेट करने के लिए निम्न कमांड का उपयोग करें और UNSAFE असेंबली:

USE [master];
  CREATE ASYMMETRIC KEY [ClrPermissionsKey]
    AUTHORIZATION [dbo]
    FROM EXECUTABLE FILE = 'C:\path\to\my\assembly.dll';

CREATE LOGIN [ClrPermissionsLogin]
  FROM ASYMMETRIC KEY [ClrPermissionsKey];

GRANT UNSAFE ASSEMBLY TO [ClrPermissionsLogin];

एक बार यह हो जाने के बाद, आप उस डेटाबेस पर जा सकते हैं जहाँ आपकी असेंबली लोड की गई है और चलाएँ:

PERMISSION_SET =UNSAFE के साथ
ALTER ASSEMBLY [MyAssembly] WITH PERMISSION_SET = UNSAFE;

या आप WITH PERMISSION_SET = UNSAFE . शामिल कर सकते थे CREATE ASSEMBLY . के अंत में आदेश।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर दिनांक स्वरूप फ़ंक्शन

  2. SQL सर्वर डेटाबेस में विदेशी कुंजी बाधाओं को फिर से बनाने के लिए स्क्रिप्ट कैसे उत्पन्न करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 73

  3. 3 क्षेत्र जो SQL सर्वर प्रदर्शन निगरानी उपकरण का उपयोग करने से लाभान्वित होंगे

  4. SQL सर्वर में डेटा को इन-रो कैसे रखें

  5. टी-एसक्यूएल:संग्रहित प्रक्रिया के तर्क के रूप में संयोजित स्ट्रिंग पास नहीं कर सकता