ฉันมีปัญหากับการอนุญาตให้ผู้ใช้ของฉันเรียกใช้งาน SSIS Packages ในลักษณะที่เหมาะสมเนื่องจากต้องการระดับสิทธิ์ที่แตกต่างกัน
สถานการณ์จำลอง : เราได้สร้างคลังข้อมูลด้วยแพคเกจ SSIS ที่แตกต่างกันสองชุดที่รับผิดชอบในการโหลดด้วยข้อมูลหนึ่งชุดจะถูกเรียกใช้โดยอัตโนมัติ (ผ่านงานตัวแทนของ SQL และทำงานได้ดี) และอื่น ๆ ที่ต้องทำงานบน - ความต้องการของผู้ใช้เมื่อข้อมูลขั้นต้นได้รับการสรุปและทำความสะอาดแล้ว
แพคเกจนี้ดำเนินการพิเศษที่มีสิทธิพิเศษรวมถึงการสำรองฐานข้อมูลในช่วงเริ่มต้นของการรัน (เพื่อให้แน่ใจว่าแน่ใจ) ปล่อยและสร้างตารางจากการคำนวณเป็นต้น
ฉันได้เขียนขั้นตอนการจัดเก็บไว้เพื่อใช้งานนี้ผ่าน [SSISDB] [แคตตาล็อก] [create_execution] และ [SSISDB] [แคตาล็อก] [ขั้นตอนการเริ่มต้น / จัดเก็บ] [วิธีการจัดเก็บเริ่มต้น ... (ฉันเป็นผู้ดูแลระบบ)
กระบวนงานที่เก็บไว้ล้มเหลวเมื่อเรียกใช้โดยผู้ใช้ปกติเนื่องจากสิทธิ์ระดับสูงที่จำเป็นใน SSISDB และ MSDB เพื่อจัดคิวการดำเนินการและแพคเกจเองล้มเหลวเนื่องจากกำลังทำงานภายใต้บริบทความปลอดภัย (ต่ำ)
สิ่งที่ฉันได้ลอง :
ฉันพยายามแก้ไขปัญหาโดยใช้ 'ดำเนินการเป็น' ในขั้นตอนการจัดเก็บอย่างไรก็ตามสิ่งนี้ล้มเหลวเนื่องจากปัญหาการโยงข้ามฐานข้อมูลการตั้งค่าสถานะที่น่าเชื่อถือเป็นต้น
ฉันยังพยายามแก้ไขปัญหาด้วยการให้ตัวแทนงานเรียกใช้แพคเกจและเพียงแค่เรียกใช้งานตัวแทนจากขั้นตอนการจัดเก็บ แต่ฉันเข้าสู่โลกแห่งความเจ็บปวดที่เกี่ยวข้องอย่างรวดเร็ว:
- ไม่สามารถตั้งค่าการอนุญาตให้ใช้งานได้สำหรับแต่ละงาน
- ความหวังในการกำหนดค่าการเข้าถึงนี้ผ่าน Server บทบาทกลางเพื่อรองรับการเปลี่ยนแปลงพนักงานเมื่อเวลาผ่านไปและงานสามารถมีผู้ใช้เพียงคนเดียวในฐานะเจ้าของ
- โลกมืดของบัญชีพร็อกซีหนังสือรับรองร่วมกับการลงชื่อเข้าใช้ sql-auth เป็นต้น
แผน C และ D
ตัวเลือกเดียวที่ฉันนึกถึงได้คือสร้างการเข้าสู่ระบบเซิร์ฟเวอร์ SQL โดยเฉพาะด้วยการยกระดับสิทธิ์และเชื่อใจผู้ใช้ที่จะไม่ผ่านการตรวจสอบข้อมูลโดยรอบ / สูญเสียความสามารถในการตรวจสอบของผู้กำหนดเวลาการนำเข้า องค์กร) หรือสร้างส่วนหน้าเว็บแบบกำหนดเองเพื่อให้ผู้ใช้รับรองความถูกต้องเป็นบัญชี 'บทบาทเซิร์ฟเวอร์' ของพวกเขาจากนั้นให้เว็บแอปเรียกใช้กระบวนงานที่เก็บไว้ภายใต้การเชื่อมต่อที่สอง (สิทธิ์)
ดังนั้น....
มีคำแนะนำใด ๆ เกี่ยวกับวิธี:
- มีแพคเกจ SSIS ดำเนินการสิทธิพิเศษ
- ดำเนินการโดยผู้ใช้ที่มีสิทธิ์ต่ำ (ใช้บัญชี AD windows)
- โดยเฉพาะอย่างยิ่งในกรณีที่การเข้าถึงเพื่อเรียกใช้งานได้รับการจัดการผ่านบทบาทเซิร์ฟเวอร์กลาง (ฉันไม่มีความสามารถในการสร้างกลุ่ม windows ใหม่สำหรับพวกเขา)
- และที่ใด ๆ บัญชีใหม่กลาง / พร็อกซี่บัญชี SQL Server รับรองความถูกต้อง (อีกครั้งความสามารถที่ จำกัด มากในการเปลี่ยนแปลงโฆษณา)
ฉันเข้าใจว่ามีชิ้นส่วนที่เคลื่อนไหวจำนวนมากอยู่ที่นี่ (และบางคนรู้สึกเหมือนใบมีดหมุน) ดังนั้นแจ้งให้เราทราบหากมีข้อมูลอื่น ๆ ที่คุณรู้สึกว่าฉันพลาด
ไชโยทิม
แก้ไข ....
ดังนั้นวันนี้ฉันสร้างการเข้าสู่ระบบ SQL Server โดยเฉพาะด้วยสิทธิ์ ssis_admin สร้างงาน SQL Server Agent สามงานที่เป็นเจ้าของโดยผู้ใช้นั้นและปรับปรุงขั้นตอนการจัดเก็บที่ผู้ใช้ปลายทางของฉันโทรหาexecute as
ผู้ใช้นั้น สิ่งนี้ล้มเหลวเนื่องจากไม่สามารถเรียกcreate execution
การเข้าสู่ระบบของเซิร์ฟเวอร์ SQL ได้ต้องใช้บัญชี windows
ฉันอัปเดตขั้นตอนการจัดเก็บผู้ใช้ไปexecute as
ยังบัญชี Windows SQL Server ทำงานเป็น (บัญชีบริการโฆษณา) ได้รับสิทธิ์ssis_admin
และล้มเหลวพร้อมข้อผิดพลาด
ไม่สามารถเปลี่ยนบริบทความปลอดภัยปัจจุบันได้ โปรดเปลี่ยนเป็นฐานข้อมูลดั้งเดิมที่มีการเรียกใช้ 'ดำเนินการเป็น' และลองอีกครั้ง
นี่มันจะไปได้ไม่เร็วเลย :(
create_execution
เพราะฉันต้องผ่านพารามิเตอร์ (หนึ่งในสามค่า) จาก sproc ไปยังงาน ฉันมีความสุขที่มีสาม sprocs / งาน ฯลฯ ถ้าแก้ได้ 2) ถ้า ssis_admin เป็นบทบาทสิทธิ์ต่ำสุดที่ทำให้ฉันอยู่ที่นั่นฉันเปิดให้มัน ... มันดีกว่า sysadmin อย่างน้อยและแก้ปัญหาพวกเขาโดยไม่ตั้งใจวาง / nuking ตารางคลังสินค้าในการใช้งานทั่วไป
ssis_admin
บทบาทจะช่วยให้พวกเขาให้ทำงานแพคเกจ SSIS นี้ (procs ตรวจสอบสมาชิกในดูแลระบบหรือ ssis_admin บทบาท) แต่ผมคิดว่ามันจะทำงานตามที่พวกเขาและดังนั้นจึงไม่สามารถที่จะใช้การสำรองข้อมูลและเช่น (ฉันต้องทดสอบว่าแน่นอนไม่สามารถจำได้ว่ามันทำงานเป็นพวกเขาหรือบัญชีบริการ SQL Server) อย่างไรก็ตามการเป็นสมาชิกของ ssis_admin ช่วยให้พวกเขาปรับใช้แพคเกจและยุ่งเหยิงกับการกำหนดค่าซึ่งอาจหรือไม่อาจเป็นสิ่งที่ดี 2559 ทำให้เรามีบทบาทที่ละเอียดมากขึ้น แต่เห็นได้ชัดว่าไม่ได้ใช้มากนักที่นี่
EXECUTE AS
sp_start_job
กล่าวว่าคนที่แต่งตัวประหลาดอินเทอร์เน็ตแบบสุ่มที่น่ากลัวในการรักษาความปลอดภัย
create_execution
เช่นพวกเขาจำเป็นต้องระบุพารามิเตอร์ในการดำเนินการสำหรับ "สถานการณ์พร้อมของข้อมูลหรือไม่" 2) ปลอดภัยที่จะสมมติว่าคุณไม่สนใจที่จะวางบทบาท ssis_admin หรือไม่