サーバー構成: clr strict security

適用対象: SQL Server

SQL Server で SAFEEXTERNAL_ACCESSUNSAFE のアクセス許可の解釈を制御します。 アクセス許可の詳細については、「アセンブリのデザイン」をご覧ください。

Value 説明
0 Disabled。 これは旧バージョンとの互換性のために用意されています。 この値を 0 に設定することはお勧めしません。
1 有効にします。 データベース エンジンがアセンブリの PERMISSION_SET の情報を無視し、常に UNSAFE と解釈するようになります。 SQL Server 2017 (14.x) 以降のバージョンでは、1 が既定値です。

コード アクセス セキュリティはサポートされていません

CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 PERMISSION_SET = SAFE で作成された CLR アセンブリが、外部のシステム リソースにアクセスし、非管理対象コードを呼び出し、sysadmin 特権を取得できる場合があります。 SQL Server 2017 (14.x) 以降のバージョンでは、clr strict securitySAFE アセンブリと EXTERNAL_ACCESS アセンブリが UNSAFE としてマークされているかのように扱います。

すべてのアセンブリに対して、UNSAFE ASSEMBLY データベース内で master 権限が付与された対応するログインを持つ認定資格証または非対称キーで署名することをお勧めします。 SQL Server 管理者は、データベース エンジンが信頼するアセンブリのリストにアセンブリを追加することもできます。 詳細については、「sys.sp_add_trusted_assembly」を参照してください。

解説

有効にすると、CREATE ASSEMBLY および ALTER ASSEMBLY のステートメントの PERMISSION_SET オプションが実行時に無視されますが、PERMISSION_SET オプションはメタデータに保持されます。 このオプションを無視すると、既存のコード ステートメントの改変が最小限に抑えられます。

CLR strict securityadvanced option です。

厳密なセキュリティを有効にした場合、未署名のアセンブリの読み込みは失敗します。 各アセンブリを変更または削除して再作成して、サーバーでの UNSAFE ASSEMBLY アクセス許可のある対応するログインを含む証明書または非対称キーで署名されるようにする必要があります。

アクセス許可

このオプションを変更する

CONTROL SERVER アクセス許可、または sysadmin 固定サーバー ロールのメンバーシップが必要です。

CLR アセンブリを作成する

CLR strict security が有効になっている場合に CLR アセンブリを作成するには、次のアクセス許可が必要です。

  • ユーザーには CREATE ASSEMBLY アクセス許可が必要です

  • さらに、次の条件のいずれかを満たす必要があります。

    • サーバーでの UNSAFE ASSEMBLY アクセス許可のある対応するログインを含む証明書または非対称キーでアセンブリが署名されている。 アセンブリへの署名は推奨されます。

    • データベースに ON に設定された TRUSTWORTHY プロパティが含まれ、そのデータベースがサーバーでの UNSAFE ASSEMBLY アクセス許可のあるログインによって所有されている。 "このオプションは推奨されません"。

次の例では、最初に clr strict security オプションの現在の設定を表示し、その後、オプションの値を 1 (有効) に設定します。

EXEC sp_configure 'clr strict security';
GO
EXEC sp_configure 'clr strict security' , '1';
RECONFIGURE;
GO