मैं SQL सर्वर समापन बिंदु की सुरक्षा सेटिंग्स का निरीक्षण कैसे कर सकता हूं?


10

मैं हमारे SQL सर्वर विकास कर्मचारियों के लिए एक परीक्षण वातावरण बनाने की प्रक्रिया में हूं।

उत्पादन में हमारे पास 3 SQL सर्वर SQL01होते हैं , जिसमें कई डेटाबेस शामिल होते हैं जिन्हें प्रतिबिंबित किया जाता है SQL02SQL03"स्वचालित विफलता के साथ उच्च सुरक्षा" या तुल्यकालिक कॉन्फ़िगरेशन में गवाह के रूप में कार्य करता है।

मैंने अलग-अलग हार्डवेयर पर सभी तीन मशीनों को वर्चुअलाइज करने के लिए VMWare P2V का उपयोग किया है, मशीनों के SID को फिर से कॉन्फ़िगर किया है, और इन नई मशीनों से हमारे उत्पादन सर्वर के IP पते को ब्लैकहोल किया है।

मैं शुरू में उत्पादन गवाह मशीन को ब्लैकहोल करना भूल गया था, इसलिए टेस्ट मशीनों पर डेटाबेस अभी भी SQL03गवाह के रूप में मशीन का उपयोग कर रहे थे । इस मुद्दे को ध्यान में रखते हुए, मैंने नए वर्चुअलाइज्ड टेस्ट गवाह को इंगित करने के लिए डेटाबेस पर फिर से कॉन्फ़िगर करने का फैसला किया, इसे कॉल करें TEST03

नए गवाह का उपयोग करने के लिए डेटाबेस को फिर से कॉन्फ़िगर करने के लिए, मैंने प्राथमिक सर्वर पर निम्न कमांड दर्ज किया TEST01:

ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022';

प्रतिक्रिया अप्रत्याशित थी:

The ALTER DATABASE command could not be sent to the remote server instance
'TCP://TEST03.domain.inet:5022'.  The database mirroring configuration was
not changed.  Verify that the server is connected, and try again.

मैं इस त्रुटि संदेश पर बहुत चिंतित था क्योंकि कॉन्फ़िगरेशन उत्पादन मशीनों पर काम करता है, और परीक्षण मशीनों पर किसी भी तरह से संशोधित नहीं किया गया है।

LOGINपरीक्षण गवाह पर बनाने के लिए मुझे काम करने के लिए इसे प्राप्त करने के लिए :

CREATE LOGIN [DOMAIN\SQLServiceAccount] FOR WINDOWS WITH DEFAULT_DATABASE [Master];

और GRANTयह CONNECTप्रश्न में अंतिम बिंदु पर अधिकार है:

GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\SQLServiceAccount];

मैं तब नए परीक्षण गवाह के लिए TEST परिवेश पर प्रतिबिंबित डेटाबेस को सफलतापूर्वक इंगित करने में सक्षम था।

मैं उत्पादन गवाह समापन बिंदु का निरीक्षण कैसे कर सकता हूं कि यह देखने के लिए कि इसके साथ सुरक्षा क्या जुड़ी है?

मुझे लगता है कि कुछ सिस्टम कैटलॉग होने चाहिए जिनका मैं निरीक्षण कर सकता हूं, हालांकि बुक्स-ऑन-लाइन के लिए एंडपॉइंट्स के लिए कुछ भी विशिष्ट नहीं लगता है, और बिंग अच्छी तरह से, Bingless है ...


अतिरिक्त जानकारी:

SELECT ep.endpoint_id, p.class_desc, p.permission_name, ep.name, sp.name 
FROM sys.server_permissions p
    INNER JOIN sys.endpoints ep ON p.major_id = ep.endpoint_id
    INNER JOIN sys.server_principals sp ON p.grantee_principal_id = sp.principal_id
WHERE class = '105';

रिटर्न:

endpoint_id class_desc  permission_name endpoint_name   principal_name
2           ENDPOINT    CONNECT TSQL    Local Machine   public
3           ENDPOINT    CONNECT TSQL    Named Pipes     public
4           ENDPOINT    CONNECT TSQL    Default TCP     public
5           ENDPOINT    CONNECT TSQL    Default VIA     public

तथा:

SELECT name, endpoint_id, protocol_desc, type_desc, role_desc 
FROM sys.database_mirroring_endpoints;

यह दिखाता है:

name        endpoint_id  protocol_desc  type_desc           role_desc 
Mirroring   65536        TCP            DATABASE_MIRRORING  WITNESS

sys.server_permissionsमिररिंग एंडपॉइंट ऑब्जेक्ट के लिए कोई प्रविष्टि नहीं प्रतीत होती है । 65536 से कोई major_idऔर नहीं minor_idमेल खाता है। इसके अलावा, सिस्टम डेटाबेस में से कोई भी समापन बिंदु के लिए कोई संदर्भ नहीं है।

मुझे हानि हो रही है।

जवाबों:


7

SQL Server 2012 के लिए हमारे कदम की तैयारी में हमारे DEV वातावरण में सर्वर से सर्वर पर जाने वाले मिरर डेटाबेस से निपटने के दिन का एक हिस्सा खर्च करने के बाद, मैं इस MSDN दस्तावेज़ में आया था जो बताता है कि ENDPOINT सुरक्षा केवल खाते के प्रकार के आधार पर निर्धारित की जाती है SQL सर्वर के तहत चल रहा है। यदि SQL सर्वर एक डोमेन खाते का उपयोग कर रहा है, तो उस खाते में स्वतः समापन बिंदु तक पहुंच होती है। यदि SQL सर्वर बिल्ट-इन खाते जैसे कि [नेटवर्क सेवा] या [स्थानीय प्रणाली] आदि का उपयोग कर रहा है, तो एंडपॉइंट को सुरक्षा प्रमाणपत्र के साथ कॉन्फ़िगर किया जाना चाहिए, और प्रमाणपत्र के केवल धारक ही एंडपॉइंट तक पहुंच सकते हैं।

दस्तावेज़ से संबंधित अनुभाग:

एक डेटाबेस मिररिंग समापन बिंदु के लिए प्रमाणीकरण प्रकार का निर्धारण

यह समझना महत्वपूर्ण है कि आपके सर्वर इंस्टेंस के SQL सर्वर सेवा खाते इस प्रकार निर्धारित करते हैं कि आप अपने डेटाबेस के लिए एंडपॉइंट मिररिंग के लिए किस प्रकार के प्रमाणीकरण का उपयोग कर सकते हैं, निम्नानुसार है:

यदि प्रत्येक सर्वर का उदाहरण एक डोमेन सेवा खाते के अंतर्गत चल रहा है, तो आप अपने डेटाबेस के अंतिम छोरों के लिए Windows प्रमाणीकरण का उपयोग कर सकते हैं। यदि सभी सर्वर इंस्टेंसेस समान डोमेन उपयोगकर्ता खाते के रूप में चलते हैं, तो सही उपयोगकर्ता लॉगिन दोनों मास्टर डेटाबेस में स्वचालित रूप से मौजूद होते हैं। यह उपलब्धता डेटाबेस के लिए सुरक्षा कॉन्फ़िगरेशन को सरल करता है और अनुशंसित है।

यदि कोई सर्वर इंस्टेंसेस जो उपलब्धता समूह के लिए उपलब्धता प्रतिकृतियों को अलग-अलग खातों के रूप में चला रहा है, तो लॉगिन प्रत्येक खाते को अन्य सर्वर उदाहरण पर मास्टर में बनाया जाना चाहिए। उसके बाद, उस लॉगिन को उस सर्वर आवृत्ति के समापन बिंदु मिररिंग डेटाबेस से कनेक्ट करने के लिए CONNECT अनुमतियाँ दी जानी चाहिए।

यदि आपका सर्वर इंस्टेंस Windows प्रमाणीकरण का उपयोग करता है, तो आप Transact-SQL, PowerShell, या नई उपलब्धता समूह विज़ार्ड का उपयोग करके डेटाबेस मिररिंग एंडपॉइंट बना सकते हैं।

ध्यान दें:

यदि कोई सर्वर इंस्टेंस जो उपलब्धता प्रतिकृति को होस्ट करने के लिए है, तो एक डेटाबेस में अंतिम बिंदु के लिए डेटाबेस की कमी होती है, तो नई उपलब्धता समूह विज़ार्ड स्वचालित रूप से एक डेटाबेस मिररिंग एंडपॉइंट बना सकता है जो विंडोज ऑथेंटिकेशन का उपयोग करता है।

यदि कोई सर्वर इंस्टेंस किसी अंतर्निहित खाते के अंतर्गत चल रहा है, जैसे कि स्थानीय सिस्टम, स्थानीय सेवा, या नेटवर्क सेवा, या एक nondomain खाता, तो आपको समापन बिंदु प्रमाणीकरण के लिए प्रमाण पत्र का उपयोग करना चाहिए। यदि आप अपने डेटाबेस के लिए प्रमाणपत्रों का उपयोग कर रहे हैं, तो अंतिम बिंदु पर, आपके सिस्टम व्यवस्थापक को आउटबाउंड और इनबाउंड कनेक्शन दोनों पर प्रमाण पत्र का उपयोग करने के लिए प्रत्येक सर्वर उदाहरण को कॉन्फ़िगर करना होगा।

प्रमाणपत्र का उपयोग कर सुरक्षा मिररिंग डेटाबेस को कॉन्फ़िगर करने के लिए कोई स्वचालित विधि नहीं है। आपको CREATE ENDPOINT Transact-SQL स्टेटमेंट या न्यू- SqlHadrEndpoint PowerShell cmdlet का उपयोग करना होगा। अधिक जानकारी के लिए, CREATE ENDPOINT (Transact-SQL) देखें।

रेमस रुसानु (उनके उत्तर में) ने सही ढंग से पहचान की कि एक मिररिंग एंडपॉइंट पर सुरक्षा का निर्धारण कैसे किया जाए; जैसे की:

SELECT ep.name, sp2.name AS Grantee, sp.name AS Grantor, p.permission_name, ep.state_desc
FROM sys.server_permissions p 
    INNER JOIN sys.endpoints ep ON p.major_id = ep.endpoint_id
    INNER JOIN sys.server_principals sp ON p.grantor_principal_id = sp.principal_id
    INNER JOIN sys.server_principals sp2 ON p.grantee_principal_id = sp2.principal_id
WHERE p.class_desc = 'ENDPOINT' AND ep.type_desc = 'DATABASE_MIRRORING'

हालाँकि SQL Server 2005 पर मेरे मामले में मूल मिररिंग एंडपॉइंट्स इस क्वेरी के परिणामों में दिखाई नहीं देते हैं - मुझे लगता है कि यह इसलिए है क्योंकि वे डिफ़ॉल्ट सुरक्षा SQL सर्वर के तहत चल रहा है (जैसा कि ऊपर बताया गया है) के तहत कनेक्ट एक्सेस की अनुमति देता है।

तो इस सवाल का कैनोनिकल उत्तर, आप कैसे जानते हैं कि किसने किसी ENDPOINT तक पहुंच प्राप्त की है, ऊपर दिए गए क्वेरी का योग है, और खाता SQL सर्वर का उपयोग कर रहा है, साथ ही साथ किसी भी संभावित प्रमाण पत्र के साथ जो आपने समापन बिंदु तक पहुंच के साथ कॉन्फ़िगर किया है। ।


4

मैं सिर्फ उत्पादन में एक डेटाबेस के लिए इसे स्थापित करने के लिए होता हूं और उसी चीज की वजह से सोच रहा था कि मुझे कॉन्फ़िगरेशन की तुलना दूसरे मिररिंग सत्र से करने की आवश्यकता है ताकि यह सुनिश्चित हो सके कि मैंने इसे सही तरीके से मिलान किया है।

sys.dm_db_mirroring_connectionsआप चाहते हैं के साथ आप प्रदान करना चाहिए। इसमें principal_nameनिम्न शामिल हैं :

कनेक्शन अनुमतियों के लिए मान्य लॉगिन का नाम। Windows प्रमाणीकरण के लिए, यह मान दूरस्थ उपयोगकर्ता नाम है। प्रमाणपत्र प्रमाणीकरण के लिए, यह मान प्रमाणपत्र स्वामी है।

यदि आप एक ऐसे सत्र के साथ काम कर रहे हैं, जिसे विराम दिया गया है, तो मुझे यकीन नहीं है कि यह अभी भी जानकारी लौटाएगा, यकीन मानिए इसके केवल सक्रिय कनेक्शन हैं।


धन्यवाद, शॉन। यह निश्चित रूप से दूरस्थ उपयोगकर्ता नाम को वास्तव में एंडपॉइंट से जुड़ा हुआ दिखाता है, हालांकि यह वास्तव में इस सवाल का जवाब नहीं देता है कि सुरक्षा सेटिंग उस उपयोगकर्ता को उत्पादन में कनेक्ट करने की अनुमति दे रही है, लेकिन परीक्षण में नहीं। मैं वैसे भी मदद की सराहना!
मैक्स वर्नोन

3

के लिए पुस्तकें ऑनलाइन प्रलेखन देखें sys.database_mirroring_endpoints

सर्वर वस्तु अनुमतियों के लिए आप सामान्य स्थान पर देखने sys.server_permissions। हर मामले के साथ जब विंडोज़ सुरक्षा शामिल होती है, तो विंडोज़ समूह सदस्यता के कारण चीजें अधिक जटिल होती हैं, और आपको अनुमति पदानुक्रम पर भी विचार करना होगा ।


मैंने उस पर ध्यान दिया, लेकिन मुझे जो आवश्यकता है, वह लॉगइन की एक सूची है, जिसका समापन बिंदु तक पहुंच है। sys.database_mirroring_endpoints यह दिखाने के लिए प्रकट नहीं होते हैं कि - जब तक मैं कुछ याद नहीं कर रहा हूँ!
मैक्स वर्नोन

1
सर्वर वस्तु अनुमतियों के लिए आप सामान्य स्थान पर देखने sys.server_permissions। हर मामले के साथ जब विंडोज़ सुरक्षा शामिल होती है तो विंडोज़ समूह की सदस्यता के कारण चीजें अधिक जटिल होती हैं, और आपको अनुमति पदानुक्रम पर भी विचार करना होगा ।
रेमस रूसु

3
किसी भी मौका है कि आप जवाब में ही थोड़ा विस्तार कर सकते हैं?
jcolebrand
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.