ホスト保護属性と CLR 統合プログラミング
適用対象:SQL Server
共通言語ランタイム (CLR) には、.NET Framework の一部であるマネージド アプリケーション プログラミング インターフェイス (API) に注釈を付けるメカニズムが用意されています。 これらの属性は、SQL Server などの CLR のホストにとって重要な場合があります。 このような HPA (ホスト保護属性) の例としては、次のものがあります。
SharedState
:API が共有状態 (静的クラス フィールドなど) を作成または管理する機能を公開するかどうかを示します。Synchronization
: API がスレッド間の同期を実行する機能を公開するかどうかを示します。ExternalProcessMgmt
: API がホスト プロセスを制御する方法を公開するかどうかを示します。
これらの属性を指定すると、SQL Server は、コード アクセス セキュリティ (CAS) によってホスト環境で許可されていない HPA の一覧を指定します。 CAS 要件は、SAFE
、EXTERNAL_ACCESS
、または UNSAFE
の 3 つの SQL Server アクセス許可セットのいずれかで指定されます。
CREATE ASSEMBLY
ステートメントを使用して、アセンブリがサーバーに登録されるときに、これら 3 つのセキュリティ レベルのいずれかが指定されます。
SAFE
または EXTERNAL_ACCESS
アクセス許可セット内で実行するコードでは、System.Security.Permissions.HostProtectionAttribute
属性が適用されている特定の型またはメンバーを回避する必要があります。 詳細については、「アセンブリ の作成
HostProtectionAttribute
は、ホストが許可しない可能性のある特定のコードコンストラクト (型またはメソッド) を識別するという点で、信頼性を向上させる方法ほどセキュリティアクセス許可ではありません。
HostProtectionAttribute
を使用すると、ホストの安定性を保護するのに役立つプログラミング モデルが適用されます。
ホスト保護属性
HPA は、ホスト プログラミング モデルに適合しない型またはメンバーを識別し、次の高まるレベルの信頼性の脅威を表します。
- 他の場合には特に害のない脅威
- サーバーで実行されるマネージ ユーザー コードの不安定化につながる脅威
- サーバー プロセス自体の不安定化につながる脅威
SQL Server では、ExternalProcessMgmt
、ExternalThreading
、MayLeakOnAbort
、SecurityInfrastructure
、SelfAffectingProcessMgmnt
、SelfAffectingThreading
、SharedState
、Synchronization
、または 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 統合 Code Access Security の
- CLR 統合プログラミング モデルの制限
- アセンブリ を作成する