CLR の厳密なセキュリティ

適用対象:SQL Server

SQL Server で SAFEEXTERNAL ACCESSUNSAFE のアクセス許可の解釈を制御します。

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

警告

CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 PERMISSION_SET = SAFE で作成された CLR アセンブリが、外部のシステム リソースにアクセスし、非管理対象コードを呼び出し、sysadmin 特権を取得できる場合があります。 SQL Server 2017 (14.x) 以降、CLR アセンブリのセキュリティを強化するために clr strict security という sp_configure オプションが導入されました。 clr strict security は既定で有効になり、SAFE および EXTERNAL_ACCESS アセンブリを UNSAFE とマークされている場合と同様に扱います。 clr strict security オプションは、旧バージョンとの互換性のために無効にできますが、これは推奨されません。 Microsoft では、master データベースで UNSAFE ASSEMBLY アクセス許可が付与されている対応するログインを含む証明書または非対称キーで、すべてのアセンブリに署名することをお勧めします。 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 アクセス許可のあるログインによって所有されている。 このオプションは推奨されません。

参照

サーバー構成オプション (SQL Server)
sp_configure (Transact-SQL)
clr enabled サーバー構成オプション