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 エージェント固定データベース ロールである SQLAgentUserRoleSQLAgentReaderRole、または SQLAgentOperatorRole のいずれかに追加されないと、プロキシを使用できません。

  • プロキシに加えて資格情報を作成する場合は、 ALTER ANY CREDENTIAL 権限が必要です。

SQL Server Management Studio (SSMS) の使用

SQL Server エージェント プロキシを作成するには

  1. オブジェクト エクスプ ローラーで、SQL Server エージェントでプロキシを作成するサーバーをプラス記号を選択して展開します。

  2. プラス記号を選択して [SQL Server エージェント] を展開します。

  3. [プロキシ] フォルダーを右クリックし、 [新しいプロキシ]を選択します。

  4. [新しいプロキシ アカウント] ダイアログ ボックスの [全般] ページで、 [プロキシ名] ボックスにプロキシ アカウントの名前を入力します。

  5. [資格情報名] ボックスに、プロキシ アカウントが使用するセキュリティ資格情報の名前を入力します。

  6. [説明] ボックスに、プロキシ アカウントの説明を入力します。

  7. [以下のサブシステムに対してアクティブ]から、このプロキシ用の適切なサブシステムを選択します (複数選択可能)。

  8. [プリンシパル] ページで、プロキシ アカウントへのアクセスを許可するログインまたはロールを追加するか、あるいは拒否するログインまたはロールを削除します。

  9. 終わったら、 [OK] を選択します。

Transact-SQL の使用

SQL Server エージェント プロキシを作成するには

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次のスクリプトでは、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  
    

次の手順