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 as
o kullanıcıya çağırdığı saklı yordamı güncelledim . Bu create execution
bir 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 as
SQL Server olarak çalıştığı Windows hesabına güncelleştirdim (bir AD hizmet hesabı), verdim ssis_admin
ve 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 :(
create_execution
Kullanı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.
ssis_admin
Rol 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
EXECUTE AS
engelleme, belirli işleri yürütmelerine izin vermek için kullanılan üç proc sp_start_job
. Güvenlikte korkunç rastgele internet adamı diyor
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?