विभिन्न उपयोगकर्ता विशेषाधिकारों के साथ संग्रहीत कार्यविधि से SSIS पैकेज निष्पादित करना


14

मैं अपने उपयोगकर्ताओं को उचित रूप से विशेषाधिकार के विभिन्न स्तरों के कारण एसएसआईएस पैकेजों को उचित तरीके से निष्पादित करने की अनुमति देने के साथ समस्या हो रही है।

परिदृश्य : हमने एक डेटा वेयरहाउस बनाया है, जिसमें डेटा के साथ लोड करने के लिए दो अलग-अलग एसएसआईएस पैकेज हैं, एक को स्वचालित रूप से चलाया जाना है (एक एसक्यूएल एजेंट नौकरी के माध्यम से, और ठीक काम कर रहा है), और दूसरा जो कि चालू होना चाहिए- उपयोगकर्ताओं द्वारा एक बार अपस्ट्रीम डेटा को अंतिम रूप देने और साफ करने आदि की मांग।

यह पैकेज रन के प्रारंभ में डेटाबेस का बैकअप लेने (सुनिश्चित करने के लिए सुनिश्चित होना, सुनिश्चित करना), गणना की गई तालिकाओं को गिराना और फिर से बनाना सहित बहुत विशेषाधिकार प्राप्त कार्य करता है।

मैंने [SSISDB] [कैटलॉग] [create_execution] और [SSISDB] [कैटलॉग] के माध्यम से इस काम को अंजाम देने के लिए एक संग्रहीत कार्यविधि लिखी है। [start_execution] संग्रहीत कार्यविधियाँ .... यह ठीक काम करती है जब यह आपके खाते के अंतर्गत चलती है। (मैं एक sysadmin है)।

SSISDB और MSDB में आवश्यक उच्च स्तर की अनुमतियों के कारण एक सामान्य उपयोगकर्ता द्वारा चलाए जाने पर संग्रहीत कार्यविधि विफल हो गई, ताकि निष्पादन समाप्त हो जाए, और पैकेज स्वयं विफल हो गया क्योंकि यह उनके (नीच) सुरक्षा संदर्भ के तहत चल रहा है।

मैंने क्या कोशिश की है :

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

मैंने पैकेज चलाने के लिए एजेंट की नौकरी करके समस्या को हल करने का भी प्रयास किया है, और एजेंट की नौकरी को संग्रहीत प्रक्रिया से चला रहा हूं, हालांकि मैंने तेजी से दर्द की दुनिया में प्रवेश किया:

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

योजनाएँ C और D

एकमात्र विकल्प जो मैं अपने बारे में सोच सकता हूं, वे हैं एक समर्पित SQL सर्वर लॉगिन को उन्नत अनुमतियों के साथ बनाने के लिए, और उन उपयोगकर्ताओं पर विश्वास करें जो क्रेडेंशियल्स को पास नहीं करते हैं / ऑडिटबिलिटी खो देते हैं, जो आयात निर्धारित करते हैं (यह समस्या अन्य क्षेत्रों में कैसे हल की जाती है) संगठन), या कस्टम उपयोगकर्ताओं को अपने 'सर्वर रोल' खाते के रूप में प्रमाणित करने की अनुमति देने के लिए विशुद्ध रूप से एक वेब फ्रंट एंड बनाते हैं, और फिर वेब ऐप को एक दूसरे (विशेषाधिकार प्राप्त) कनेक्शन के तहत संग्रहीत कार्यविधि को चलाने देते हैं।

इसलिए....

क्या वहाँ पर कोई सलाह है:

  • SSIS पैकेज का विशेषाधिकार प्राप्त संचालन करें
  • एक कम विशेषाधिकार प्राप्त उपयोगकर्ता द्वारा निष्पादित (विज्ञापन विंडो खाते का उपयोग करके)
  • अधिमानतः जहां नौकरी चलाने की पहुंच केंद्रीय सर्वर रोल के माध्यम से प्रबंधित की जाती है (मेरे पास इसके लिए एक नया विंडोज़ समूह बनाने की आसान क्षमता नहीं है)
  • और जहां कोई भी नया, मध्यवर्ती / प्रॉक्सी खाते SQL सर्वर प्रामाणिक खाते हैं (फिर से, AD में परिवर्तन करने की बहुत सीमित क्षमता)

मैं समझता हूं कि यहां बहुत सारे चलते हुए हिस्से हैं (और कुछ कताई की तरह महसूस करते हैं) तो मुझे बताएं कि क्या कोई अन्य जानकारी है जो आपको लगता है कि मैं चूक गया हूं।

चीयर्स, टिम

संपादित करें ....

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

मैंने उपयोगकर्ताओं execute asको Windows खाता SQL सर्वर पर संग्रहीत कार्यविधि को अपडेट किया (एक AD सेवा खाता) के रूप में चल रहा है, इसे दिया ssis_adminऔर यह त्रुटि के साथ विफल हो गया

वर्तमान सुरक्षा संदर्भ को वापस नहीं किया जा सकता है। कृपया मूल डेटाबेस पर जाएँ जहाँ 'Execute As' कहा गया था और इसे फिर से आज़माएँ।

यह कहीं भी तेज नहीं है :(


1) क्या उन्हें पैकेज के माध्यम से लॉन्च करना चाहिए create_execution अर्थात क्या उन्हें अपने "डेटा के तैयार परिदृश्य" के लिए निष्पादन पर पैरामीटर निर्दिष्ट करने की आवश्यकता है? 2) यह मान लेना सुरक्षित है कि आप उन्हें ssis_admin भूमिका में रखने में रुचि नहीं रखते हैं?
बिल जनक

1) मैं उपयोग कर रहा हूं create_executionक्योंकि मुझे स्पोक से नौकरी के लिए एक पैरामीटर (तीन मानों में से एक) पास करने की आवश्यकता है। मुझे खुशी है कि अगर मैं इसे हल करता हूं तो तीन स्पोक / नौकरी आदि। 2) यदि ssis_admin सबसे कम विशेषाधिकार वाली भूमिका है जो मुझे वहां मिलती है, तो मैं इसके लिए खुला हूं ... यह कम से कम sysadmin से बेहतर है और उन्हें सामान्य उपयोग में वेयरहाउस तालिकाओं को गलती से छोड़ने / nuking करने की अनुमति देता है।
वोकेट

ssis_adminभूमिका उन्हें SSIS पैकेज (procs सिस्टम प्रशासक या ssis_admin भूमिकाओं में सदस्यता के लिए जाँच) को चलाने के लिए अनुमति होगी, लेकिन मैं लगता है कि यह उनके रूप में चलाने के लिए बैकअप और इस तरह लेने में सक्षम नहीं जा रहा है और इसलिए है। (मुझे यह सुनिश्चित करने के लिए परीक्षण करना होगा कि क्या यह याद नहीं रह सकता है कि यह उनके या SQL सर्वर सेवा खाते के रूप में चलता है)। हालाँकि, ssis_admin का सदस्य होने के नाते उन्हें संकुल की तैनाती और विन्यास के साथ मैला करने की अनुमति देता है जो अच्छी बात हो भी सकती है और नहीं भी। 2016 हमें और अधिक दानेदार भूमिका देता है लेकिन स्पष्ट रूप से यहाँ बहुत उपयोग नहीं होता है
बिलिंक

मुझे लगता है कि कम से कम जोखिम में 3 कठिन कोड वाली नौकरियां होंगी जो कम से कम विशेषाधिकार प्राप्त राज्य प्राप्त करने के लिए क्रेडेंशियल उपयोगकर्ताओं / खाते के सही संयोजन का उपयोग करती हैं। मैं उन उपयोगकर्ताओं को या तो नौकरी चलाने की क्षमता प्रदान करने या बारिंग करने के लिए देखता हूँ, जो तीन प्रोक्स बनाते हैं जो EXECUTE ASउन्हें विशिष्ट नौकरियों को चलाने की अनुमति देने के लिए उपयोग करते हैं sp_start_job। बेतरतीब इंटरनेट आदमी कहते हैं, जो सुरक्षा में भयानक है
बिलिन्क

@billinkc मुझे लगता है कि ssis_operator क्या करेगा
टॉम V - टॉपनस्वर्स का प्रयास करें ।xyz

जवाबों:


2

पोस्टीरिटी के लिए मुझे यह काम निम्न में से मिला:

  • Admin.RunImportSQL सेवा द्वारा उपयोग किए गए खाते को 'निष्पादित करें' के रूप में ( ) के रूप में ( ) के रूप में उपयोगकर्ताओं द्वारा बुलाए गए संग्रहीत प्रक्रिया को बदलना
  • SQL सर्वर सेवा खाता (AD प्रबंधित सेवा खाता) को execute asऊपर के उपयोग की अनुमति देने वाले व्यवस्थापक स्पॉर्ट को निष्पादित करने के लिए अनुमतियाँ संशोधित करने के लिए संशोधित किया गया है
  • SQL सर्वर सेवा खाते को ssisdb.ssis_admin और msdb.SQlAgentOgentator भूमिकाओं के लिए संशोधित किया गया है।
  • यह Admin.RunImportसंग्रहीत कार्यविधि sp_start_jobकिसी पारित पैरामीटर पर निर्भर करते हुए 3 एजेंट जॉब्स में से एक को कतारबद्ध करती है
    • SQL एजेंट के माध्यम से यह पुनर्निर्देशन ऊपर ssis सुरक्षा संदर्भ त्रुटि को बायपास करने के लिए आवश्यक है
    • एजेंट नौकरियां 'सा' के स्वामित्व में हैं, और बस एक अंतर्निहित संग्रहीत कार्यविधि को निष्पादित करते हैं (Raw.hp_Execute_Import_Impl ) को प्रति कार्य के लिए एक अलग पैरामीटर में ।
    • इसका मतलब यह है कि एजेंट की नौकरी उतनी ही चलती है जितनी saकि ssis_admin के ऊपर, पहले से निर्धारित नौकरियों के समान है
  • Raw.hp_Execute_Import_Implसंग्रहीत प्रक्रिया कतारों के रूप में SSIS पैकेज saसामान्य रूप में एक ही।

इस उद्देश्य के लिए समर्पित विंडो खाते बनाने में सक्षम होने के बदले में मुझे लगता है कि यह उतना ही अच्छा है जितना मैं इस समय प्राप्त करने जा रहा हूं।

मदद के लिए बहुत शुक्रिया दोस्तों!


2
वापस आने और समाधान पोस्ट करने के लिए धन्यवाद। अब जब आपको फिर से यह समस्या है और आपने जो किया उसे भूल जाओ, आप वेब पर खोज सकते हैं और आपको अपना समाधान मिल जाएगा!
निक.मेडमार्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.