BITS セキュリティ、トークン、および管理者アカウント
HTTP サーバー証明書のコールバック
サーバー証明書を正しく検証することは、HTTPS セキュリティを維持するための重要な部分です。 BITS は、SetSecurityFlags で指定された要件の一覧に対してサーバー証明書を常に検証することで役立ちます。 既定では、BITS では「ブラウザー」スタイルの証明書検証が使用されます。
証明書をさらに検証するために、呼び出すカスタム関数を指定することもできます。 SetServerCertificateValidationInterface メソッドを使用して、サーバー証明書のコールバックを設定します。 メソッドは、オペレーティング システムが SetSecurityFlag 呼び出しに基づいて証明書を検証した後にのみ呼び出されます。
HTTP クライアント証明書
2 つの異なる証明書設定方法を使用して、HTTP ジョブにクライアント証明書を設定できます。 証明書は、ID または証明書のサブジェクト名で設定できます。 サーバーでクライアント認証が必要な場合は、TLS ネゴシエーション (または再ネゴシエーション) 中にクライアント証明書が使用されます。
書き込み専用 HTTP ヘッダー
BITS は、不要なアクセスから HTTP 認証トークンを保護するのに役立ちます。 多くの場合、HTTP サーバーは、ファイルを HTTP サーバーにダウンロードまたはアップロードするときに、ある種のセキュリティ トークンまたは文字列を必要とします。
BITS は、これらの認証トークンをいくつかの方法で保護します。
- BITS では、HTTPS URL を指定して、TLS および SSL で保護された HTTP 接続を使用できます。
- カスタム ヘッダーは、常にディスク上で暗号化された形式で保持されます。
- IBackgroundCopyJobHttpOptions3::MakeCustomHeadersWriteOnly メソッドを使用して、顧客ヘッダーが他のプログラムに返されることがないようにできます。
標準ユーザーと管理者ユーザー
管理者グループに属しているユーザーは、標準ユーザー アクセスまたは昇格された状態 (管理者特権付き) でプロセスを実行できます。 BITS は、ユーザーがコンピューターにログオンしている限り、どちらの状態でもジョブを実行します。 ただし、ユーザーが昇格した状態でジョブを作成した場合、または昇格した状態でジョブの所有権を取得した場合、ジョブを取得または変更するには、ユーザーが昇格した状態である必要があります (そうでない場合、呼び出しはアクセス拒否 (0x80070005) で失敗します)。 ジョブの昇格状態を確認するには、IBackgroundCopyJob4::GetOwnerElevationState メソッドを呼び出します。
標準ユーザーは、他のユーザーが所有するジョブを列挙または変更できません。
整合性レベル
昇格された状態に加えて、トークンの整合性レベルによって、ユーザーがジョブを変更できるかどうかが決まります。 クライアントは、より高い整合性レベルのトークンによって作成されたジョブを変更できません。 特に、ローカル システム トークンの多くは、昇格されたウィンドウの整合性レベルよりも高い整合性レベルを保持しているため、管理者は通常の昇格されたコマンド ウィンドウからトークンを変更できません。 たとえば、Windows Update および SMS ジョブは、昇格されたトークンよりも高い整合性レベルを持つ LocalSystem として実行されるため、管理者はこれらのジョブを変更または削除できません。 これらのジョブを変更するには、ローカル システムとして実行されるタスク スケジューラ タスクを作成します。 タスクは BITS API を使用するコンソール アプリケーションを実行したり、BitsAdmin.exe を呼び出すスクリプトを実行したりできます。 使用される整合性レベルを確認するには、IBackgroundCopyJob4::GetOwnerIntegrityLevel メソッドを呼び出します。
サービス ID
Windows 10 May 2019 Update (10.0; Build 18362) 以降、サービスから開始された BITS ジョブはサービス ID を維持します。 これにより、サービスが BITS を使用して、アクセス許可がサービス SID に関連付けられているディレクトリにファイルをダウンロードしたり、ディレクトリからファイルをアップロードしたりできるようになります。 さらに、ネットワーク トラフィックは、BITS ではなく、BITS ジョブを要求したサービスに正しく関連付けられます。