मैं अपने उपयोगकर्ताओं को उचित रूप से विशेषाधिकार के विभिन्न स्तरों के कारण एसएसआईएस पैकेजों को उचित तरीके से निष्पादित करने की अनुमति देने के साथ समस्या हो रही है।
परिदृश्य : हमने एक डेटा वेयरहाउस बनाया है, जिसमें डेटा के साथ लोड करने के लिए दो अलग-अलग एसएसआईएस पैकेज हैं, एक को स्वचालित रूप से चलाया जाना है (एक एसक्यूएल एजेंट नौकरी के माध्यम से, और ठीक काम कर रहा है), और दूसरा जो कि चालू होना चाहिए- उपयोगकर्ताओं द्वारा एक बार अपस्ट्रीम डेटा को अंतिम रूप देने और साफ करने आदि की मांग।
यह पैकेज रन के प्रारंभ में डेटाबेस का बैकअप लेने (सुनिश्चित करने के लिए सुनिश्चित होना, सुनिश्चित करना), गणना की गई तालिकाओं को गिराना और फिर से बनाना सहित बहुत विशेषाधिकार प्राप्त कार्य करता है।
मैंने [SSISDB] [कैटलॉग] [create_execution] और [SSISDB] [कैटलॉग] के माध्यम से इस काम को अंजाम देने के लिए एक संग्रहीत कार्यविधि लिखी है। [start_execution] संग्रहीत कार्यविधियाँ .... यह ठीक काम करती है जब यह आपके खाते के अंतर्गत चलती है। (मैं एक sysadmin है)।
SSISDB और MSDB में आवश्यक उच्च स्तर की अनुमतियों के कारण एक सामान्य उपयोगकर्ता द्वारा चलाए जाने पर संग्रहीत कार्यविधि विफल हो गई, ताकि निष्पादन समाप्त हो जाए, और पैकेज स्वयं विफल हो गया क्योंकि यह उनके (नीच) सुरक्षा संदर्भ के तहत चल रहा है।
मैंने क्या कोशिश की है :
मैंने संग्रहित प्रक्रिया में 'एक्सक्यूट अस' का उपयोग करके समस्या को हल करने का प्रयास किया, हालांकि क्रॉस-डेटाबेस चेंजिंग मुद्दों, भरोसेमंद ध्वज आदि के कारण यह विफल रहा।
मैंने पैकेज चलाने के लिए एजेंट की नौकरी करके समस्या को हल करने का भी प्रयास किया है, और एजेंट की नौकरी को संग्रहीत प्रक्रिया से चला रहा हूं, हालांकि मैंने तेजी से दर्द की दुनिया में प्रवेश किया:
- प्रति-कार्य के आधार पर निष्पादन अनुमति निर्धारित करने में असमर्थता
- समय के साथ बदलते कर्मचारियों को पूरा करने के लिए एक केंद्रीय सर्वर भूमिका के माध्यम से इस पहुंच को कॉन्फ़िगर करने की उम्मीद है, और नौकरियों में केवल एक ही उपयोगकर्ता हो सकता है
- प्रॉक्सी खातों की गहरी दुनिया, sql- ऑर्कुल लॉगिन आदि के साथ संयोजन में क्रेडेंशियल्स
योजनाएँ C और D
एकमात्र विकल्प जो मैं अपने बारे में सोच सकता हूं, वे हैं एक समर्पित SQL सर्वर लॉगिन को उन्नत अनुमतियों के साथ बनाने के लिए, और उन उपयोगकर्ताओं पर विश्वास करें जो क्रेडेंशियल्स को पास नहीं करते हैं / ऑडिटबिलिटी खो देते हैं, जो आयात निर्धारित करते हैं (यह समस्या अन्य क्षेत्रों में कैसे हल की जाती है) संगठन), या कस्टम उपयोगकर्ताओं को अपने 'सर्वर रोल' खाते के रूप में प्रमाणित करने की अनुमति देने के लिए विशुद्ध रूप से एक वेब फ्रंट एंड बनाते हैं, और फिर वेब ऐप को एक दूसरे (विशेषाधिकार प्राप्त) कनेक्शन के तहत संग्रहीत कार्यविधि को चलाने देते हैं।
इसलिए....
क्या वहाँ पर कोई सलाह है:
- SSIS पैकेज का विशेषाधिकार प्राप्त संचालन करें
- एक कम विशेषाधिकार प्राप्त उपयोगकर्ता द्वारा निष्पादित (विज्ञापन विंडो खाते का उपयोग करके)
- अधिमानतः जहां नौकरी चलाने की पहुंच केंद्रीय सर्वर रोल के माध्यम से प्रबंधित की जाती है (मेरे पास इसके लिए एक नया विंडोज़ समूह बनाने की आसान क्षमता नहीं है)
- और जहां कोई भी नया, मध्यवर्ती / प्रॉक्सी खाते SQL सर्वर प्रामाणिक खाते हैं (फिर से, AD में परिवर्तन करने की बहुत सीमित क्षमता)
मैं समझता हूं कि यहां बहुत सारे चलते हुए हिस्से हैं (और कुछ कताई की तरह महसूस करते हैं) तो मुझे बताएं कि क्या कोई अन्य जानकारी है जो आपको लगता है कि मैं चूक गया हूं।
चीयर्स, टिम
संपादित करें ....
इसलिए आज मैंने ssis_admin अनुमतियों के साथ एक समर्पित SQL सर्वर लॉगिन बनाया, उस उपयोगकर्ता के स्वामित्व वाली तीन SQL सर्वर एजेंट नौकरियां बनाईं, और संग्रहीत प्रक्रिया को अद्यतन किया जो मेरे अंतिम उपयोगकर्ता execute as
उस उपयोगकर्ता को कहते हैं । create execution
SQL सर्वर लॉगिन के रूप में कॉल करने में असमर्थता के कारण यह विफल हो गया , इसके लिए विंडोज़ खाते की आवश्यकता है।
मैंने उपयोगकर्ताओं execute as
को Windows खाता SQL सर्वर पर संग्रहीत कार्यविधि को अपडेट किया (एक AD सेवा खाता) के रूप में चल रहा है, इसे दिया ssis_admin
और यह त्रुटि के साथ विफल हो गया
वर्तमान सुरक्षा संदर्भ को वापस नहीं किया जा सकता है। कृपया मूल डेटाबेस पर जाएँ जहाँ 'Execute As' कहा गया था और इसे फिर से आज़माएँ।
यह कहीं भी तेज नहीं है :(
create_execution
क्योंकि मुझे स्पोक से नौकरी के लिए एक पैरामीटर (तीन मानों में से एक) पास करने की आवश्यकता है। मुझे खुशी है कि अगर मैं इसे हल करता हूं तो तीन स्पोक / नौकरी आदि। 2) यदि ssis_admin सबसे कम विशेषाधिकार वाली भूमिका है जो मुझे वहां मिलती है, तो मैं इसके लिए खुला हूं ... यह कम से कम sysadmin से बेहतर है और उन्हें सामान्य उपयोग में वेयरहाउस तालिकाओं को गलती से छोड़ने / nuking करने की अनुमति देता है।
ssis_admin
भूमिका उन्हें SSIS पैकेज (procs सिस्टम प्रशासक या ssis_admin भूमिकाओं में सदस्यता के लिए जाँच) को चलाने के लिए अनुमति होगी, लेकिन मैं लगता है कि यह उनके रूप में चलाने के लिए बैकअप और इस तरह लेने में सक्षम नहीं जा रहा है और इसलिए है। (मुझे यह सुनिश्चित करने के लिए परीक्षण करना होगा कि क्या यह याद नहीं रह सकता है कि यह उनके या SQL सर्वर सेवा खाते के रूप में चलता है)। हालाँकि, ssis_admin का सदस्य होने के नाते उन्हें संकुल की तैनाती और विन्यास के साथ मैला करने की अनुमति देता है जो अच्छी बात हो भी सकती है और नहीं भी। 2016 हमें और अधिक दानेदार भूमिका देता है लेकिन स्पष्ट रूप से यहाँ बहुत उपयोग नहीं होता है
EXECUTE AS
उन्हें विशिष्ट नौकरियों को चलाने की अनुमति देने के लिए उपयोग करते हैं sp_start_job
। बेतरतीब इंटरनेट आदमी कहते हैं, जो सुरक्षा में भयानक है
create_execution
अर्थात क्या उन्हें अपने "डेटा के तैयार परिदृश्य" के लिए निष्पादन पर पैरामीटर निर्दिष्ट करने की आवश्यकता है? 2) यह मान लेना सुरक्षित है कि आप उन्हें ssis_admin भूमिका में रखने में रुचि नहीं रखते हैं?