SQL Server エージェント プロキシの作成
適用対象 SQL Server
このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server で SQL Server エージェント プロキシ アカウントを作成する方法について説明します。
SQL Server エージェント プロキシ アカウントは、ジョブ ステップを実行できるセキュリティ コンテキストを定義します。 各プロキシには対応するセキュリティ資格情報が 1 つあります。 特定のジョブ ステップに権限を設定するには、SQL Server エージェント サブシステムに必要な権限のあるプロキシを作成し、このプロキシをジョブ ステップに割り当てます。
現在、Azure SQL Managed Instance によって、すべてではありませんが、ほとんどの SQL Server エージェントの機能がサポートされています。 詳細については、Azure SQL Managed Instance T-SQL と SQL Server の違いに関するページ、または「SQL Managed Instance 内での SQL Agent ジョブの制限事項」を参照してください。
はじめに
制限事項と制約事項
資格情報を用意していない場合は、プロキシを作成する前に、まず資格情報を作成する必要があります。
SQL Server エージェント プロキシは、資格情報を使用して Windows ユーザー アカウントに関する情報を格納します。 資格情報で指定されたユーザーは、SQL Server が実行されているコンピューターでの "ネットワーク経由でコンピューターへアクセス" 権限 (
SeNetworkLogonRight
) を持っている必要があります。SQL Server エージェントは、ジョブ ステップを実行するごとに、プロキシからサブシステムへのアクセス許可を確認し、アクセスを確立します。 プロキシにサブシステムへのアクセス許可がない場合、ジョブ ステップは失敗します。 プロキシにアクセス許可がある場合、 SQL Server エージェントはプロキシで指定されているユーザーの権限を借用してジョブ ステップを実行します。 プロキシ サブシステムの一覧については、sp_grant_proxy_to_subsystem に関するページを参照してください。
プロキシを作成しても、そのプロキシの資格情報で指定したユーザーの権限は変更されません。 たとえば、SQL Server のインスタンスに接続する権限を持たないユーザーのプロキシを作成できます。 この場合、このプロキシを使用するジョブ ステップから SQL Server に接続することはできません。
ユーザーのログインにプロキシへのアクセス許可がある場合、またはプロキシへのアクセス許可のあるロールにユーザーが属している場合、このユーザーはジョブ ステップでプロキシを使用できます。
セキュリティ
アクセス許可
sysadmin 固定サーバー ロールのメンバーだけに、プロキシ アカウントを作成、変更、または削除できる権限があります。 固定サーバー ロール sysadmin のメンバーではないユーザーは、
msdb
データベースの SQL Server エージェント固定データベース ロールである SQLAgentUserRole、SQLAgentReaderRole、または SQLAgentOperatorRole のいずれかに追加されないと、プロキシを使用できません。プロキシに加えて資格情報を作成する場合は、 ALTER ANY CREDENTIAL 権限が必要です。
SQL Server Management Studio (SSMS) の使用
SQL Server エージェント プロキシを作成するには
オブジェクト エクスプ ローラーで、SQL Server エージェントでプロキシを作成するサーバーをプラス記号を選択して展開します。
プラス記号を選択して [SQL Server エージェント] を展開します。
[プロキシ] フォルダーを右クリックし、 [新しいプロキシ]を選択します。
[新しいプロキシ アカウント] ダイアログ ボックスの [全般] ページで、 [プロキシ名] ボックスにプロキシ アカウントの名前を入力します。
[資格情報名] ボックスに、プロキシ アカウントが使用するセキュリティ資格情報の名前を入力します。
[説明] ボックスに、プロキシ アカウントの説明を入力します。
[以下のサブシステムに対してアクティブ]から、このプロキシ用の適切なサブシステムを選択します (複数選択可能)。
[プリンシパル] ページで、プロキシ アカウントへのアクセスを許可するログインまたはロールを追加するか、あるいは拒否するログインまたはロールを削除します。
終わったら、 [OK] を選択します。
Transact-SQL の使用
SQL Server エージェント プロキシを作成するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次のスクリプトでは、
CatalogApplicationCredential
という名前の資格情報を作成し、プロキシCatalog application proxy
を作成し、その資格情報CatalogApplicationCredential
を割り当て、そのプロキシに ActiveX スクリプト サブシステムへのアクセス権を付与します。 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。-- creates credential CatalogApplicationCredential USE msdb ; GO CREATE CREDENTIAL CatalogApplicationCredential WITH IDENTITY = 'REDMOND/TestUser', SECRET = 'G3$1o)lkJ8HNd!'; GO -- creates proxy "Catalog application proxy" and assigns -- the credential 'CatalogApplicationCredential' to it. EXEC dbo.sp_add_proxy @proxy_name = 'Catalog application proxy', @enabled = 1, @description = 'Maintenance tasks on catalog application.', @credential_name = 'CatalogApplicationCredential' ; GO -- grants the proxy "Catalog application proxy" access to -- the ActiveX Scripting subsystem. EXEC dbo.sp_grant_proxy_to_subsystem @proxy_name = N'Catalog application proxy', @subsystem_id = 2 ; GO