Share via


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

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

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

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

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

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

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

ホスト保護属性

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

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

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

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

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

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

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

Note

各トピックに含まれる一覧は、サポートされているアセンブリから作成されたものです。 詳細については、「サポートされている.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 統合プログラミング モデルの制限事項
アセンブリの作成