আমি কীভাবে কোনও এসকিউএল সার্ভার এন্ডপয়েন্টের সুরক্ষা সেটিংস পরিদর্শন করতে পারি?


10

আমি আমাদের এসকিউএল সার্ভার বিকাশ কর্মীদের জন্য একটি টেস্ট পরিবেশ তৈরি করার প্রক্রিয়াধীন।

উত্পাদনে আমাদের কাছে 3 টি এসকিউএল সার্ভার SQL01রয়েছে , মিরর করা বেশ কয়েকটি ডাটাবেস রয়েছে SQL02SQL03"স্বয়ংক্রিয় ফেইলওভার সহ উচ্চ সুরক্ষা" বা সিঙ্ক্রোনাস কনফিগারেশনে সাক্ষী হিসাবে কাজ করে।

আমি তিনটি মেশিনকে পৃথক হার্ডওয়্যারে ভার্চুয়ালাইজ করার জন্য VMWare P2V ব্যবহার করেছি, মেশিনগুলির এসআইডি'র পুনর্গঠন করেছি এবং এই নতুন মেশিনগুলি থেকে আমাদের প্রোডাকশন সার্ভারের আইপি ঠিকানাগুলি ব্ল্যাকহুল করেছি।

আমি প্রথমদিকে প্রডাকশন সাক্ষী মেশিনকে ব্ল্যাকহোল করতে ভুলে গিয়েছিলাম, তাই টেস্ট মেশিনে থাকা ডেটাবেসগুলি এখনও 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];

আমি তখন পরীক্ষার পরিবেশে মিররযুক্ত ডেটাবেসগুলিকে সফলভাবে নতুন পরীক্ষার সাক্ষীর দিকে নির্দেশ করতে সক্ষম হয়েছি।

সুরক্ষা এর সাথে কী জড়িত তা দেখার জন্য আমি কীভাবে প্রযোজনীয় সাক্ষীর শেষ পয়েন্টটি পরিদর্শন করতে পারি?

আমি ধরে নিয়েছি এমন কিছু সিস্টেম ক্যাটালগ থাকতে হবে যা আমি পরিদর্শন করতে পারি, তবে বুকস অন-লাইনে এন্ডপয়েন্টসটির জন্য নির্দিষ্ট কিছু নেই বলে মনে হয়, এবং বিং ভাল, বিংলেস ...


অতিরিক্ত তথ্য:

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মিররিং শেষ পয়েন্ট অবজেক্টটির জন্য কোনও প্রবেশ নেই বলে মনে হয় । না major_idএবং কোনও minor_idমিল নেই 65536 Also এছাড়াও, সিস্টেম ডাটাবেসের কোনওটিতেই শেষ পয়েন্টের কোনও উল্লেখ নেই।

আমি ক্ষতিতে আছি

উত্তর:


7

এসকিউএল সার্ভার ২০১২-এ যাওয়ার আমাদের প্রস্তুতির জন্য সার্ভার থেকে সার্ভারে মিররযুক্ত ডাটাবেসগুলি সরিয়ে নিয়ে যাওয়ার জন্য দিনের একটি অংশ ব্যয় করার পরে, আমি এই এমএসডিএন ডকুমেন্টে এসেছি যে ব্যাখ্যা করে যে এন্ডপয়েন্ট সুরক্ষা কেবলমাত্র অ্যাকাউন্টের ধরণের ভিত্তিতে নির্ধারিত হয় এসকিউএল সার্ভারের অধীনে চলছে। যদি এসকিউএল সার্ভার কোনও ডোমেন অ্যাকাউন্ট ব্যবহার করে, তবে সেই অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে শেষ পয়েন্টে অ্যাক্সেস পেয়ে যায়। যদি এসকিউএল সার্ভার কোনও বিল্ট-ইন অ্যাকাউন্ট যেমন [নেটওয়ার্ক সার্ভিস] বা [স্থানীয় সিস্টেম] ইত্যাদি ব্যবহার করে থাকে তবে অবশ্যই শেষ পয়েন্টটি একটি সুরক্ষা শংসাপত্রের সাথে কনফিগার করা উচিত এবং কেবল শংসাপত্রের ধারকগণই শেষ পয়েন্টটি অ্যাক্সেস করতে পারবেন।

নথি থেকে প্রাসঙ্গিক বিভাগ:

ডেটাবেস মিররিং এন্ডপয়েন্টের জন্য প্রমাণীকরণের ধরণ নির্ধারণ করা

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

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

যদি কোনও সার্ভারের উদাহরণস্বরূপ যে কোনও প্রাপ্যতা গোষ্ঠীর জন্য প্রাপ্যতার প্রতিলিপিগুলি হোস্ট করে বিভিন্ন অ্যাকাউন্ট হিসাবে চালিত হয় তবে লগইন প্রতিটি অ্যাকাউন্ট অবশ্যই অন্য সার্ভারের উদাহরণে মাস্টার তৈরি করতে হবে। তারপরে, সেই লগইনটিকে সেই সার্ভারের দৃষ্টান্তের ডায়ালারিংয়ের শেষ প্রান্তে থাকা ডাটাবেসের সাথে সংযুক্ত হওয়ার জন্য সংযোগের অনুমতি দিতে হবে।

যদি আপনার সার্ভারের উদাহরণগুলি উইন্ডোজ প্রমাণীকরণ ব্যবহার করে, আপনি লেনদেনের মিররিং এন্ডপয়েন্টগুলি ট্রানস্যাক্ট-এসকিউএল, পাওয়ারশেল বা নতুন উপলভ্যতা গ্রুপ উইজার্ড ব্যবহার করে তৈরি করতে পারেন।

বিঃদ্রঃ:

যদি কোনও সার্ভারের উদাহরণ যা কোনও প্রাপ্যতার প্রতিরূপ হোস্ট করতে হয় তবে ডেটাবেস মিররিংয়ের সমাপ্তি বিন্দুর অভাব হলে, নতুন উপলভ্যতা গোষ্ঠী উইজার্ড স্বয়ংক্রিয়ভাবে উইন্ডোজ প্রমাণীকরণ ব্যবহার করে একটি ডাটাবেস মিররিং এন্ডপয়েন্টটি তৈরি করতে পারে।

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

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

রিমাস রুসানু (তার উত্তরে) সঠিকভাবে চিহ্নিত করেছিলেন যে কীভাবে একটি মিররিংয়ের শেষ প্রান্তে সুরক্ষা নির্ধারণ করা যায়; যেমন হিসাবে:

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 সার্ভারের অ্যাকাউন্টে সংযোগ অ্যাক্সেসের অনুমতি দেয় (উপরে বর্ণিত হিসাবে)।

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


4

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

sys.dm_db_mirroring_connectionsআপনি চান আপনি সরবরাহ করা উচিত। এটিতে principal_nameযা রয়েছে:

লগইনটির নাম যা সংযোগের অনুমতিগুলির জন্য বৈধ ছিল। উইন্ডোজ প্রমাণীকরণের জন্য, এই মানটি দূরবর্তী ব্যবহারকারীর নাম। শংসাপত্র প্রমাণীকরণের জন্য, এই মানটি শংসাপত্রের মালিক।

আপনি যদি এমন একটি সেশন নিয়ে কাজ করছেন যা বিরতি দেওয়া হয়েছে যদিও আমি নিশ্চিত নই যে এটি এখনও তথ্য ফিরিয়ে দেবে, বিশ্বাস করুন এটির কেবল সক্রিয় সংযোগ রয়েছে।


ধন্যবাদ, শন এটি অবশ্যই দূরবর্তী ব্যবহারকারীর নামটি প্রকৃতপক্ষে শেষ পয়েন্টের সাথে সংযুক্ত দেখায়, তবে সুরক্ষা সেটিংস সেই ব্যবহারকারীকে উত্পাদনে সংযোগ করতে দেয় তবে পরীক্ষায় নয়, এই প্রশ্নের উত্তর দেয় না। আমি যাইহোক সাহায্যের প্রশংসা করি!
ম্যাক্স ভার্নন

3

এর জন্য বই অনলাইন ডকুমেন্টেশন দেখুন sys.database_mirroring_endpoints

সার্ভার অবজেক্টের অনুমতিগুলির জন্য আপনি সাধারণ জায়গাটি দেখুন sys.server_permissions। প্রতিটি ক্ষেত্রে যেমন উইন্ডোজ সুরক্ষা জড়িত তখন উইন্ডো গোষ্ঠীর সদস্যতার কারণে জিনিসগুলি আরও জটিল হয় এবং আপনাকে অনুমতিগুলির শ্রেণিবদ্ধতাও বিবেচনা করতে হবে ।


আমি এটি দেখেছি তবে আমার যা প্রয়োজন তা হল লগইনগুলির একটি তালিকা যা শেষ পয়েন্টে সংযোগ অ্যাক্সেস রয়েছে। sys.datedia_mirroring_endpPoint দেখানোর জন্য উপস্থিত হয় না - যতক্ষণ না আমি কিছু মিস করছি!
ম্যাক্স ভার্নন

1
সার্ভার অবজেক্টের অনুমতিগুলির জন্য আপনি সাধারণ জায়গাটি দেখুন sys.server_permissions। প্রতিটি ক্ষেত্রে যেমন উইন্ডোজ সুরক্ষা জড়িত তখন উইন্ডো গোষ্ঠীর সদস্যতার কারণে জিনিসগুলি আরও জটিল হয় এবং আপনাকে অনুমতিগুলির শ্রেণিবদ্ধতাও বিবেচনা করতে হবে ।
রিমাস রুসানু

3
কোনও উত্তর আপনি নিজেই উত্তরটিতে সামান্য ব্যাখ্যা করতে পারেন?
jcolebrand
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.