次の方法で共有


BITS セキュリティ、トークン、および管理者アカウント

HTTP サーバー証明書のコールバック

サーバー証明書を正しく検証することは、HTTPS セキュリティを維持するための重要な部分です。 BITS は、SetSecurityFlagsで指定された要件の一覧に対してサーバー証明書を常に検証することで役立ちます。 既定では、BITS では "ブラウザー" スタイルの証明書検証が使用されます。

証明書をさらに検証するために、呼び出すカスタム関数を指定することもできます。 SetServerCertificateValidationInterfaceメソッド使用して、サーバー証明書のコールバックを設定します。 メソッドは、SetSecurityFlag 呼び出しに基づいて、オペレーティング システムが証明書を検証した後にのみ呼び出されます。

HTTP クライアント証明書

2 つの異なる証明書設定方法を使用して、HTTP ジョブにクライアント証明書を設定できます。 証明書は、ID または証明書 サブジェクト名で設定できます。 サーバーでクライアント認証が必要な場合は、TLS ネゴシエーション (または再ネゴシエーション) 中にクライアント証明書が使用されます。

書き込み専用 HTTP ヘッダー

BITS は、不要なアクセスから HTTP 認証トークンを保護するのに役立ちます。 多くの場合、HTTP サーバーは、ファイルをダウンロードまたは HTTP サーバーにアップロードするときに、何らかの種類のセキュリティ トークンまたは文字列を必要とします。

BITS は、これらの認証トークンをいくつかの方法で保護します。

  • BITS を使用すると、HTTPS URL を指定することで、TLS で保護された HTTP 接続と SSL で保護された HTTP 接続を使用できます。
  • カスタム ヘッダーは、常にディスク上で暗号化された形式で保持されます。
  • IBackgroundCopyJobHttpOptions3::MakeCustomHeadersWriteOnly メソッドを使用して、顧客ヘッダーが他のプログラムに返されないようにすることができます。

標準ユーザーと管理者ユーザー

管理者グループ内のユーザーは、標準のユーザー アクセス権を持つプロセス、または管理者特権 (管理者特権を持つ) 状態のプロセスを実行できます。 BITS は、ユーザーがコンピューターにログオンしている限り、どちらの状態でもジョブを実行します。 ただし、ユーザーがジョブを作成した場合、または管理者特権の状態でジョブの所有権を取得した場合、ユーザーは昇格された状態でジョブを取得または変更する必要があります (それ以外の場合、呼び出しは Access Denied (0x80070005) で失敗します)。 ジョブの昇格状態を確認するには、IBackgroundCopyJob4::GetOwnerElevationState メソッドを呼び出します。

標準ユーザーは、他のユーザーが所有するジョブを列挙または変更できません。

整合性レベル

昇格された状態に加えて、トークンの整合性レベルによって、ユーザーがジョブを変更できるかどうかを判断できます。 クライアントは、より高い整合性レベルのトークンによって作成されたジョブを変更できません。 特に、多くのローカル システム トークンは、昇格されたウィンドウの整合性レベルよりも高い整合性レベルを持っているので、通常の管理者特権のコマンド ウィンドウから管理者が変更することはできません。 たとえば、Windows Update ジョブと SMS ジョブは LocalSystem として実行され、管理者がこれらのジョブを変更または削除できないように、管理者特権トークンよりも高い整合性レベルを持ちます。 これらのジョブを変更するには、ローカル システムとして実行されるタスク スケジューラ タスクを作成します。 タスクは、BITS API を使用するコンソール アプリケーションを実行することも、BitsAdmin.exeを呼び出すスクリプトを実行することもできます。 使用される整合性レベルを確認するには、IBackgroundCopyJob4::GetOwnerIntegrityLevel メソッドを呼び出します。

サービス ID

Windows 10 May 2019 Update (10.0;ビルド 18362)、サービスから開始された BITS ジョブは、サービス ID を維持します。 これにより、BITS を使用するサービスは、サービス SID に関連付けられているアクセス許可を持つディレクトリにファイルをダウンロードしたり、ファイルをアップロードしたりできます。 さらに、ネットワーク トラフィックは、BITS に属性付けされるのではなく、BITS ジョブを要求したサービスに正しく属性付けされます。