SQL Server エージェントのセキュリティの実装

SQL Server エージェントを使用すると、データベース管理者は、各ジョブ ステップをそのジョブ ステップの実行に必要な権限だけがあるセキュリティ コンテキスト内で実行できます。適切なセキュリティ コンテキストは、SQL Server エージェント プロキシによって決まります。特定のジョブ ステップに対応する権限を設定するには、必要な権限のあるプロキシを作成し、そのプロキシをジョブ ステップに割り当てます。プロキシは、複数のジョブ ステップに対して指定できます。同じ権限を必要とするジョブ ステップに対しては、同じプロキシを使用します。

注意注意

SQL Server 2000 からアップグレードすると、アップグレード前に存在していたすべてのユーザー プロキシ アカウントが、一時的なグローバル プロキシ アカウントである UpgradedProxyAccount に変更されます。UpgradedProxyAccount は、明示的に使用されていたサブシステムへのアクセスのみが許可されます。アップグレード後のすべてのサブシステムにアクセスできるわけではありません。

次のセクションでは、ユーザーが SQL Server エージェントを使用してジョブを作成または実行するために、許可する必要のあるデータベース ロールについて説明します。

SQL Server エージェントへのアクセスの許可

ユーザーが SQL Server エージェントを使用するには、次の 1 つ以上の固定データベース ロールのメンバである必要があります。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

上記のロールは、msdb データベースに格納されています。既定では、これらのデータベース ロールのメンバであるユーザーはいません。これらのロールのメンバシップは、明示的に許可する必要があります。固定サーバー ロール sysadmin のメンバであるユーザーは、SQL Server エージェントへのフル アクセスが許可されているので、上記の固定データベース ロールのメンバでなくても SQL Server エージェントを使用できます。上記のいずれかのデータベース ロールまたは sysadmin ロールのメンバでないユーザーは、SQL Server Management Studio を使用して SQL Server に接続する際に、SQL Server エージェント ノードを使用できません。

これらのデータベース ロールのメンバは、自身が所有するジョブの表示および実行に加えて、既存のプロキシ アカウントとして実行するジョブ ステップの作成を行えます。これらの各ロールに関連付けられている特定の権限の詳細については、「SQL Server エージェントの固定データベース ロール」を参照してください。

固定サーバー ロール sysadmin のメンバには、プロキシ アカウントを作成、変更、および削除する権限があります。sysadmin ロールのメンバには、プロキシを指定せずに SQL Server エージェント サービス アカウントとして実行するジョブ ステップを作成する権限があります。このアカウントは、SQL Server エージェントの起動に使用されるアカウントです。

ガイドライン

SQL Server エージェントのセキュリティを向上するには、次のガイドラインに従ってください。

  • プロキシ専用のユーザー アカウントを作成し、ジョブ ステップの実行にはこれらのプロキシ ユーザー アカウントのみを使用します。

  • プロキシ ユーザー アカウントに対し、必要な権限のみを許可します。特定のプロキシ アカウントに割り当てられたジョブ ステップの実行に実際に求められる権限だけを許可してください。

  • SQL Server エージェント サービスは、Windows Administrators グループのメンバである Microsoft Windows アカウントで実行しないでください。