さまざまなレベルの特権が必要なため、ユーザーが合理的な方法でSSISパッケージを実行できるようにすることに問題があります。
シナリオ:データのロードを担当する2つの異なるSSISパッケージを使用してデータウェアハウスを作成しました。1つは自動的に実行され(SQLエージェントジョブを介して正常に動作しています)、もう1つはアップストリームデータが完成してクレンジングされた後のユーザーの要求など
このパッケージは、実行の開始時にデータベースをバックアップする(確実に確認する)、計算されたテーブルを削除して再作成するなど、非常に特権的な操作を実行します。
[SSISDB]。[catalog]。[create_execution]および[SSISDB]。[catalog]。[start_execution]ストアドプロシージャを介してこのジョブを実行するストアドプロシージャを記述しました。これはアカウントで実行すると正常に機能します。 (私はシステム管理者です)。
ストアドプロシージャは、SSISDBおよびMSDBで実行をキューに入れるために必要な高いレベルのアクセス許可のために通常のユーザーが実行すると失敗し、パッケージ自体は(低)セキュリティコンテキストで実行されているため失敗しました。
私が試したもの:
ストアドプロシージャで「名前を付けて実行」を使用して問題を解決しようとしましたが、データベース間のチェーンの問題、信頼できるフラグなどが原因で失敗しました。
また、パッケージを実行するエージェントジョブを作成し、ストアドプロシージャからエージェントジョブを実行するだけで問題を解決しようとしましたが、次のような苦痛の世界に入りました。
- ジョブごとに実行許可を設定できない
- 中央のサーバーロールを介してこのアクセスを構成して、スタッフの経時的な変化に対応し、ジョブが所有者として1人のユーザーしか持つことができないようにしたい
- プロキシアカウントの暗い世界、sql-authログインなどと組み合わせた資格情報
プランCおよびD
残っていると思う唯一のオプションは、昇格されたアクセス許可を持つ専用のSQL Serverログインを作成し、ユーザーを信用して資格情報を渡さない/インポートをスケジュールした人の監査可能性を失うことを信頼することです(この問題は組織)、または純粋にユーザーが「サーバーロール」アカウントとして認証できるようにWebフロントエンドをカスタムビルドし、Webアプリに2番目の(特権)接続でストアドプロシージャを実行させます。
そう....
以下の方法に関するアドバイスはありますか?
- SSISパッケージに特権操作を実行させる
- 低い特権のユーザーによって実行されます(AD Windowsアカウントを使用)
- ジョブを実行するためのアクセスが中央のサーバーロールを介して管理されている場合(できれば、新しいWindowsグループを簡単に作成することはできません)
- そして、新しい中間/プロキシアカウントがSQL Server Authアカウントである場合(再び、ADに変更を加える非常に限られた機能)
ここには多くの可動部品があることを理解しています(そして、一部は回転するブレードのように感じます)。
乾杯、ティム
編集...
そのため、今日はssis_admin権限を持つ専用のSQL Serverログインを作成し、そのユーザーが所有する3つのSQL Serverエージェントジョブを作成し、エンドユーザーがexecute as
そのユーザーに呼び出すストアドプロシージャを更新しました。これはcreate execution
、SQL Serverログインとして呼び出すことができないため失敗しました。Windows アカウントが必要です。
ユーザーストアドプロシージャをexecute as
、SQL Serverが(ADサービスアカウント)として実行されているWindowsアカウントに更新し、それssis_admin
を許可するとエラーで失敗する
現在のセキュリティコンテキストを元に戻すことはできません。「実行方法」が呼び出された元のデータベースに切り替えて、もう一度試してください。
これはどこにも速く行きません:(
create_execution
sprocからジョブにパラメーター(3つの値の1つ)を渡す必要があるため、使用しています。それがそれを解決するならば、私は3つのsprocs / jobsを持っていることをうれしく思います。2)ssis_adminが私をそこに導く最も低い特権の役割である場合、私はそれに対してオープンです...少なくともsysadminよりはましで、一般的な使用でウェアハウステーブルを誤って削除/削除します。
ssis_admin
ロールにより、SSISパッケージを実行できます(procsはsysadminまたはssis_adminロールのメンバーシップをチェックします)が、それらとして実行されるため、バックアップなどを取得できないと思います。(私はそれを確実にテストする必要がありますが、それがそれらとして実行されるか、SQL Serverサービスアカウントとして実行されるかを決して覚えることはできません)。ただし、ssis_adminのメンバーになると、パッケージを展開したり、構成が適切である場合とそうでない場合があります。2016年にはよりきめ細かな役割が与えられますが、ここでは明らかにあまり使用されません
EXECUTE AS
して、を使用して特定のジョブを実行できるようにする3つのプロシージャを作成しますsp_start_job
。セキュリティが恐ろしいランダムなインターネットの男
create_execution
つまり、「データの準備ができたシナリオ」の実行時にパラメーターを指定する必要がありますか?2)ssis_adminロールに入れることに興味がないと仮定しても安全ですか?