ホスト保護属性と CLR 統合プログラミング

CLR (共通言語ランタイム) には、.NET Framework の一部であるマネージ API (アプリケーション プログラミング インターフェイス) に、特定の属性で注釈を付けるメカニズムが用意されています。このような属性は、SQL Server (SQL Server 2005 以降) など CLR のホストのための属性です。 このような HPA (ホスト保護属性) の例としては、次のものがあります。

  • SharedState。共有状態 (静的なクラス フィールドなど) を作成または管理する機能が API で公開されるかどうかを示します。

  • Synchronization。スレッド間で同期を実行する機能が API で公開されるかどうかを示します。

  • ExternalProcessMgmt。ホスト プロセスを制御する方法が API で公開されるかどうかを示します。

SQL Server は、これらの属性が与えられると、CAS (コード アクセス セキュリティ) を使用して、ホストされた環境で許可されない HPA の一覧を指定します。 CAS 要件は、SQL Server の 3 つの権限セット (SAFE、EXTERNAL_ACCESS、または UNSAFE) のいずれかで指定します。 アセンブリをサーバーに登録する際に、CREATE ASSEMBLY ステートメントを使用して、これら 3 つのセキュリティ レベルのいずれかを指定します。 SAFE 権限セットまたは EXTERNAL_ACCESS 権限セット内で実行されるコードでは、System.Security.Permissions.HostProtectionAttribute 属性が適用される特定の型またはメンバーを使用しないようにする必要があります。 詳細については、「アセンブリの作成」および「CLR 統合プログラミング モデルの制限事項」を参照してください。

HostProtectionAttribute は、ホストで許可されないコード構文 (型またはメソッド) を特定するという点で、信頼性を向上するための手段がセキュリティ権限とは異なります。 HostProtectionAttribute を使用すると、ホストの安定性確保に役立つプログラミング モデルを適用できます。

ホスト保護属性

HPA は、ホスト プログラミング モデルに適合しない型またはメンバーを識別して、次に示す信頼性に対する脅威を表します (リスクの低いものから順に並べています)。

  • 他の場合には特に害のない脅威

  • サーバーで実行されるマネージ ユーザー コードの不安定化につながる脅威

  • サーバー プロセス自体の不安定化につながる脅威

SQL Server では、System.Security.Permissions.HostProtectionResource 列挙 (ExternalProcessMgmt、ExternalThreading、MayLeakOnAbort、SecurityInfrastructure、SelfAffectingProcessMgmnt、SelfAffectingThreading、SharedState、Synchronization、または UI の値を含む) を示す HostProtectionAttribute を含む型またはメンバーを使用することができません。 これにより、状態の共有を可能にしたり、同期を実行するメンバーをアセンブリから呼び出すことができなくなります。さらに、終了時にリソース リークを発生させたり、SQL Server プロセスの整合性に影響を与える可能性があるメンバーの呼び出しも禁止されます。

許可されない型およびメンバー

次のトピックでは、HostProtectionResource の値が SQL Server によって許可されない型およびメンバーを示します。

注意

各トピックに含まれる一覧は、サポートされているアセンブリから作成されたものです。 詳細については、「サポートされている .NET Framework ライブラリ」を参照してください。

このセクションの内容

関連項目

概念

CLR 統合のコード アクセス セキュリティ

CLR 統合プログラミング モデルの制限事項

アセンブリの作成