適用対象:SQL Server
Azure SQL Managed Instance
Von Bedeutung
Azure SQL Managed Instance では、SQL Server エージェントのほとんどの機能が現在サポートされているわけではありません。 詳細については、Azure SQL Managed Instance T-SQL と SQL Server の違いに関するページ、または「SQL Managed Instance 内での SQL Agent ジョブの制限事項」を参照してください。
SQL Server には、次の msdb
データベースの固定データベース ロールが用意されています。これらのロールを使用することで、管理者は SQL Server エージェントへのアクセスをより細かく制御できます。 特権レベルの低いロールから順に、次に示します。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
上記のどのロールのメンバーでもないユーザーが SQL Server Management Studio で SQL Server に接続しても、オブジェクト エクスプローラーには SQL Server エージェント ノードは表示されません。 SQL Server エージェントを使用するユーザーは、上記のいずれかの固定データベース ロールのメンバーであるか、または固定サーバー ロール sysadmin のメンバーである必要があります。
SQL Server エージェントの固定データベース ロールの権限
SQL Server エージェント データベース ロールの権限は、相互に同心構造になっています。 つまり、SQL Server エージェントのオブジェクト (警告、オペレーター、ジョブ、スケジュール、プロキシなど) に対して、高いレベルの特権を持つロールは、低いレベルの特権を持つロールの権限を継承します。 たとえば、最も特権レベルの低い SQLAgentUserRole のメンバーが proxy_A
へのアクセスを許可された場合、SQLAgentReaderRole および SQLAgentOperatorRole の両方のメンバーは、proxy_A
へのアクセスが明示的に許可されていなくても、このプロキシへのアクセス権が自動的に与えられていることになります。 これは、セキュリティに影響することがあります。セキュリティ上の影響については、次のセクションの各ロールの説明に記載します。
SQLAgentUserRole の権限
SQLAgentUserRole には、SQL Server エージェントの固定データベース ロールのうち、最も低い特権レベルが設定されています。 オペレーター、ローカル ジョブ、ジョブ スケジュールのみに対する権限があります。 SQLAgentUserRole のメンバーは、所有しているローカル ジョブおよびジョブ スケジュールのみに対する権限を持っています。 このメンバーが、マルチサーバー ジョブ (マスター サーバーとターゲット サーバーのジョブ) を使用することはできません。また、ジョブの所有権を変更して、所有していないジョブへのアクセス権を得ることもできません。 SQLAgentUserRole のメンバーは、SQL Server Management Studio の [ジョブ ステップのプロパティ] ダイアログ ボックスでのみ、使用できるプロキシのリストを表示できます。 SQL Server Management Studio オブジェクト エクスプローラーには、 [ジョブ] ノードのみが SQLAgentUserRole のメンバーに表示されます。
Von Bedeutung
SQLAgentReaderRole および SQLAgentOperatorRole は、自動的に SQLAgentUserRoleのメンバーになります。 つまり、SQLAgentReaderRole および SQLAgentOperatorRole のメンバーは、SQLAgentUserRole に許可されたすべての SQL Server エージェント プロキシにアクセスし、これらのプロキシを使用できることになります。
次の表に、SQL Server エージェント オブジェクトに対する SQLAgentUserRole の権限の概要を示します。
アクション | オペレーター | ローカル ジョブ (所有ジョブのみ) | ジョブ スケジュール (所有スケジュールのみ) | プロキシ |
---|---|---|---|---|
作成/変更/削除 | いいえ | イエス ジョブの所有権は変更できません。 |
イエス | いいえ |
リストの表示 (列挙) | イエスsp_notify_operator および Management Studio の [ジョブのプロパティ] ダイアログ ボックスで使用できるオペレーターのリストを取得できます。 |
イエス | イエス | イエス プロキシのリストは、Management Studio の [ジョブ ステップのプロパティ] ダイアログ ボックスにのみ表示できます。 |
有効化/無効化 | いいえ | イエス | イエス | 適用なし |
プロパティを表示する | いいえ | イエス | イエス | いいえ |
実行/停止/開始 | 適用なし | イエス | 適用なし | 適用なし |
ジョブ履歴の表示 | 適用なし | イエス | 適用なし | 適用なし |
ジョブ履歴の削除 | 適用なし | いいえ 所有しているジョブのジョブ履歴を削除するには、SQLAgentUserRole のメンバーは、 EXECUTE に対する sp_purge_jobhistory 権限が明示的に許可されている必要があります。 他のジョブのジョブ履歴は削除できません。 |
適用なし | 適用なし |
アタッチ/デタッチ | 適用なし | 適用なし | イエス | 適用なし |
SQLAgentReaderRole の権限
SQLAgentReaderRole には、すべての SQLAgentUserRole の権限、および使用できるマルチサーバー ジョブのリスト、ジョブのプロパティ、およびジョブの履歴を表示する権限が含まれています。 このロールのメンバーは、所有しているジョブとジョブ スケジュールだけでなく、使用できるすべてのジョブとジョブ スケジュール、およびそのプロパティのリストを表示することもできます。 SQLAgentReaderRole のメンバーは、ジョブの所有権を変更して、所有していないジョブへのアクセス権を得ることはできません。 SQL Server Management Studio オブジェクト エクスプローラーには、 [ジョブ] ノードのみが SQLAgentReaderRole のメンバーに表示されます。
Von Bedeutung
SQLAgentReaderRole のメンバーは、自動的に SQLAgentUserRoleのメンバーになります。 つまり、SQLAgentReaderRole のメンバーは、SQLAgentUserRole に対して許可されたすべての SQL Server エージェント プロキシにアクセスし、これらのプロキシを使用できることになります。
次の表に、SQL Server エージェント オブジェクトに対する SQLAgentReaderRole の権限の概要を示します。
アクション | オペレーター | ローカル ジョブ | マルチサーバー ジョブ | ジョブ スケジュール | プロキシ |
---|---|---|---|---|---|
作成/変更/削除 | いいえ | 可 (所有しているジョブのみ) ジョブの所有権は変更できません。 |
いいえ | 可 (所有しているスケジュールのみ) | いいえ |
リストの表示 (列挙) | イエスsp_notify_operator および Management Studio の [ジョブのプロパティ] ダイアログ ボックスで使用できるオペレーターのリストを取得できます。 |
イエス | イエス | イエス | イエス プロキシのリストは、Management Studio の [ジョブ ステップのプロパティ] ダイアログ ボックスにのみ表示できます。 |
有効化/無効化 | いいえ | 可 (所有しているジョブのみ) | いいえ | 可 (所有しているスケジュールのみ) | 適用なし |
プロパティを表示する | いいえ | イエス | イエス | イエス | いいえ |
プロパティを編集する | いいえ | 可 (所有しているジョブのみ) | いいえ | 可 (所有しているスケジュールのみ) | いいえ |
実行/停止/開始 | 適用なし | 可 (所有しているジョブのみ) | いいえ | 適用なし | 適用なし |
ジョブ履歴の表示 | 適用なし | イエス | イエス | 適用なし | 適用なし |
ジョブ履歴の削除 | 適用なし | いいえ 所有しているジョブのジョブ履歴を削除するには、SQLAgentReaderRole のメンバーは、 EXECUTE に対する sp_purge_jobhistory 権限が明示的に許可されている必要があります。 他のジョブのジョブ履歴は削除できません。 |
いいえ | 適用なし | 適用なし |
アタッチ/デタッチ | 適用なし | 適用なし | 適用なし | 可 (所有しているスケジュールのみ) | 適用なし |
SQLAgentOperatorRole の権限
SQLAgentOperatorRole には、SQL Server エージェントの固定データベース ロールのうち、最も高いレベルの特権が設定されています。 これには、 SQLAgentUserRole および SQLAgentReaderRoleのすべての権限が含まれています。 このロールのメンバーは、オペレーターおよびプロキシのプロパティを表示することも、サーバー上で使用できるプロキシおよび警告を列挙することもできます。
SQLAgentOperatorRole のメンバーは、ローカル ジョブおよびスケジュールに関する追加の権限を持っています。 すべてのローカル ジョブを実行、停止、または開始したり、サーバー上のローカル ジョブのジョブ履歴を削除できます。 また、サーバー上のすべてのローカル ジョブおよびスケジュールを、有効または無効にすることもできます。 ローカル ジョブまたはスケジュールを有効または無効にするには、このロールのメンバーはストアド プロシージャ sp_update_job
および sp_update_schedule
を使用する必要があります。
@enabled
のメンバーは、ジョブまたはスケジュールの名前か ID を指定するパラメーターと パラメーターのみを指定できます。 他のパラメーターを指定すると、ストアド プロシージャの実行は失敗します。
SQLAgentOperatorRole のメンバーは、ジョブの所有権を変更して、所有していないジョブへのアクセス権を得ることはできません。
SQL Server Management Studio オブジェクト エクスプローラーには、 [ジョブ] 、 [警告] 、 [オペレーター] 、および [プロキシ] の各ノードのみが SQLAgentOperatorRole のメンバーに表示されます。 このロールのメンバーに表示されないのは、 [エラー ログ] ノードだけです。
Von Bedeutung
SQLAgentOperatorRole のメンバーは、自動的に SQLAgentUserRole および SQLAgentReaderRoleのメンバーになります。 つまり、SQLAgentOperatorRole のメンバーは、SQLAgentUserRole または SQLAgentReaderRole に対して許可されたすべての SQL Server エージェント プロキシにアクセスし、これらのプロキシを使用できることになります。
次の表に、SQL Server エージェント オブジェクトに対する SQLAgentOperatorRole の権限の概要を示します。
アクション | アラート | オペレーター | ローカル ジョブ | マルチサーバー ジョブ | ジョブ スケジュール | プロキシ |
---|---|---|---|---|---|---|
作成/変更/削除 | いいえ | いいえ | 可 (所有しているジョブのみ) ジョブの所有権は変更できません。 |
いいえ | 可 (所有しているスケジュールのみ) | いいえ |
リストの表示 (列挙) | イエス | イエスsp_notify_operator および Management Studio の [ジョブのプロパティ] ダイアログ ボックスで使用できるオペレーターのリストを取得できます。 |
イエス | イエス | イエス | イエス |
有効化/無効化 | いいえ | いいえ | イエス SQLAgentOperatorRole のメンバーは、ストアド プロシージャ sp_update_job を使用し、@enabled および @job_id (または @job_name ) パラメーターの値を指定することにより、所有していないローカル ジョブを有効または無効にできます。 このロールのメンバーが、このストアド プロシージャに対して他のパラメーターを指定した場合、プロシージャの実行は失敗します。 |
いいえ | イエス SQLAgentOperatorRole のメンバーは、ストアド プロシージャ sp_update_schedule を使用し、@enabled および @schedule_id (または @name ) パラメーターの値を指定することにより、所有していないローカル ジョブを有効または無効にできます。 このロールのメンバーが、このストアド プロシージャに対して他のパラメーターを指定した場合、プロシージャの実行は失敗します。 |
適用なし |
プロパティを表示する | イエス | イエス | イエス | イエス | イエス | イエス |
プロパティを編集する | いいえ | いいえ | 可 (所有しているジョブのみ) | いいえ | 可 (所有しているスケジュールのみ) | いいえ |
実行/停止/開始 | 適用なし | 適用なし | イエス | いいえ | 適用なし | 適用なし |
ジョブ履歴の表示 | 適用なし | 適用なし | イエス | イエス | 適用なし | 適用なし |
ジョブ履歴の削除 | 適用なし | 適用なし | イエス | いいえ | 適用なし | 適用なし |
アタッチ/デタッチ | 適用なし | 適用なし | 適用なし | 適用なし | 可 (所有しているスケジュールのみ) | 適用なし |
複数のロールをユーザーに割り当てる
固定サーバー ロール sysadmin のメンバーは、SQL Server エージェントのすべての機能にアクセスできます。 sysadmin ロールのメンバーではないが、SQL Server エージェントの複数の固定データベース ロールのメンバーであるユーザーの場合、これらのロールの同心構造権限モデルについて覚えておくことが重要です。 特権レベルの高いロールには常に、そのロールよりも特権レベルが低いロールの権限がすべて含まれているため、複数のロールのメンバーであるユーザーは、そのユーザーがメンバーとして属しているロールの中で、最も特権レベルの高いロールに関連付けられた権限を自動的に持っていることになります。