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

適用対象:SQL Server

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

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

  • 同期。これは、API がスレッド間の同期を実行する機能を公開するかどうかを示します。

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

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

HostProtectionAttribute は、ホストが許可しない可能性がある特定のコード コンストラクト (型またはメソッド) を識別するという点で、信頼性を向上させる方法ほどセキュリティアクセス許可ではありません。 HostProtectionAttribute を使用すると、ホストの安定性を保護するのに役立つプログラミング モデルが適用されます。

ホスト保護属性

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

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

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

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

SQL Serverは、ExternalProcessMgmtExternalThreadingMayLeakOnAbortSecurityInfrastructureSelfAffectingProcessMgmntSelfAffectingThreadingSharedStateSynchronization、または UI の値を持つ System.Security.Permissions.HostProtectionResource 列挙体を指定する HostProtectionAttribute を持つ型またはメンバーの使用を禁止します。. これにより、共有状態を有効にし、同期を実行し、終了時にリソースを漏洩する可能性があり、SQL Server プロセスの整合性に影響を与えるメンバーの呼び出しをアセンブリに禁止します。

禁止されている型とメンバー

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

注意

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

このセクションの内容

Microsoft.VisualBasic.dll の許可されない型およびメンバー
HPA の値が許可されない Microsoft.VisualBasic.dll の型およびメンバーの一覧を示します。

mscorlib.dll の許可されない型およびメンバー
HPA の値が許可されない mscorlib.dll の型およびメンバーの一覧を示します。

System.dll の許可されない型およびメンバー
HPA の値が許可されない System.dll の型およびメンバーの一覧を示します。

System.Data.dll の許可されない型およびメンバー
HPA の値が許可されない System.Data.dll の型およびメンバーの一覧を示します。

System.Core.dll の許可されない型およびメンバー
HPA の値が許可されない System.Core.dll の型およびメンバーの一覧を示します。

参照

CLR 統合のコード アクセス セキュリティ
CLR 統合プログラミング モデルの制限事項
アセンブリの作成