SSIS Paketini farklı kullanıcı ayrıcalıklarına sahip saklı bir yordamdan yürütme


14

Değişen ayrıcalık düzeyleri nedeniyle kullanıcılarımın SSIS Paketlerini makul bir şekilde yürütmelerine izin vermeyle ilgili sorunlar yaşıyorum.

Senaryo : Veri depolamaktan sorumlu iki farklı SSIS paketi olan bir veri ambarı oluşturduk, biri otomatik olarak çalıştırılacak (bir SQL Agent işi aracılığıyla çalışıyor ve iyi çalışıyor) ve diğeri veri akışı tamamlandıktan ve temizlendikten sonra kullanıcıların talebi.

Bu paket, çalıştırmanın başında veritabanının yedeklenmesi (emin olmak için, emin olmak için), hesaplanan tabloları bırakma ve yeniden oluşturma gibi çok ayrıcalıklı işlemleri gerçekleştirir.

[SSISDB] aracılığıyla bu işi yürütmek için saklı bir yordam yazdım. [Katalog]. [Create_execution] ve [SSISDB]. [Katalog]. [Start_execution] saklı yordamlar .... bu benim hesabım altında çalıştırıldığında iyi çalışıyor (Ben bir sistemadım).

Saklı yordam, normal bir kullanıcı tarafından çalıştırıldığında SSISDB ve MSDB'de yürütmeyi enqueque etmek için gereken daha yüksek izin düzeyi nedeniyle başarısız oldu ve (düşük) güvenlik bağlamı altında çalıştığı için paketin kendisi başarısız oldu.

Ne denedim :

Saklı yordamda 'Farklı yürüt' kullanarak sorunu çözmeye çalıştım, ancak bu çapraz veritabanı zincirleme sorunları, güvenilir bayrak vb. Nedeniyle başarısız oldu.

Ayrıca, paketi çalıştırmak için Agent işlerine sahip olarak ve sadece depolanan yordamdan ajan işini çalıştırarak sorunu çözmeye çalıştım, ancak hızla aşağıdakileri içeren bir dünyaya girdim:

  • İş başına yürütme izinlerini ayarlayamama
  • Bu erişimi merkezi bir Sunucu Rolü aracılığıyla zaman içinde değişen personele hitap edecek şekilde yapılandırma umudu ve işlerin sahibi olarak yalnızca tek bir kullanıcı olabilir
  • Proxy hesaplarının karanlık dünyası, sql-auth oturum açma bilgileriyle birlikte Kimlik Bilgileri vb.

Plan C ve D

Bana kalmayı düşünebileceğim tek seçenek, yükseltilmiş izinlere sahip özel bir SQL Server Oturum Açma oluşturmak ve kullanıcılara, içe aktarma işlemini kimin planladığını (bu sorunun diğer alanlarda nasıl çözüldüğünü) veya kullanıcıların "Sunucu Rolü" hesabı olarak kimlik doğrulaması yapmasını sağlamak için web ön ucunu özelleştirin ve ardından web uygulamasının saklı yordamı ikinci (ayrıcalıklı) bir bağlantı altında çalıştırmasına izin verin.

Yani....

Nasıl yapılacağına dair herhangi bir tavsiye var mı:

  • SSIS paketinin ayrıcalıklı işlemleri gerçekleştirmesini sağlamak
  • düşük ayrıcalıklı bir kullanıcı tarafından yürütülür (AD windows hesabı kullanılarak)
  • tercihen işi çalıştırmak için erişim merkezi bir Sunucu Rolü aracılığıyla yönetilirse (onlar için yeni bir windows grubu oluşturmak için kolay bir yeteneğim yok)
  • ve yeni, ara / proxy hesaplarının SQL Server Yetkilendirme hesapları olduğu durumlarda (yine AD'de değişiklik yapma yeteneği çok sınırlı)

Burada bir sürü hareketli parça olduğunu anlıyorum (ve bazıları dönen bıçaklar gibi hissediyorum), bu yüzden kaçırdığımı düşündüğünüz başka bir bilgi varsa bana bildirin.

Sevgiler, Tim

Düzenle....

Bu yüzden bugün ssis_admin izinleriyle özel bir SQL Server oturumu oluşturdum, o kullanıcının sahip olduğu üç SQL Server Agent işi oluşturdum ve son kullanıcılarımın execute aso kullanıcıya çağırdığı saklı yordamı güncelledim . Bu create executionbir SQL Server girişi olarak çağrılamaması nedeniyle başarısız oldu , bir Windows hesabı gerektirir.

Kullanıcıların saklı yordamını execute asSQL Server olarak çalıştığı Windows hesabına güncelleştirdim (bir AD hizmet hesabı), verdim ssis_adminve hata ile başarısız oluyor

Geçerli güvenlik bağlamı geri alınamaz. Lütfen 'Farklı Çalıştır'ın çağrıldığı orijinal veritabanına geçin ve tekrar deneyin.

Bu hızlı bir yere gitmiyor :(


1) Paketleri şu şekilde başlatmaları gerekir mi, create_execution yani "verilerinin hazır senaryosu" için yürütme parametrelerini belirtmeleri gerekiyor mu? 2) Onları ssis_admin rolüne koymakla ilgilenmediğinizi varsaymak güvenli midir?
billinkc

1) create_executionKullanıyorum çünkü sproc iş için bir parametre (üç değerden biri) geçmek gerekir. Eğer çözerse, üç sprocs / iş vb. İçin mutluyum. 2) Eğer ssis_admin beni oraya götüren en düşük ayrıcalık rolü ise, ona açığım ... en azından sysadmin'den daha iyi ve genel olarak genel olarak depo masalarını yanlışlıkla düşürerek / nükle ederek çözüyor.
Wokket

ssis_adminRol onları (işlem sysadmin veya ssis_admin rol üyeliği için kontrol ediniz) SSIS paketleri çalıştırmak için izin verecek ama bence nedenle yedeklerini ve bu tür almak mümkün değildi onlara olarak çalışacak oluyor ve. (Bunu test etmek zorunda kalacağımdan emin değilim, onlar mı yoksa SQL Server hizmet hesabı olarak mı çalıştığını asla hatırlayamıyorum). Bununla birlikte, ssis_admin'in bir üyesi olmak, paketleri dağıtmalarına ve iyi bir şey olabilecek veya olmayabilecek yapılandırmalarla karışmasına izin verir. 2016 bize daha ayrıntılı roller veriyor, ancak burada çok fazla kullanım yok
billinkc

Bence en az risk, en az ayrıcalıklı bir duruma ulaşmak için doğrulanmış kullanıcı / hesap kombinasyonunu kullanan 3 sabit kodlu iş olacaktır. Daha sonra, bu kullanıcılara iş yürütme yeteneği verme veya bunu EXECUTE ASengelleme, belirli işleri yürütmelerine izin vermek için kullanılan üç proc sp_start_job. Güvenlikte korkunç rastgele internet adamı diyor
billinkc

@billinkc Bence ssis_operator yapardı
Tom V - topanswers.xyz deneyin

Yanıtlar:


2

Gelecek nesiller için bu çalışmayı aşağıdakiler yoluyla aldım:

  • Kullanıcılar ( Admin.RunImport) tarafından çağrılan saklı yordamı , SQL Hizmeti tarafından kullanılan hesabı 'Farklı yürüt' olarak değiştirme
  • SQL Server hizmet hesabı (AD Yönetilen Hizmet hesabı), execute asyukarıdakilerin kullanımına izin veren Yönetici sproc'unu yürütme izinlerine sahip olacak şekilde değiştirildi
  • SQL Server hizmet hesabı, ssisdb.ssis_admin ve msdb.SQlAgentOperator rollerine sahip olacak şekilde değiştirilir.
  • Bu Admin.RunImportsaklı yordam sp_start_job, geçirilen bir parametreye bağlı olarak 3 Aracı İşinden birini sıralar
    • SQL Agent aracılığıyla bu yeniden yönlendirme yukarıdaki ssis güvenlik bağlam hatasını atlamak için gereklidir
    • Aracı işlerinin sahibi 'sa' Raw.hp_Execute_Import_Impldır ve yalnızca iş başına farklı bir parametreden geçen temel saklı yordamı ( ) yürütür .
    • Bu, Agent işinin sayukarıdaki ssis_admin ayrıcalığı nedeniyle zamanlanan işlerle aynı şekilde çalıştığı anlamına gelir
  • Raw.hp_Execute_Import_ImplSaklı yordam sıraları olarak SSIS paket sanormal aynı.

Bu amaçla özel windows hesapları oluşturabilmek yerine, şu anda alacağım kadar iyi olduğunu düşünüyorum.

Yardımlarınız için teşekkürler çocuklar!


2
Geri döndüğünüz ve çözümü gönderdiğiniz için teşekkür ederiz. Şimdi tekrar bu sorunu yaşadığınızda ve ne yaptığınızı unutduğunuzda, web'de arama yapabilirsiniz ve kendi çözümünüzü bulacaksınız!
Nick.McDermaid
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.